По какой-то причине нам больше не нужно быть пользователем root (или использовать sudo
) для запуска /sbin/shutdown
и /sbin/reboot
т. Д.
Это происходит потому, что эти исполняемые файлы теперь являются символическими ссылками, /bin/systemctl
которые обрабатывают все как обычный пользователь.
Тем не менее, что если я захочу shutdown
и reboot
снова потребую аутентификацию root? Как мне этого добиться?
pkaction | grep login1
для других правил)sudo visudo
и проверив, есть ли строка с путем к этим исполняемым файлам.Ответы:
Systemd действительно обрабатывает команды
shutdown
,reboot
и другие, и назначенные привилегии по умолчанию являются разрешающими. Чтобы изменить это, вам нужно создать правило Polkit. Создайте.pkla
файл/etc/polkit-1/localauthority/50-local.d
(скажем,confirm-shutdown.pkla
), содержащий:Различное выключение, перезагрузка и т.д. команда, с точки зрения Polkit, действия в
org.freedesktop.login1
, например,org.freedesktop.login1.power-off
,org.freedesktop.login1.reboot
и т.д. Проблема конкретной здесь является конфигурация по умолчанию, которая находится в/usr/share/polkit-1/actions/org.freedesktop.login1.policy
:Обратите внимание, что он позволяет активному пользователю выключаться, перезагружаться и т. Д.
источник
Вы можете использовать
chmod
команду.Если вы хотите дать доступ только root, вы можете написать:
Если вы хотите дать разрешение root и группе sudo, вы можете написать:
Если вы хотите изменить группу файла с sudo на другую (например, пользователя или администратора), вам нужно ввести:
Если вы хотите вернуться обратно, запустите:
Примечание . Возможно, вам придется использовать
sudo
эти команды или войти в систему с учетной записью rootисточник
/bin/systemctl
), поэтому запуск chmod / sbin / shutdown повлияет на все ссылки,/bin/systemctl
наbin/systemctl
которые будут изменены разрешения , что подтверждается командой $ll /bin/systemct
l -rwx ------ 1 корневой корень 659848 18 января 16:04 / bin / systemctl *-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Поскольку изменение разрешений символической ссылки в системе Linux не меняет разрешения ссылки, а вместо этого указывает на файл (по крайней мере, в Ubuntu). Я думаю, что самый безопасный способ сделать это - удалить ссылку и воссоздать ее с требуемым значением umask для получения желаемого результата.
Еще один связанный пост можно найти здесь
источник
Вы можете создать скрипт, который проверяет, запускает ли его пользователь с правами root или нет.
Затем он запустит команду systemctl или вернет ошибку.
Источник
источник
Попробуйте изменить его разрешения в терминале. Вы можете сделать его исполняемым только определенной группой, такой как wheel или admin. К сожалению (или, возможно, к счастью), файл может иметь только одну групповую собственность, поэтому chown просто не будет работать сам по себе. Попробуйте "sudo chown root: wheel / sbin / shutdown", а затем "sudo chmod g + x / sbin / shutdown". Это сделает файл исполняемым только для пользователя root, и администраторы (вздрагивающие) и sudoers будут обязаны вводить свои пароли.
источник