Как удалить команду «exit» из оболочки Linux

Две идеи:

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

  2. Попытайтесь заблокировать трафик rpc. Запустите rpcinfo | grep walld . Затем запустите rpcinfo -d <число из первого столбца> 1 . Это удалит walld из списка прослушивающих служб rpc на вашем хосте.

Пример:

$ rpcinfo | grep walld
100008  1         ticlts,udp                       walld
$ rpcinfo -d 100008 1
3
08.01.2019, 16:29
2 ответа

Не существует exitисполняемого файла, это одна из оболочек, (вы не говорите, какая оболочка, поэтому я предполагаюbash)встроенные команды. Таким образом, единственный способ полностью удалить его — это отредактировать исходный код оболочки и перекомпилировать его (, но посмотрите ответ @Kusalananda для лучшего подхода ).

В качестве альтернативы вы можете добавить что-то вроде этого в/etc/bash.bashrc:

alias exit='echo "You can check-out any time you like, but you can never leave!"'

Но это легко обойти любому, кто хоть немного знаком с *nix.

13
27.01.2020, 21:07

В дополнение к тому, что сказал тердон(в основном переопределение специальной встроенной -в exitкоманды с псевдонимом или функцией в этом отношении ), оболочка bashтакже позволяет вам для отключить встроенный -в командах.

Для отключения встроенного -exitв команде:

enable -n exit

Чтобы запретить его повторное включение, также отключите enableвстроенный -в команде:

enable -n enable

Обратите внимание, что, как и в случае с ответом terdon, это влияет только на текущий сеанс оболочки, если только он не реализован как часть системного -файла запуска оболочки.

Лично я почти исключительно использую Ctrl+D для выхода из интерактивных сеансов оболочки. Чтобы обойти это в bash, установите IGNOREEOFна некоторое большое целое число и заставьте его читать только -:

readonly IGNOREEOF=1000

Оболочка закрывается после нажатия Ctrl+D 1000 раз.

Вы все еще можете убить оболочку, например, с помощью. kill -s HUP "$$". Вы можете заставить оболочку игнорировать сигнал зависания с помощью

trap '' HUP

Нет никакого способа запретить пользователю принудительно завершать работу оболочки с помощью сигнала KILL, но вы можете удалить встроенную команду -в kill, как указано выше, и установить переопределяющую функцию оболочки или псевдоним, но им по-прежнему было бы легко пользоваться/bin/kill:

enable -n kill
kill () { echo 'kill: Operation not permitted' >&2; }

Вы также можете выйти из оболочки через

set -e
false

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


Проблема с

trap 'bash' EXIT

заключается в том, что он будет создавать новую оболочку при выходе из текущей оболочки. Однако эту новую оболочку легко закрыть, потому что в ней не настроена ловушка, если только вы не установите ловушку как часть файлов запуска оболочки.

Это также не мешает вам выйти из оболочки, потому что, строго говоря, прерывание не выполняется до тех пор, пока оболочка не выйдет . Это дает вам новую оболочку.

13
27.01.2020, 21:07

Теги

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