Я единственный пользователь на этом компьютере с Linux. Я попробовал следующую процедуру для защиты файлов, но она не работает, как я ожидал. Может кто-нибудь объяснить, почему?
$ 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
«Файл» доступен только для чтения и принадлежит пользователю root. Почему мой обычный пользователь смог удалить его?
Это странное поведение разрешений linux, но разрешения на удаление файлов предоставляются разрешениями для каталога, а не для файла.
Попробуйте это:
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
Разрешение на запись. В обычном файле это означает, что вы можете изменить файл, или записать новые данные в файл. В случае каталога разрешение на запись означает, что вы можете добавлять, удалять и переименовывать файлы в каталоге. Это означает, что если файл имеет бит разрешения на запись, вам разрешено изменять содержимое файла, , но вы можете переименовывать или удалять файл только в том случае, если разрешения каталога файла позволяют вам это делать [1112 ].
blockquote>См. http://www.tuxfiles.org/linuxhelp/filepermissions.html
Чтобы разрешить (RW) доступ к файлу, но предотвратить удаление или переименование, установите липкий бит в каталоге.
# 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
Если бит привязки установлен для каталога, только владелец этого каталога или владелец файла может удалить или переименовать файл в этом каталоге.
BLOCKQUOTE>