J'ai besoin d'aide pour résoudre un problème de devoirs afin de modifier les autorisations d'un fichier. Il veut que ce soit -rwxr-xr-x
? Vous ne savez pas comment définir les autorisations utilisateur. Je vous remercie.
Permet d'analyser vos devoirs: -rwxr-xr-x
, divisez-les en trois parties -rwx|r-x|r-x
:
rwx
name__: lire, écrire et exécuter pour l'utilisateur ou le propriétairer-x
: read, no write et execute pour les membres du grouper-x
: idem que dans 2
mais cette fois pour toutes les autres personnes aka others
name__.Non, vous devrez exécuter la commande en utilisant le programme de permission de modification chmod
comme suit:
chmod 755 filename
A expliqué:
changer l'autorisation à:
- user: 7 => r(4), w(2), x(1)
- group: 5 => r(4), -, x(1)
- others: r(4), -, x(1)
Vous devez maintenant posséder ce fichier ou ce dossier pour pouvoir le faire ou faire partie du groupe Sudo.
Il existe également une version plus "bavarde" pour définir les autorisations:
chmod u=rwx,g=rx,o=rx filename
Ça signifie:
u=
) rwx
des autorisations, etg=
) rx
des autorisations, eto=
) rx
des autorisations.Vous pouvez omettre les parties que vous ne souhaitez pas modifier, par exemple:
chmod u=rwx filename
définira les autorisations de l'utilisateur et laissera les autres tels qu'ils sont.
Vous pouvez même "ajouter" ou "soustraire" des autorisations:
chmod g-x filename
supprimera l'autorisation x
du groupe, et
chmod o+w filename
ajoutera l'autorisation d'écriture pour les autres.
Pour définir SUID, SGID et sticky bit, utilisez les autorisations s
et t
:
chmod u+s filename
- définit le SUIDchmod g+s filename
- définit le SGIDchmod a+t filename
- définit le bit collant (a
signifie "tous", c'est-à-dire u
and g
et o
)Préambule obligatoire
La modification des autorisations de fichiers et de répertoires importants de votre système peut [briser les choses] . Si vous pensez qu'il est gênant de devoir réinstaller votre système ou de récupérer les données d'une session en direct, assurez-vous de tester les autorisations et la propriété en toute sécurité. Pendant que vous vous familiarisez avec le système de fichiers et les commandes de base, vous devriez éviter exécutant chmod
et chown
avec Sudo
ou dans un shell racine . De cette façon, une erreur de permission vous indiquera que vous faites quelque chose de risqué et vous devriez vérifier la commande à nouveau.
Nous changeons les permissions sur les fichiers avec chmod
. Cette commande a un indicateur récursif -R
. Cet indicateur est souvent utilisé inutilement, et il est rarement utile, car nous ne voulons généralement pas que les répertoires aient les mêmes autorisations que les fichiers qu’ils contiennent. Les répertoires ont besoin d’une autorisation d’exécution, ils ne sont donc pas utiles sans elle. Les fichiers n’ont besoin d’autorisation d’exécution que s'il s'agit de programmes. Sans l'indicateur -R
, chmod
ne peut causer que des dommages limités et réparables, mais avec -R
, vous pouvez créer un fouillis terrible de votre système en une seule commande. Si vous utilisez -R
, déterminez si vous en avez vraiment besoin et vérifiez le chemin du fichier pour y rechercher des fautes de frappe.
Le mode qui vous a été demandé de donner le fichier est un mode commun
-rwxr-xr-x
Le tiret principal indique qu'il s'agit d'un fichier normal. Les bits x
à trois endroits indiquent qu'il doit être exécutable par n'importe quel utilisateur. Donc, ce mode est approprié pour les programmes que tout le monde peut exécuter. La plupart des programmes de votre système ont ce mode, comme vous pouvez le constater en examinant les fichiers de /usr/bin
, /bin
et ainsi de suite (j'explique comment examiner les autorisations ultérieurement dans cette réponse). Il est important pour la sécurité que seul le propriétaire, root, puisse écrire (modifier) ces fichiers, afin que les programmes que vous exécutez ne puissent pas être modifiés accidentellement (ou autrement) par des utilisateurs sans privilèges root.
Comme indiqué dans Réponse de George Udosen , les bits d'autorisation sont définis séparément pour l'utilisateur (le propriétaire du fichier), le groupe et les autres. Ceci est expliqué, par exemple, dans notre tag wiki pour chmod
et dans de nombreux autres endroits sur Internet, et même sur votre système; vous pouvez en savoir plus en exécutant man chmod
. Il vous a été demandé de rendre le fichier lisible, inscriptible et exécutable par son propriétaire, et lisible et inscriptible pour son groupe et d’autres. Vous pouvez voir le propriétaire et le groupe d'un fichier en exécutant ls -ld file
(le -d
n'est nécessaire que s'il s'agit d'un répertoire; sans cet indicateur, ls
affiche le contenu du répertoire plutôt que le répertoire lui-même) ou si vous voulez des informations moins pertinentes, utilisez stat
:
stat -c '%U %G' file
-c
signifie contrôler la sortie. %U
= propriétaire du fichier, %G
= groupe. file
doit être remplacé par le chemin du fichier dont vous souhaitez examiner les métadonnées. Si c'est dans le répertoire courant, son nom est suffisant, mais vous pouvez donner un chemin pour les fichiers ailleurs:
$ stat -c '%U %G' /var/log/syslog
syslog adm
La commande stat
peut également afficher les autorisations de fichiers sous forme octale et "lisible par l'homme":
stat -c '%n %a %A' *
(J'ai utilisé %n
pour afficher les noms de fichiers et *
pour exécuter stat
sur chaque fichier non caché du répertoire en cours.)
Ceci fournit une référence très utile si vous oubliez jamais quels bits de permission un nombre octal particulier représente pour chmod
, bien que la réponse de vidarlo constitue un bon moyen de les rappeler.
Je recommande fortement d'examiner les autorisations de tous les fichiers qui vous intéressent avant de les modifier, car vous ne pouvez "réinitialiser" le mode d'origine que si vous le configurez manuellement.
D'autres réponses ont expliqué comment définir le mode de fichier dont vous avez besoin en notation octale. chmod
accepte le mode de fichier en notation symbolique aussi bien qu'en octal, ce qui est utile lorsque vous souhaitez uniquement modifier un bit d'autorisation (une lettre dans cette chaîne rwxr-xr-x
). Réponse de Perl Duck explique comment faire pour définir le mode souhaité.
Lorsque je crée un script et que je veux le rendre exécutable, ce qui est la raison principale pour laquelle j'utilise chmod
, j'utilise la notation symbolique pour m'autoriser à exécuter et ne pas apporter d'autres modifications, avec cette commande:
chmod u+x file
Si le script doit être exécutable par tous les utilisateurs, je l’exécuterais sans u
:
chmod +x file
Cela serait probablement suffisant dans votre situation actuelle, car les fichiers sont souvent créés par défaut avec des autorisations permettant au propriétaire de les lire et de les écrire et ne sont lisibles que par le groupe, mais il est également probable qu'ils aient été créés avec le droit d'écriture du groupe. Cela dépend du paramètre umask
qu'un utilisateur a lorsqu'il crée le fichier. Créons un fichier et regardons-le!
$ touch somefile
$ stat -c '%a %A' somefile
664 -rw-rw-r--
D'ACCORD. Donc, pour obtenir le mode 755
, je dois supprimer le bit w
de la section g
et ajouter le bit x
partout.
En notation symbolique, je peux le faire de cette façon:
$ chmod +x,g-w somefile
$ stat -c '%a %A' somefile
755 -rwxr-xr-x
Un autre moyen d'écrire +x
dans chmod
est a+x
. a
signifie tout, ce qui est supposé si aucune lettre n'est donnée. Important à noter: u
signifie utilisateur, ce qui signifie le propriétaire, alors que o
représente les autres ( et non propriétaire).
Vous pouvez également définir tous les bits pour a
u
g
ou o
avec le signe =
. Voici moi jouer avec des paramètres d'autorisation inutiles:
$ chmod =x somefile
$ stat -c '%a %A' somefile
111 ---x--x--x
$ chmod u=r,g=rwx,o= somefile
$ stat -c '%a %A' somefile
470 -r--rwx---
Vous pouvez utiliser les notations octale et symbolique pour ajouter des bits spéciaux tels que setuid (cela permet d'exécuter un programme en tant que propriétaire, donc est dangereux) et setgid (les fichiers créés dans un répertoire avec setgid hériteront ensuite de la propriété du groupe du répertoire, qui est utile car il vous permet de contrôler les autorisations d’un groupe d’utilisateurs situés dans un emplacement donné du système de fichiers sans avoir à le manipuler en permanence).
Certaines personnes aiment la notation octale, d'autres symbolique. Ce dernier est un peu plus souple et peut-être un peu plus intuitif pour certains. Je recommande de tester et d'apprendre les deux (en toute sécurité!) Afin que vous puissiez comprendre ce que toute commande chmod
fera quand vous le verrez et résoudre tout problème de devoirs à ce sujet avec brio :)
chmod
. N'utilisez pas Sudo chmod
sauf si vous savez ce que vous faites. Réfléchissez bien avant d'utiliser l'indicateur -R
.stat
est votre amiJe trouve plus facile de penser en autorisations octales:
Cela se voit facilement en train de le configurer au niveau des bits:
r w x
0 0 1 #Execute = 1
0 1 0 #Write = 2
1 0 0 #Read = 4
1 0 1 #Read + Execute = 5
1 1 0 #Read + Write = 6
1 1 1 #All permissions = 7
Ceux-ci peuvent être ajoutés. Lire et exécuter est 4 + 1 = 5. Lisez, exécutez et écrivez est 7 (4 + 2 + 1), écrivez seulement est 2, et ainsi de suite.
Les autorisations sont composées de trois chiffres: utilisateur, groupe et autre. rwx pour l'utilisateur devient 7 (autorisations complètes) pour le premier chiffre. r-x pour le groupe devient 1 + 4 = 5, et r-x pour les autres devient 5. Ainsi, les autorisations sont égales à 755.
La syntaxe de la commande chmod
est la suivante:
chmod [options] {permissions} file-name
Avant de définir les autorisations de fichier/dossier, vous devez vous trouver dans le Parent Directory
du fichier/dossier.
r(read) - 4
w(write) - 2
x(execute) - 1
Maintenant, analysons l'ensemble de votre travail: (- rwxr-xr-x)
Divisez-le en quatre parties comme suit:
1. - File Type
2. rwx User
. r-x Group
4. r-x Others
Ainsi, enfin pour donner une permision à votre fichier:
2. rwx: 4 + 2 + 1 = 7
. r-x: 4 + 0 + 1 = 5
4. r-x: 4 + 0 + 1 = 5
Par conséquent, la commande est
chmod 755 *filename*