web-dev-qa-db-fra.com

Pourquoi utiliser un peu collant?

"Le bit collant ne s'applique qu'aux répertoires. Il est généralement utilisé sur des répertoires accessibles en écriture. Dans un répertoire sur lequel le sticky bit est appliqué, il est interdit aux utilisateurs de supprimer ou de renommer les fichiers qu'ils ne possèdent pas personnellement."

Est-ce que cela signifie que si je lance ce qui suit:

// only allow other users to read files in /directory
Sudo chmod o-w -R /directory
Sudo chmod o-x -R /directory
Sudo chmod o+r -R /directory

les utilisateurs peuvent toujours supprimer ou renommer tout fichier qui ne leur appartient pas?

17
JohnMerlino

Le bit collant est utile sur les répertoires accessibles en écriture, tels que /tmp. Dans ces répertoires, tout le monde peut créer un fichier. Le répertoire doit donc être accessible en écriture. Mais cela signifierait que n'importe qui peut supprimer un fichier, même s'il ne leur appartient pas, car la suppression d'un fichier est contrôlée par l'autorisation d'écriture sur le répertoire. Lorsqu'un répertoire contient le bit collant, seul le propriétaire d'un fichier est autorisé à le supprimer.

Dans un répertoire avec les autorisations rwx------ ou rwxr-xr-x, seul le propriétaire du répertoire peut créer ou supprimer un fichier. S'il existe des fichiers appartenant à un autre utilisateur (déplacés à cet emplacement par la racine ou créés lorsque le répertoire dispose d'autorisations plus ouvertes), il reste le propriétaire du répertoire qui dispose des autorisations pour le supprimer, et non le propriétaire du fichier.

Dans un répertoire avec les autorisations rwxrwx---, tous les membres du groupe peuvent créer et supprimer des fichiers. Tout membre du groupe peut supprimer n'importe quel fichier même s'il appartient à un autre utilisateur. Si les autorisations sont plutôt rwxrwx--T (T majuscule est comme t, mais t signifie que le bit x est défini et que T signifie que le bit x est vide), tout membre du groupe peut créer un fichier. supprimer des fichiers mais seulement leurs propres fichiers.

Vous pouvez utiliser la commande suivante pour voir quels répertoires ont le sticky bit sur votre système:

find / /run /run/lock /run/shm -xdev -path /usr -Prune -o -perm -o+t -ls 2>/dev/null

Vous trouverez des répertoires tels que /tmp qui sont ouverts à tout le monde, et des répertoires tels que /var/spool/cron/crontabs qui sont réservés à un programme système qui s'exécute sous son propre groupe ( setgid ), où le sticky bit garantit que le programme peut uniquement supprimer des fichiers pour le compte de l'utilisateur qui en est propriétaire (ce qui garantit que le programme ne peut créer des fichiers que pour l'utilisateur qui en est propriétaire, c'est que le programme s'exécute en tant qu'utilisateur et non en tant qu'utilisateur root; il ne peut donc pas créer de fichiers appartenant à cet utilisateur. aux autres utilisateurs).

21
Gilles