Каков самый «способ Ubuntu» для предотвращения закрытия, приостановки и т. д.

20

В традиционной системе Unix пользователи без полномочий root не могут этого сделать. Что дает пользователям эту возможность в современных средах рабочего стола и как я могу отключить ее для каждого пользователя или для каждой группы?

Я видел отличный способ предотвратить anybody от закрытия / приостановки, но в идеале я хочу, чтобы некоторые пользователи (например, добавив / удалив их из определенной группы пользователей) не смогли выполнить останов, перезапустить, приостановить.

    
задан thomasrutter 03.05.2012 в 06:18
источник

2 ответа

20

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

Если вы создаете файл /etc/polkit-1/50-local.d/restrict-shutdown.pkla с контентом вроде:

[Disable shutdown/etc for group restricted]
Identity=unix-group:restricted
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

Это приведет к тому, что любой член группы restricted не выполнит согласованные действия. В качестве альтернативы, если вы хотите ограничить отдельных пользователей, замените unix-group:restricted на unix-user:user1;unix-user:user2;... . Любой пользователь, не соответствующий этой политике, должен поменять поведение по умолчанию.

    
ответ дан James Henstridge 03.05.2012 в 07:14
источник
0

Создайте и отредактируйте этот файл с правами root:

/etc/polkit-1/localauthority/50-local.d/power-management.pkla

Скопируйте и вставьте следующее:

[Disable shutdown/restart for users jim jane]
Identity=unix-user:jim;unix-user:jane
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

[Disable suspend/hibernate for users jim jane]
Identity=unix-user:a;unix-user:vvpinker
Action=org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
    
ответ дан Sepero 30.10.2015 в 13:11