Нужно ли выключению / перезагрузке root-права под Linux?

1928
boh

Зачем мне нужен root, чтобы выключать / перезагружать мой компьютер из терминала? Для этого через меню GUI не требуются права суперпользователя.

6
Это зависит от настроек вашего компьютера. Почему вы хотите отключить терминал, а не использовать графический интерфейс? 10 лет назад 0
О каком терминале вы говорите? У вас есть терминал с «зеленым экраном» на линии RS-323? Там нет "терминала". Kaz 10 лет назад 0

4 ответа на вопрос

10
StreakyCobra

Обычно ОС запускает при запуске службу, которая запускается от имени пользователя root, и предлагает настольным средам некоторые возможности относительно компьютера. Обычно это либо ConsoleKit, либо systemd-logind.

Например, в KDE вы можете выключить компьютер из командной строки как обычный пользователь с помощью чего-то вроде:

qdbus org.kde.ksmserver /KSMServer logout 0 0 0 

Это возможно, потому что менеджер сеансов KDE свяжется со службой DBus, которая работает от имени пользователя root, и при вызове запустит shutdownкоманду с привилегиями root.

В системах с ConsoleKit вы можете использовать:

gdbus call -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/Manager \ -m org.freedesktop.ConsoleKit.Manager.Stop 

В системах, использующих systemd-logind, shutdownутилита уже использует DBus и не требует привилегий.

Подводя итог, вы можете выключить компьютер как обычный пользователь, потому что в среде рабочего стола запущена служба, которая предлагает возможность запуска команды shutdown [1] от имени пользователя root.

[1] На самом деле служба выполняет другие функции, чтобы обеспечить правильное завершение рабочего стола.

Менеджер сеансов никогда не запускается от имени пользователя root. Он связывается с ConsoleKit или systemd-logind. grawity 10 лет назад 1
Мой ответ, конечно, не полный или совершенно точный, я призываю вас исправить его! StreakyCobra 10 лет назад 1
@StreakyCobra [1] означает, что использование команды «shutdown» в терминале не рекомендуется при работе Desktop Environment? boh 10 лет назад 0
Это зависит от DE, но безопаснее избегать. Некоторые DE сохранят ваш сеанс перед закрытием (открытые приложения, конфигурация рабочей области, ...) или разрешат приложениям с несохраненными работами запрашивать действие у пользователя перед закрытием (как упоминалось [здесь] (http://askubuntu.com). / вопросы / 86355 / разница между ними-меню-выключения, и выключения-ч-сейчас)). StreakyCobra 10 лет назад 0
Проблема с этим ответом заключается в том, что возможность выключения Linux, если у вас есть физический доступ, существовала много лет назад, еще до того, как некоторые дистрибутивы Linux представили dbus. И вы можете выключить Linux, не входя в систему: то есть как пользователь, не являющийся обычным пользователем. Kaz 10 лет назад 2
Я думаю, что вопрос неоднозначен, потому что его можно понять двумя способами: «Каковы причины, требующие root-доступа для выключения компьютера?» и «Почему требуется root-доступ из командной строки для выключения компьютера, а не из графического интерфейса?». Я ответил на второй. StreakyCobra 10 лет назад 0
Я имел в виду второе, извините за неоднозначность. boh 10 лет назад 0
1
Mikhail Kupchik

Представьте, что ваш компьютер является общим сервером веб-хостинга, где каждому пользователю предоставляется доступ по SSH. В такой настройке около 500 пользователей на один сервер.

Нужно ли кому-либо действительно перезагружать весь сервер, прерывать загрузку HTTP, прерывать сеансы SSH и т. Д.?

Это был не вопрос. grawity 10 лет назад 0
Да, это разумное толкование вопроса. SSH является примером терминала и не предоставляет способ завершения работы для пользователей, которые еще не прошли проверку подлинности или не прошли проверку подлинности в качестве пользователя root. Текстовая консоль Linux предоставляет способ перезагрузки пользователям, не вошедшим в систему, как и графические экраны входа в систему. Kaz 10 лет назад 0
1
John Thomas

Несколько причин из головы:

  • варианты командной строки могут быть сценариями, следовательно, вредоносный сценарий может быть внедрен и вызывать очень неприятные вещи (атака DoS и т. д.).
  • Меню с графическим интерфейсом пользователя безопасно: не допускает неприятных событий (например, принудительная перезагрузка - все бросает в воздух)
  • Меню графического интерфейса пользователя простое: не путайте пользователей с мощными опциями администратора, такими как подробное ведение журнала, дополнительная отправка сообщений всем зарегистрированным пользователям, отложенное завершение работы, разница между остановкой, режимом обслуживания и т. Д.
  • Графическое меню простое и означает: не работает "по-разному" в соответствии с уровнями выполнения системы (0, 6 и т. Д.), Выполняющими различные сценарии (например, / sbin / shutdown) и / или в соответствии с различными переключателями / параметрами, введенными из команды линия

НТН

X11 также является сценарием. grawity 10 лет назад 0
1
Kaz

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

Предполагается, что пользователь произвольного сеанса TTY не имеет физического доступа; это форма удаленного доступа. Нет никакого способа сообщить о завершении через произвольный сеанс TTY, будь то локальный xterm, фактический терминал на последовательной линии или ssh-сеанс. Вы должны доказать, что обладаете привилегиями, эквивалентными физическому доступу, став root.

Если неаутентифицированные или непривилегированные пользователи могут удаленно перезагрузить систему, это будет проблемой безопасности.

Точно так же как удаленный вход в систему, физический терминал (фактический последовательный порт) является формой удаленного доступа. Пользователь может находиться в другом здании или в другой части мира (через модем).

Графический эмулятор терминала, такой как xterm, не является удаленным, но операционная система этого не знает. Приложение реализовано с использованием псевдо TTY . Это виртуальное устройство TTY, которое операционная система (по большей части) не отличает от реального TTY. Если вы sttyвведете сеанс xterm или ssh, вы заметите, что у вас есть скорость передачи данных, например 9600 или 38400, и вы можете переключать управление потоком xon / xoff или даже cts / rts. Теоретически, псевдо TTY могут иметь специальный протокол сигнализации перезагрузки между ведущим и ведомым, который недоступен в обычных TTY, но они этого не делают. (На самом деле, xterm может быть удаленным, поскольку это X-клиентское приложение, которое можно перенаправить для создания его окон на удаленном X-сервере.)

(Не уверен, что означает «терминал» в вопросе; в Linux такого нет.)

Я думаю, что физический доступ является настоящей причиной. Те, у кого есть физический доступ, могут просто щелкнуть выключателем, вытащить вилку или сломать компьютер. emory 10 лет назад 0

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