У меня есть компьютер с Ubuntu, работающий как сервер Plex. Как сделать так, чтобы никто не мог выключить компьютер, а только разрешить пользователю перезагрузить машину? Я знаю, что это возможно в Windows, но мне просто интересно, возможно ли это в Ubuntu.
решение1
Наиболее эффективным способом сделать это будет замаскировать цель отключения питания следующим образом:
sudo systemctl mask poweroff.target
Теперь никто не сможет выключить машину, если не нажмет кнопку питания или не отключит ее от электросети.
Эта маска не влияет на перезагрузку.
Если в будущем вам потребуется остановить машину для проведения технического обслуживания или замены оборудования, вы можете unmask
:
sudo systemctl unmask poweroff.target
решение2
Если вам просто нужно предоставить возможность перезагрузки пользователям, не являющимся администраторами,Вы можете добавить запись о них в свой sudoers
файлreboot
(и/или systemctl reboot
, в зависимости от того, что вы хотите, чтобы они запустили). Тогда они смогут запустить sudo reboot
(и/или sudo systemctl reboot
).Этот ответ предполагает, что у них нет иного доступа кsudo
— т. е. что это обычные пользователи, не являющиеся администраторами и не входящие в группу wheel
.
Файл sudoers
находится по адресу /etc/sudoers
, но выне должнаредактировать его напрямую. Вместо этого, вы должны редактировать его только с помощью visudo
. Вам нужно быть root, чтобы редактировать его, поэтому вы запустите sudo visudo
. visudo
Команда проверит синтаксис ваших правок, и вы всегда должны использовать это, чтобы не нарушить вашу конфигурацию и не допуститьсамполучение root-доступа в будущем.
sudoers
Затем вы можете добавить в свой файл что-то вроде следующих строк :
username ALL=(root): /usr/sbin/reboot
username ALL=(root): /usr/bin/systemctl reboot
где username
— имя пользователя (или %groupname
группы), а где — фактические пути к командам в вашей системе (проверьте which
, например, с помощью which reboot
.).
Для получения более подробной информации посетитеman sudoers
,man sudo
, иman visudo
.