Каков наиболее "убунтовский" способ предотвращения отключения, приостановки работы некоторых пользователей и т. Д.?
В традиционной системе Unix пользователи без полномочий root не могут этого сделать. Что дает пользователям такую возможность в современных средах рабочего стола и как мне отключить ее для каждого пользователя или группы?
Я видел отличный способ запретить кому-либо выключать / приостанавливать работу, но в идеале мне нужно, чтобы определенные пользователи (например, добавляя / удаляя их из определенной группы пользователей) не могли выполнить выключение., перезагрузите, приостановите.
2 ответа
Как уже упоминалось в другом вопросе, вы можете контролировать эти действия с помощью локальной системы управления 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;...
, Любой пользователь, не соответствующий этой политике, должен иметь поведение по умолчанию.
Создайте и отредактируйте этот файл как 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