À 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?

Mas Bagol
la source
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)
Thomas Ward
la source
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.

heemayl
la source