Comment effacer l'autorisation «s» sur un répertoire sous Linux?

24

J'ai un répertoire qui s'affiche avec le masque d'autorisation drwsrwsr-x. Lorsque j'essaie de réinitialiser les autorisations sur 755le S reste toujours.

Qu'est-ce que le "s" et pourquoi ne puis-je pas modifier les autorisations à 775 ( drwxrwxr-x)?

Matt Elhotiby
la source

Réponses:

25

Les s que vous voyez dans la position "exécuter" dans la colonne utilisateur et groupe sont les bits SetUID (Set User ID on Execution) et SetGID (Set Group ID on execution).

Les autorisations de fichier Unix sont en fait un nombre octal à 4 chiffres SUGO

  • S contrôle les bits SetUID (4), SetGID (2) et "Sticky" (1)
  • U contrôle les bits de lecture (4) / d'écriture (2) / d'exécution (1) pour le propriétaire du fichier
  • G contrôle les bits de lecture / écriture / exécution pour le groupe du fichier
  • O contrôle les bits de lecture / écriture / exécution pour tout le monde.

Vous pouvez supprimer les bits setuid de votre répertoire avec chmod ug-s directory, ouchmod 0755 directory

Pour plus d'informations, consultez la page de manuel de chmodet cette page Wikipedia sur le bit SetUID .

Hrvoje Špoljar
la source
C'est "sgid" (pas de "u").
pause jusqu'à nouvel ordre.
"qu'est-ce que le drwsrwsrwx?" <- vérifier à nouveau
Hrvoje Špoljar
6
chmod 0755n'efface pas le bit setuid, du moins pas sous Linux. Je teste actuellement sur d'autres systèmes.
FUZxxl
1
POSIX dit que sa mise en œuvre est définie pour les types de fichiers autres que les fichiers normaux, que ce soit chmodavec un mode octamal efface les bits setuid, setgid et vtx.
FUZxxl
2
Pour effacer le bit setuid d'un répertoire sous Linux, utilisez chmod 00755; voir unix.stackexchange.com/q/393531/46851
Roger Lipscombe
23

setuid et setgid

setuid et setgid (abréviation de set user ID on execution et set group ID upon execution, respectivement) sont des indicateurs de droits d'accès Unix qui permettent aux utilisateurs d'exécuter un exécutable avec les autorisations du propriétaire ou du groupe de l'exécutable. Ils sont souvent utilisés pour permettre aux utilisateurs d'un système informatique d'exécuter des programmes avec des privilèges temporairement élevés afin d'effectuer une tâche spécifique. Bien que les privilèges d'ID utilisateur ou d'ID de groupe fournis ne soient pas toujours élevés, ils sont au minimum spécifiques.

Pour supprimer numériquement les bits setuid et setgid, vous devez préfixer le motif binaire avec un 0(par exemple: 0775devient 00775).

Exécutez pour supprimer setuid et setgid:

chmod 00775 path

ou

chmod a-st path
ooshro
la source
C'est dans le répertoire pas le fichier
Hrvoje Špoljar
1
un répertoire est également un fichier dans un système de fichiers unix, ce que dit ooshro est complètement correct
lynxman
oui, c'est tout un fichier, mais la description ne correspond pas car vous n'exécutez pas quelque chose qui ressemble à drwxrwxr-x: |
Hrvoje Špoljar
Sous Unix, l'inode est la chose qui obtient les autorisations.
chris
2
GNU chmod n'efface pas les octets setuid et setgid des répertoires lorsque vous l'exécutez en mode octamal. POSIX autorise ce comportement.
FUZxxl
2

Ajout à la réponse d'Ooshro ...

Si vous utilisez des autorisations suid ou sgid sur un répertoire, tous les fichiers créés dans ce répertoire auront le même propriétaire (si suid) ou groupe (sgid) que le répertoire en question.

Je l'utilise pour ma part Samba à la maison. Le répertoire de base appartient à l'utilisateur nobody et au groupe olympia, et les autorisations sont 2770. Vous devez donc être dans le groupe olympia pour lire ou écrire quoi que ce soit en dessous de ce répertoire, et il s'assurera qu'olympia est le groupe propriétaire de tout ce qui se trouve en dessous. . J'ai également Samba configuré pour utiliser un masque de protection de 2770 et un masque de fichier de 660 pour garder les autorisations correctes tout au long de l'arborescence.

baumgart
la source