Как я могу ввести команду для выполнения, когда текущая команда завершится?

Быстрая гипотеза, где это может быть полезно: Вы хотите, чтобы пользователь мог копировать (читать) любой файл в системе, но не изменять (записывать) их. У вас может быть программа, имеющая CAP_DAC_OVERRIDE (чтобы игнорировать проверку разрешений), которая работает как cp. Но чтобы убедиться, что он не позволяет пользователю резервного копирования перезаписывать произвольные файлы, он может удалить CAP_DAC_OVERRIDE из эффективного набора перед открытием каждого выходного файла.

Что касается вашего бонусного вопроса: Ничто не мешает вернуть их в эффективное состояние, если можно запустить произвольный код. Но это может быть полезно в случае другой компрометации (например, вы убеждаете программу попытаться перезаписать произвольный файл через атаку symlink).

3
18.01.2016, 01:40
1 ответ

Предполагая, что вы используете bash: попробуйте нажать ^ Z (т.е. Ctrl-Z), чтобы остановить процесс , переместите его в фоновый режим и получите еще одно приглашение bash. Введите fg; не , первый продолжает остановленный процесс и возвращается, когда он завершается.

В качестве альтернативы, выясните идентификатор процесса программы, которую вы хотите ждать, предположим, что это 2342. В новом решении введите

until kill -0 2342; do sleep 1; done; not

, это будет проверяться каждую секунду.

3
27.01.2020, 21:18

Теги

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