Почему мы должны быть root в терминале для выключения и перезапуска?

Из документации сообщества Ubuntu: включение PAE Оба установщика CD и DVD Ubuntu 10.04 автоматически устанавливают ядро ​​с поддержкой PAE, если оно обнаруживает более 3 ГБ доступной памяти. В случае с liveCD требуется рабочее сетевое соединение, так как пакеты ядра с поддержкой PAE отсутствуют на компакт-диске.

Включение PAE - это функция, позволяющая x86 (32-разрядным) процессорам получать доступ к физическому адресному пространству (включая оперативное запоминающее устройство и устройства с отображением памяти) размером более 4 ГБ (теоретически до 64 ГБ).

1
задан 19 October 2013 в 23:02

5 ответов

Ubuntu - это дистрибутив системы GNU / Linux Operationg, которая, в свою очередь, относится к семейству систем Unix - общей архитектуре для ряда современных операционных систем.

Традиционно Unix используется для работы на компьютерах мейнфреймов , Центральные вычислительные средства, которые обслуживают десятки или сотни пользователей через удаленные терминалы. Поскольку все пользователи полагались на доступность мэйнфрейма, ни одному пользователю не разрешалось выдавать команду выключения. Идея, которая является фундаментальной для архитектуры Unix - системное ядро ​​никогда не будет инициализировать остановку, если соответствующая функция не вызывается процессом суперпользователя.

В современных системах настольных систем разработчики проявили определенные усилия, чтобы сделать остановку доступный только пользователю рабочего стола. Общей методикой является то, что менеджер регистрации, который обычно запускается в контексте безопасности пользователя root, обрабатывает завершение работы и перезагружается. В этом случае графическая оболочка выдает запрос диспетчеру входа для выключения компьютера. Это предполагает использование межпроцессного взаимодействия (IPC), обычно через службу dbus.

Вышеупомянутый policykit расширяет этот процесс, предоставляя стандартизованную структуру, через которую менеджер входа (или любая другая программа предоставляет услугу выключения) может проверить, что пользователям разрешено вызывать выключение, и через то, что администратор может настроить эти разрешения соответственно.

Некоторые настольные среды не используют службы на основе IPC, а скорее набор вспомогательных программ для обеспечения того же или аналогичные функции. Эти вспомогательные программы будут вызваны через механизмы, позволяющие перейти в контекст суперпользователя, например, sudo, suid или policykit, похожий на sudo.

В любом случае, немой традиционная программа выключения на оболочке Это работает, это требует, чтобы вы видели, что он запущен в контексте суперпользователя.

27
ответ дан 24 May 2018 в 16:33

Поскольку Linux обычно используется как сервер или аналогичный, а SSHing в Linux-модуль, даже обычный ноутбук Ubuntu, довольно распространен.

Дело в том, что вы можете не хотеть, чтобы люди с SSH-доступом могли его отключить, особенно если есть другие удаленные пользователи, использующие его удаленно. Кто-то с доступом к графическому интерфейсу; ну, он может самостоятельно отключить его с помощью физической кнопки питания.

Кроме того, удаленно зарегистрированный пользователь не сможет включить его.

14
ответ дан 24 May 2018 в 16:33
  • 1
    В то время мне не приходило в голову, что я задал этот вопрос, но я полагаю, что их настройки в Ubuntu для установки пакетов GUI на удаленном сервере и использования удаленного сервера через графический интерфейс вместо командной строки. (Подобно тому, как работает Windows Remote Desktop или Teamviewer). Таким образом, это приведет к недействительности предположения о том, что кто-то, использующий Ubuntu над графическим интерфейсом, может выключиться с помощью физической кнопки питания. – Aditya 27 May 2016 в 18:08
  • 2
    @aditya, которому нужен сервер, настроенный таким образом, который администратор должен решить сделать – Manishearth 28 May 2016 в 08:43
  • 3
    Да. Это потребует привилегий root для установки пакетов и настройки по мере необходимости. Но этот сценарий пришел мне на ум, когда я вчера прочел ваш ответ, и я подумал, что поделюсь им с вами :-) – Aditya 28 May 2016 в 12:14
Когда я перезагружаюсь через графический интерфейс, я могу сделать это без моего пароля sudo.

Только если вы вошли только в систему. Если есть другие пользователи (включая пользователей консоли), вам может потребоваться ввести пароль root. То же самое происходит в OS X и более поздних версиях Windows.

Когда я перезагружаюсь через графический интерфейс, я могу сделать это без моего пароля sudo.

Почему? Что происходит внутри системы ubuntu?

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
D-Bus - это механизм IPC - среда для локальной связи между процессами, запущенными на одном и том же хосте. D-Bus «умнее», чем протоколы передачи сообщений низкого уровня, такие как UDP. С другой стороны, он переносит сообщения как отдельные элементы, а не непрерывные потоки данных. D-Bus имеет структурированный вид данных, которые он несет, и обрабатывает данные в двоичной форме; целые числа различной ширины, строки и т. д. Поскольку данные - это не просто «сырые байты» для D-Bus, сообщения могут быть проверены. - Free Desktop

Следующая команда:

14
ответ дан 24 May 2018 в 16:33
  • 1
    Существует также более короткая версия через приложение qdbus – Sergiy Kolodyazhnyy 7 February 2016 в 06:46
  • 2
    Когда вы завершаете / выходите из DE (в этом случае GNOME), я не запрашиваю пароль root / user sudo ни с другим пользователем, зарегистрированным через GDM, ни с другим пользователем, зарегистрированным через tty. – kos 7 February 2016 в 16:10
  • 3
    @kos hu, это странно. Этот снимок экрана относится к Gnome 3, и я вошел в систему на gui и tty – Tim 7 February 2016 в 20:57
  • 4
    Я имею в виду, что я получаю одно и то же сообщение, но нажимаю " Выключение питания " просто идет вперед и выключает систему. Я также попросил Фабби проверить это, и он делает то же самое для него, не уверен, что это значит. – kos 7 February 2016 в 22:46
  • 5
    @kos ohh. Ху повесить. – Tim 8 February 2016 в 00:44

Причина, по которой вам не нужно быть root, чтобы инициировать выключение из графического интерфейса, во многом является вопросом удобства для обычного пользователя на рабочем столе. Система знает, что вы вошли в систему на консоли, поэтому, если вы по ошибке завершите работу компьютера, вы можете, вероятно, включить его.

Для пользователя в оболочке вы можете очень хорошо заходите в систему удаленно, поэтому система требует, чтобы вы вошли в систему под учетной записью root, чтобы выполнить команду shutdown. Это предотвращает закрытие обычного пользователя на сервере, когда другие люди его используют, и, хотя физически там не обязательно физически, чтобы запустить резервное копирование компьютера.

Причина того, что выключение не обеспечивает приглашение GUI для пароля суперпользователя, вероятно, просто заключается в том, что там нет никакой реальной утилиты - если вы на консоли, где появится приглашение, вы можете просто использовать меню cog-wheeel. Если вы хотите получить приглашение командной строки для пароля суперпользователя для выключения, это уже доступно с «sudo shutdown».

9
ответ дан 24 May 2018 в 16:33

В многопользовательской системе последнее, что вы хотите, это то, что ваши пользователи регистрируются и могут случайно перезагрузить сервер в любое время, поэтому версия командной строки Reboot - это команда только для суперпользователя, поэтому вам нужно быть root или иметь права sudo.

Также делать команды Halt и PowerOff.

5
ответ дан 24 May 2018 в 16:33
  • 1
    Спасибо за ваш ответ, я понимаю, что я, поскольку пользователь машины, используемой десятками, не должен перезагружать машину, но что делает Ubuntu (или почти все настольные дистрибутивы), когда я решил перезагрузить с помощью мыши вместо клавиатуры? Они позволяют это без priveliges. – asco 7 February 2016 в 05:42
  • 2
    Компоненты, такие как systemctl, loginctl, systemd, системные политики и т. Д., Позволяют доступному пользователю в настоящий момент получить доступ к некоторым корневым функциям без явного требования root-доступа, чтобы сделать рабочий стол более удобным для пользователя, но это необязательно вызывает командную строку команды для выполнения этих задач. – Jeff Sereno 7 February 2016 в 05:49

Другие вопросы по тегам:

Похожие вопросы: