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