killing parent процесс не убивает ребенка

Без бита execute вы не сможете выполнить stat() для файлов в каталоге, что означает, что вы не сможете определить информацию inode этих файлов. Чтобы удалить файл, вы должны знать информацию, которую вернет stat().

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

$ ls -ld test
drw------- 2 alienth alienth 4096 Sep 18 23:45 test

$ stat test/file
stat: cannot stat ‘test/file’: Permission denied

$ strace -e newfstatat rm test/file
newfstatat(AT_FDCWD, "test/file", 0x1a3f368, AT_SYMLINK_NOFOLLOW) = -1 EACCES (Permission denied)
newfstatat(AT_FDCWD, "test/file", 0x7fff13d4f4f0, AT_SYMLINK_NOFOLLOW) = -1 EACCES (Permission denied)
rm: cannot remove ‘test/file’: Permission denied
+++ exited with 1 +++

Вы также можете продемонстрировать это с помощью простого ls -l. Информация о метаданных каталога может быть доступна для чтения и записи вашему пользователю, но без execute вы не сможете определить детали файла внутри каталога.

$ ls -l test
ls: cannot access test/file: Permission denied
total 0
-????????? ? ? ? ?            ? file
4
23.10.2018, 23:30
1 ответ

По умолчанию уничтожение родительского процесса не приводит к уничтожению дочерних процессов.

Я предлагаю вам поискать другие вопросы о том, как убить и родителя, и потомка, используя группу процессов (с отрицательным PID ).

Хороший ответ о том, как это сделать, можно найти в Потомки процессов

9
27.01.2020, 20:51

Теги

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