Pourquoi utiliser un peu collant?

18

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

Est-ce à dire 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?

JohnMerlino
la source

Réponses:

22

Le bit collant est utile sur les répertoires accessibles en écriture, tels que /tmp. Dans ces répertoires, n'importe qui peut créer un fichier, le répertoire doit donc être accessible en écriture. Mais cela signifierait que n'importe qui pourrait également supprimer un fichier, même s'il ne lui appartenait 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 des 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 par root ou créés lorsque le répertoire a des autorisations plus ouvertes), c'est toujours le propriétaire du répertoire qui dispose des autorisations pour les supprimer, pas le propriétaire du fichier.

Dans un répertoire avec des 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 à la rwxrwx--Tplace (le capital Test comme t, mais tsignifie que le xbit est défini et Tsignifie que le xbit est clair), alors tout membre du groupe peut créer un fichier, et les membres du groupe peuvent supprimer des fichiers mais uniquement leurs propres fichiers .

Vous pouvez utiliser la commande suivante pour voir quels répertoires contiennent le bit collant 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 comme ceux /tmpqui sont ouverts à tout le monde, et certains répertoires comme ceux /var/spool/cron/crontabsqui sont réservés à un programme système qui s'exécute comme son propre groupe ( setgid ), où le bit collant garantit que le programme ne peut supprimer des fichiers qu'au nom de la utilisateur qui les possède (ce qui garantit que le programme ne peut créer des fichiers qu'au nom de l'utilisateur qui les possède, c'est que le programme s'exécute en tant qu'utilisateur, pas en tant que root, donc ne peut pas créer de fichiers appartenant à d'autres utilisateurs).

Gilles 'SO- arrête d'être méchant'
la source