Быстрая гипотеза, где это может быть полезно: Вы хотите, чтобы пользователь мог копировать (читать) любой файл в системе, но не изменять (записывать) их. У вас может быть программа, имеющая CAP_DAC_OVERRIDE
(чтобы игнорировать проверку разрешений), которая работает как cp
. Но чтобы убедиться, что он не позволяет пользователю резервного копирования перезаписывать произвольные файлы, он может удалить CAP_DAC_OVERRIDE
из эффективного набора перед открытием каждого выходного файла.
Что касается вашего бонусного вопроса: Ничто не мешает вернуть их в эффективное состояние, если можно запустить произвольный код. Но это может быть полезно в случае другой компрометации (например, вы убеждаете программу попытаться перезаписать произвольный файл через атаку symlink).
Предполагая, что вы используете bash: попробуйте нажать ^ Z (т.е. Ctrl-Z), чтобы остановить процесс
, переместите его в фоновый режим и получите еще одно приглашение bash. Введите
fg; не
, первый продолжает остановленный процесс и возвращается, когда
он завершается.
В качестве альтернативы, выясните идентификатор процесса программы, которую вы хотите ждать, предположим, что это 2342. В новом решении введите
until kill -0 2342; do sleep 1; done; not
, это будет проверяться каждую секунду.