Мое грязное решение - это chmod +s /sbin/shutdown
. Это работает, но это, вероятно, не хорошая практика и небезопасно. Более того, после некоторых обновлений системы бит suid сбрасывается. Каков будет правильный способ сделать это?
3 ответа
Все пользователи? Или выбранное их подмножество? Будут ли они использовать компьютер локально или также удаленно (например, через ssh).
В случае нескольких пользователей, которые также работают удаленно, sudo будет работать нормально. Смотрите эту ссылку для деталей.
Если они входят в систему локально и через графический интерфейс, тогда есть лучшие варианты. Например, захватить три пальца салюта с помощью init и дать этому запустить 1 минутную задержку выключения. Прошло много лет с тех пор, как я это настроил, поэтому я пропустил детали этого. (Я использовал это когда Slackware 3 был современным)
Если ваше shutdown
принимает ключ -a
(проверьте с помощью shutdown --help
), вы можете сделать следующее:
Добавьте пользователей, которые должны иметь возможность завершить работу системы, в
/etc/shutdown.allow
.Пример:
userA userB
Выключите систему с помощью ключа
-a
.Пример:
shutdown -a -h now
Источник: справочные страницы UNIX: shutdown (8)
Я использую SL 6.4. Он имеет пользовательскую версию poweroff, halt, reboot, предоставляемую пакетом usermode. Я могу выключиться, перезагрузиться как обычный пользователь (также из командной строки)
$ which {poweroff,reboot,halt}
/usr/bin/poweroff
/usr/bin/reboot
/usr/bin/halt
rpm -qf $(which poweroff reboot halt)
usermode-1.102-3.el6.x86_64
usermode-1.102-3.el6.x86_64
usermode-1.102-3.el6.x86_64
Как корень
# which {poweroff,reboot,halt}
/sbin/poweroff
/sbin/reboot
/sbin/halt
# rpm -qf $(which poweroff reboot halt)
upstart-0.6.5-12.el6.x86_64
upstart-0.6.5-12.el6.x86_64
upstart-0.6.5-12.el6.x86_64