Я хотел бы отключить shutdown
команду для всех пользователей, даже root, при установке Ubuntu Server.
Причина, по которой я хочу это сделать, состоит в том, чтобы не иметь привычки выключать машину таким образом, поскольку я использую SSH на многих производственных машинах одновременно с этой, и я не хотите случайно отключить одну из других машин, введя команду в неправильном окне.
Сервер, на котором я хочу отключить отключение, запускается только внутри VirtualBox на моем рабочем столе Windows, и я использую его только для локального тестирования, поэтому это не проблема, если я не могу отключить его из командной строки.
Я уже немного смягчил проблему, убедившись, что у меня есть другой пароль в образе VirtualBox, но, очевидно, если я нахожусь в sudo
«окне» на одном из рабочих компьютеров, я все равно мог бы случайно отключить его.
Мои вопросы:
- Как отключить команду выключения?
- Если я отключу команду выключения, есть ли какие-либо последствия, о которых мне следует знать? В частности, будет ли отключена поддержка отключения ACPI, что эквивалентно нажатию кнопки питания на физической машине? Может ли это повлиять на другие общие приложения?
Для информации я просто использую этот образ VirtualBox для тестирования сценариев оболочки, запуска Tomcat и Java, и тому подобное.
Ответы:
Если вы обычно запускаете команду как
sudo shutdown
, а не какsudo /sbin/shutdown
, то вы можете просто настроить псевдоним глобальной оболочки для «выключения», чтобы вместо этого просто выводить сообщение на терминал. Настоящий исполняемый файл все еще будет там для всех других целей.источник
alias shutdown=sl
) не повлияет на аргументы sudo. В zsh вы можете определить псевдонимы, которые совпадают с аргументами, но я думаю, что не в bash. Вы можете использовать псевдонимsudo
сценария оболочки, который отказывается что-либо делать, если первый аргумент естьshutdown
.Гораздо лучший подход к этой проблеме заключается в установке молли-сторожевую программу на коробках вы не хотите выключать, а не пытаться тренировать себя , чтобы никогда не запускать выключение.
Типичная конфигурация заключается в том, что вам нужно ввести имя хоста машины, чтобы подтвердить, что вы действительно правы.
Можно добавить новые сценарии
/etc/molly-guard/run.d
(как описано на странице руководства , файлы сценариев должны соответствовать именам, ожидаемымrun-parts
.Если вы действительно хотите отключить
shutdown
(и это такая странная идея), просто сделайтезатем, если вам нужно его использовать, верните его на 0755.
источник
Чтобы отключить команду shutdown, просто сделайте двоичный файл неисполнимым, т. Е.
sudo chmod a-x /sbin/shutdown
Также я не думаю, что это повлияет на любой другой метод shutdown, потому что, как говорит запись man для shutdownпоэтому любая другая команда / скрипт может сделать это даже после отключения команды выключения, например, я все еще могу выключить свою систему, используя выключение из меню GNOME. Также вы можете перезагрузить компьютер из командной строки, используя команду перезагрузки
источник
Команда
shutdown
находится в/sbin/shutdown
. Вы можете отключить его, выполнив это:Но : это означает, что почти ни один из обычных методов выключения системы больше не будет работать. Выключение gnome на моей тестовой машине для этого ответа заставляет его просто выйти из системы и вернуть вас в GDM.
Если вы хотите завершить свою систему впоследствии, вы должны сделать
«Отключение» выключения повлияет на каждое приложение, которое использует команду для чего-либо. Поскольку
init 0
это не рекомендуемый способ выключения системы, все программы, которые должны выключить систему, используютshutdown
ее, что больше не будет работать.Приложения также могут выдавать исключения из-за отсутствующего файла или из-за того , что файл не является исполняемым , что может привести к его аварийному завершению, даже если завершение работы не требуется. Это крайний случай, который вы можете обойти, переместив на его место какой-нибудь двоичный идеально исполняемый файл (не сценарий оболочки - он не будет работать). Например:
Это после того, как вы благополучно удалили оригинал.
Теперь все это довольно странно, и я рекомендую против этого по причинам, изложенным в комментарии Жоау Пинту. Но я не остановлю тебя от этого. :-)
Не только сделайте резервную копию / sbin / shutdown, но также имейте план восстановления на случай, если это вызовет какие-либо проблемы. Не делайте этого на сервере, к которому вы, например, не можете добраться. И заранее протестируйте свой план восстановления, предполагая, что система вообще не загружается (она будет загружаться, конечно, - я проверял это - но, пожалуйста, будьте в безопасности).
источник
Я думаю, что должно быть другое решение: серверы должны иметь политику ssh для отключения выключения и init 0 через ssh, или на консоли должно быть отображено специальное диалоговое окно, как в Windows, для ввода «почему» и специального «пароля выключения» , Для этого кнопка питания должна быть защищена паролем при использовании Сервера.
На данный момент мы используем «физический ключ переключения = 4 евро» вместо кнопки.
источник
Я хочу отключить
shutdown
команду.это потому, что если кто-то пытается принудительно использовать эту команду, то он также не может
Теперь никто не сможет использовать команду выключения.
это покажет сообщение, команда не найдена, установите это.
Добавьте строку в последний из bash.bashrc
если вы хотите его вернуть (включено). просто скопируйте его обратно
источник