LINUX.ORG.RU

Есть 2 принципиальных решения:

1) автоматическое повышение привилегий, например, через set uid bit

2) процесс с привилегиями ждет сигнала, например, по dbus

German_1984 ★★
()
Ответ на: комментарий от German_1984

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

intelfx ★★★★★
()
Ответ на: комментарий от German_1984

Впрочем, ты же перечисляешь принципиально разные подходы... в каковом случае упоминание полкита таки не к месту. Сорри, не проснулся.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

2) процесс с привилегиями ждет сигнала, например, по dbus. В современных дистрибутивах эту роль выполняет PolicyKit. Он же берет на себя все вопросы по разграничению прав.

Fix for great justice

German_1984 ★★
()

Самому интересно, т.к. у меня уже с давних пор в IceWM не работают кнопочки "poweroff" и "reboot".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от intelfx

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

Он откажет выполнении запроса если работает больше одного пользователя. И потребует повысить привилегии.

rezedent12 ☆☆☆
()

Во, сам хотел спросить, но стеснялся. Из командной строки как перезагружаться без ввода пароля в systemd-based системах?

sunny1983 ★★★★★
()
Ответ на: комментарий от sunny1983

reboot, что является алиасом к systemctl reboot, что в свою очередь пинает logind по шине, который в свою очередь спрашивает разрешения у polkit, проверяет ингибиторы, пинает сессии и в конечном итоге запускает reboot.target.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от Eddy_Em

И этот человек, который не может написать NOPASSWD в /etc/sudoers, считает себя более компетентным в устройстве линуксового юзерспейса, чем туча программистов, админов и дистростроителей, работающих над systemd и связанными вещами. Кек.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Иди и поучи матчасть. В конце концов.

А ты проверь это. Зайди под другим пользователем через другую консоль и попробуй выключить компьютер средствами DE, например XFCE или Gnome.

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

Я прекрасно знаю, как это работает. Но проверкой на количество сессий занимается не polkit. Количество активных сессий проверяет logind (или что там у вас вместо него) и в зависимости от него запрашивает у polkit разрешение на одно из двух формально разных действий (org.freedesktop.login1.reboot или org.freedesktop.login1.reboot-multiple-sessions).

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

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 5)
Ответ на: комментарий от sunny1983

Arch Wiki говорит что systemctl reboot. При этом действуют правила PolicyKit, т.е. если сессия единственная то пароль не будет запрошен.

German_1984 ★★
()
Ответ на: комментарий от intelfx

Да что ты говоришь! У меня и так:

eddy ALL=(ALL) NOPASSWD: /sbin/poweroff
+ в баше алиас poweroff='sudo poweroff'

Только IceWM'у на это наплевать.

systemd

Я эту поцтеровысерную парашу использовать не собираюсь.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Хорошо, немного ошибся. Человек, который не может прочитать ман по башу и осознать, что .bashrc обрабатывается только интерактивными оболочками.

«Почему же IceWM'у на это наплевать, хм?» Да потому что в лучшем случае он запускает твою команду через system(), т. е. в неинтерактивной оболочке, а в худшем — вообще через fork()+exec(), т. е. не через шелл вообще.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Да шо ты говоришь! Там тупо неактивны кнопки poweroff и reboot. Т.е. возможно, где-то в настройках IceWM это нужно активировать. А возможно — и где-то еще.

Но мне это не очень-то и нужно. Все равно у меня обычно почти на каждом из шести рабочих столах открыт terminal в полноэкранном режиме (только на четвертом рабочем столе нет терминала: там браузер и thunderbird).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от unt1tled

Ты о чем?

Раньше у меня было 4 раб. стола (дома, кстати, на компе так и осталось). Но с тех пор, как у меня появилось по 4-5 одновременно тянущихся "долгих ящиков", я количество столов увеличил. И на каждом рабочем столе открыт один из этих "долгих ящиков".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Значит, ты не осилил не только баш, но и IceWM.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Всегда запускал systemctl reboot через sudo, по другому даже не пробовал, вечером попробую.

sunny1983 ★★★★★
()
Ответ на: комментарий от German_1984

По идее есть ещё третий вариант: дать пользователю или процессу привилегию (capability) необходимую для того что-бы ядро приняло от него сигнал на перезагрузку.
Просмотрел тему, кажется про это тут ещё никто не писал.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Если я правильно помню, то capabilities очень похожи на setuid, с той лишь разницей что setuid разрешит все привилегированные действия а capabilitiy только действительно необходимые. ИМХО, это тоже частный случай первого способа.

Решил не заострять на нем внимания, так как, на сколько мне известно, они до сих пор не используются ни одним из популярных дистрибутивов.

German_1984 ★★
()

Вобщем без привилегий не обошлось. Всетаки пришлось chmod +s /sbin/shutdown делать

pozitiffcat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.