почему я не могу использовать sudo cd в /root

Вы можете использовать

sudo kill "$!"

, чтобы завершить последнее запущенное фоновое задание.

Было бы еще проще, если бы вы начали работу с

sudo tcpdump... & pid="$!"

, затем

sudo kill "$pid"

убьет конкретную работу.

Сам процесс sudoработает от вашего имени, но он будет передавать все сигналы дочернему процессу(tcpdumpв данном случае ), что означает, что вы должны иметь соответствующие разрешения, чтобы сигнализировать ему, чтобы иметь возможность убей это.

Из руководства sudo(по системе Ubuntu):

If an I/O logging plugin is configured or if the security policy explicitly requests it, a new pseudo-terminal (“pty”) is created and a second sudo process is used to relay job control signals between the user's existing pty and the new pty the command is being run in. This extra process makes it possible to, for example, suspend and resume the command.

[...]

When the command is run as a child of the sudo process, sudo will relay signals it receives to the command. The SIGINT and SIGQUIT signals are only relayed when the command is being run in a new pty or when the signal was sent by a user process, not the kernel.

1
26.07.2020, 13:58
1 ответ

cd не является двоичным файлом, это встроенная оболочка, поэтому sudoсовершенно правильно говорит, что не может его найти. Кроме того, даже если у вас есть двоичный файл, который изменил ваш рабочий каталог, вы вернетесь туда, откуда начали, когда он вышел из sudo.

Если вы хотите сменить каталог на /rootи остаться там, вам нужна оболочка с правильным UID, поэтому ваши sudo suиcd /root(или даже простоcd)работают так, как вы ожидаете.

Между прочим, sudo suизбыточно. sudoуже может дать вам все необходимое с опциями -iили -s.

2
18.03.2021, 23:17

Теги

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