Сомневаюсь в правах доступа к файлу между пользователем / группами

Я единственный пользователь на этом компьютере с 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. Почему мой обычный пользователь смог удалить его?

2
задан 08.05.2020, 01:04

1 ответ

Это странное поведение разрешений 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 ].

См. 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

Если бит привязки установлен для каталога, только владелец этого каталога или владелец файла может удалить или переименовать файл в этом каталоге.

0
ответ дан 08.05.2020, 01:05

Теги

Похожие вопросы