Предположим, что у Вас есть разрешение записать в файл, но не удалить его - О каких правах мы говорим?

Предположим, что у Вас есть разрешение записать в файл, но не удалить его.

О каких правах мы говорим?

Считать и записать права?

3
задан 21 May 2018 в 00:36

2 ответа

Для записи в существующий файл, Вы должны записать полномочия для того файла.

Для удаления файла, Вы должны записать разрешение для папки, которая содержит тот файл.

14
ответ дан 17 November 2019 в 09:08

Ответ Florian не совсем завершен в моей системе: Я должен и записать и выполнить разрешение на каталоге для удаления файла в нем.

Демонстрационная сессия:

Я выполняю хорошо закаленный Debian с ext4 файловой системой. Я создаю каталог с файлом в нем и затем изменяю каталог и полномочия файла, прежде чем я попытаюсь удалить файл.

Файловая система ext4:

testuser@www:~$ df -T .
Filesystem     Type 1K-blocks     Used Available Use% Mounted on
/dev/sda3      ext4 152326340 44429904 100196624  31% /

Давайте создадим каталог и файл в нем:

testuser@www:~$ mkdir d
testuser@www:~$ ls -ld d
drwxr-xr-x 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ echo kjhkjh > d/f
testuser@www:~$ ls -l d/f
-rw-r--r-- 1 testuser testuser 7 May 21 16:19 d/f

Ожидаемый: не Может изменить каталог файла без разрешения записи на нем:

testuser@www:~$ chmod 100 d && ls -ld d
d--x------ 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f
rm: cannot remove 'd/f': Permission denied

Неожиданный: не Может измениться каталог файла без выполняют разрешение на нем:

testuser@www:~$ chmod 200 d && ls -ld d
d-w------- 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f
rm: cannot remove 'd/f': Permission denied

Я должен и записать и выполнить разрешение на нем:

testuser@www:~$ chmod 300 d && ls -ld d
d-wx------ 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f

Как в стороне: Когда файл (но не каталог) защищается от записи rm просит разрешение перед удалением. В конце концов, удаление файла можно считать экстремальной формой записи в него. Нет никакого различия в потерянных данных между echo -n "" > d/f и rm d/f в общем падеже, что нет никакого другого hardlink в файл.

testuser@www:~$ !echo
echo kjhkjh > d/f
testuser@www:~$ chmod 700 d && ls -ld d
drwx------ 2 testuser testuser 4096 May 21 16:21 d
testuser@www:~$ chmod 000 d/f && ls -l d/f
---------- 1 testuser testuser 7 May 21 16:21 d/f
testuser@www:~$ rm d/f
rm: remove write-protected regular file 'd/f'? y
testuser@www:~$  ls -l d
total 0
testuser@www:~$
4
ответ дан 17 November 2019 в 09:08

Другие вопросы по тегам:

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