2 votes

Doute sur les droits d'accès aux fichiers entre utilisateurs/groupes

Je suis l'unique utilisateur de cette machine Linux. J'ai essayé la procédure suivante pour protéger les fichiers, mais cela ne fonctionne pas comme prévu. Quelqu'un pourrait-il m'expliquer pourquoi ?

$ touch file
$ sudo chown root:root file
$ sudo chmod a-w file
$ ls -l file
-r--r--r-- 1 root root 0 2012-02-29 01:06 file
$ rm file
rm: remove write-protected regular empty file `file'? yes
$ ls -l file
ls: cannot access file: No such file or directory

"File" est en lecture seule et appartient à root. Pourquoi mon utilisateur habituel a-t-il pu le supprimer ?

4voto

Panther Points 96601

C'est un comportement étrange des permissions linux, mais les permissions de supprimer des fichiers sont accordées par les permissions sur le répertoire, pas sur le fichier.

Essayez ça :

mkdir test
touch test/file

# Make the Directory ro
chmod a-w test

ls -l test/file
-rw-rw-r-- 1 bodhi bodhi 0 2012-02-28 21:13 test/file

rm test/file
rm: cannot remove `test/file': Permission denied

Ecrire la permission. Sur un fichier ordinaire, cela signifie que vous pouvez modifier le fichier, c'est-à-dire écrire de nouvelles données dans le fichier. Dans le cas d'un répertoire, l'autorisation d'écriture signifie que vous pouvez ajouter, supprimer et renommer des fichiers dans le répertoire. Cela signifie que si un fichier possède le bit de permission d'écriture, vous êtes autorisé à modifier le contenu du fichier, mais vous n'êtes autorisé à renommer ou à supprimer le fichier que si les autorisations du répertoire du fichier vous le permettent. .

Siehe http://www.tuxfiles.org/linuxhelp/filepermissions.html

Pour autoriser l'accès (RW) au fichier, mais empêcher la suppression ou le renommage, définissez le bit collant sur le répertoire.

# change "test" to your directory
chmod +t test
touch test/file
chmod a+w test/file

ls -l | grep test
drwxrwxrwt 4 bodhi bodhi  4096 2012-03-07 17:08 test

ls -l test | grep file
-rw-rw-rw- 1 bodhi bodhi   13 2012-03-07 17:10 file

# su to another user, "test"
test@ufbt:/home/bodhi$ echo 'It works !!!' >> test/file

test@ufbt:/home/bodhi$ cat test/file
It works !!!

test@ufbt:/home/bodhi$ rm test/file
rm: cannot remove `test/file': Operation not permitted

http://www.techcuriosity.com/resources/linux/advanced_file_permissions_in_linux.php

Si le bit collant est activé pour un répertoire, seul le propriétaire de ce répertoire ou le propriétaire d'un fichier peut supprimer ou renommer un fichier dans ce répertoire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X