À quoi sert le premier nombre dans un argument chmod à 4 chiffres (tel que `chmod 4555`)?


20

Lorsque j'installe un programme, il me recommande de le faire chmod 4555. D'accord, je connais les valeurs si j'utilise seulement trois nombres. Par exemple

chmod 555 test-file

va donner

-r-xr-xr-x

4 pour l'écriture, 2 pour la lecture et 1 pour l'exécution. Mais quand je fais ça:

chmod 4555 test-file

ça me donne

-r-sr-xr-x

Donc, xchangé en s. Qu'est-ce que ça veut dire?


1
également expliqué ici: askubuntu.com/a/550947/72216 ("about the s- flag")
Jacob Vlijm

@JacobVlijm a également expliqué plus en détail avec les autres bits "spéciaux" ci
Thomas Ward

Réponses:


29

Il y a en fait 4 jeux d'attributs avec lesquels vous pouvez travailler chmod.

Special, User/Owner, Group, Et Othersdans cet ordre, lors du travail avec les chmods quatre-numérique, avec ce nombre premier étant des bits particuliers qui peuvent être réglés.

chmod 4555 équivaut à ce qui suit:

  • Set UID bit - Exécute le fichier en tant que propriétaire quel que soit l'utilisateur qui l'exécute
  • Utilisateur / propriétaire: Read, Execute
  • Groupe: Read, Execute
  • Autres: Read, Execute

Le sdans votre chaîne «lisible par l'homme» pour les autorisations indique que le SetUIDbit (expliqué ci-dessous) est défini.


En effet, nous pouvons décomposer l' chmodargument des autorisations à quatre chiffres en descripteurs spécifiques comme suit, et faire le calcul pour déterminer ce que 4serait un dans la première section, un 5dans la section suivante, etc.

Gardez à l'esprit que ####c'est Special User/Owner Groupet Othersdans cet ordre.

Pour les Specialattributs (le premier nombre d'un chmodargument à quatre chiffres ):

  • Set UID- Exécuter le fichier en tant que propriétaire quel que soit l'utilisateur qui l'exécute (s'affiche comme sdans la chaîne d'autorisations lisible par l'homme pour la Usersection) = +4 ( --ssous User/Owner)
  • Set GID- Exécuter le fichier en tant que groupe quel que soit l'utilisateur / groupe qui l'exécute (s'affiche comme sdans la chaîne d'autorisations lisible par l'homme pour la Groupsection) = +2 ( --ssous Group)
  • Sticky Bit- EFFICACE SUR LES RÉPERTOIRES UNIQUEMENT - S'il est défini, seul l'utilisateur propriétaire du répertoire et rootpeut supprimer le répertoire, et uniquement le propriétaire du fichier ou rootpeut supprimer des fichiers à l'intérieur. (s'affiche comme tdans la chaîne d'autorisations lisible par l'homme pour la Otherssection) = +1 ( --tsous Others)

Pour User/Owner, Groupet les Othersattributs (les trois derniers chiffres d'un chmodargument à quatre chiffres ):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(pour les fichiers) ou 'Entrer dans / Lister les éléments' (pour les répertoires) = +1 ( --x)

7

C'est ce qu'on appelle le SETUIDbit. s'il est défini par chmod 4555 test-file(dans votre cas), le test-filepeut être exécuté par n'importe quel utilisateur comme si l'utilisateur était le propriétaire du fichier.

Lorsque le SETUIDbit est défini, l'ID utilisateur effectif ( EUID) de l'utilisateur qui n'a pas l'autorisation d'exécuter le fichier autrement (par des autorisations normales, par exemple 0744), prend l'EUID du propriétaire du fichier et peut exécuter le fichier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.