Предположим, вы устанавливаете среду рабочего стола, скажем, Ubuntu или Debian. Вы можете выключить систему, нажав кнопку где-нибудь в системном меню обычного пользователя. Вам не нужно переключаться на суперпользователя, чтобы выполнить это.
Однако в той же среде рабочего стола, если я открою терминал (скажем, gnome-терминал) как обычный пользователь, и введите
shutdown -h now
Мне бы подсказали
shutdown: need to be root
Единственный способ завершить работу - добавить команду с помощью sudo.
Кто-нибудь может объяснить, почему это так?
Спасибо KC
linux
permissions
K.Chen
источник
источник
Ответы:
Вопрос, заданный К.Ченом: зачем мне привилегии sudo, когда я делаю это из CLI, но мне не нужны такие привилегии, когда я делаю это из GUI.
Первая часть ответа заключается в том, что люди, которые разрабатывают среды рабочего стола, такие как Gnome, KDE, Xfce, Mate, Cinnamon, ... пытаются упростить работу своих пользователей, и они настраивают выключение и перезагрузку, не требуя учетных данных sudo. Это, между прочим, подразумевает, что должна быть последовательность завершения работы, которая не включает в себя завершение работы программы, которая требует привилегий sudo (никак не обойти это).
Я не знаю подробно, как это делает каждый DE, но я знаю, что есть мягкий способ выключить или перезапустить / выключить / перевести вашу систему в режим ожидания, который не требует привилегий root. Вы можете найти оригинальное сообщение в сообщении Arch Linux Forum . По сути, это сводится к выдаче этих команд:
стой
перезагрузка
DBus приостановить
спящий режим
Я предполагаю, что кнопки GUI примерно используют эти команды. Чтобы быть уверенным, нужно заглянуть в код, но я считаю, что это безопасная ставка.
источник
Причиной такого решения является не техническая (вы можете иметь непривилегированную
shutdown
команду или запросить пароль в графическом интерфейсе).При использовании рабочего стола пользователь должен иметь физический доступ к машине. Тогда лучше разрешить чистое отключение, чем позволить пользователю нажимать кнопку питания или отключать шнур питания.
При использовании оболочки пользователь может быть удаленным пользователем, и во избежание удаленного отключения запрашиваются дополнительные привилегии.
Это не правила, а просто значения по умолчанию, основанные на предположениях: вы можете иметь локального пользователя в оболочке и удаленного пользователя в среде рабочего стола. Если вы хотите выбрать поведение по умолчанию, вы можете настроить свою систему соответствующим образом.
источник
Sudo (superuser do) позволяет системному администратору предоставлять определенным пользователям (или группам пользователей) возможность выполнять некоторые (или все) команды от имени пользователя root при регистрации всех команд и аргументов. Команда shutdown -h или команда init 0 могут использоваться для выключения машины. Но для выполнения обеих команд требовалась привилегия root.
Команда, которая находится в / sbin, должна иметь привилегию root для ее выполнения. Для нахождения местоположения команды выключения,
Тип, который отключение в терминале.
Надеюсь, теперь ваши сомнения ясны :)
источник