По какой-то причине нам больше не нужно быть пользователем root (или использовать sudo
) для запуска /sbin/shutdown
, /sbin/reboot
и т. Д.
Похоже, это связано с тем, что эти исполняемые файлы теперь являются символическими ссылками на /bin/systemctl
, который обрабатывает все как обычный пользователь.
Однако, что если я хочу, чтобы shutdown
и reboot
снова потребовали аутентификацию root? Как мне этого добиться?
Systemd действительно обрабатывает выключение
, перезагрузку
и другие команды, а назначенные по умолчанию привилегии являются разрешительными. Чтобы изменить это, вам нужно создать правило Polkit. Создайте файл .pkla
в /etc/polkit-1/localauthority/50-local.d
(скажем, confirm-shutdown.pkla
), содержащий:
[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep
Различные команды выключения, перезагрузки и т. Д., В терминах Polkit, являются действиями в org.freedesktop.login1
, например, org.freedesktop.login1.power-off
, org.freedesktop.login1.reboot
и т. Д. Конкретной проблемой здесь является конфигурация по умолчанию, которая находится в /usr/share/polkit-1/actions/org.freedesktop.login1.policy
:
<action id="org.freedesktop.login1.power-off">
<description>Power off the system</description>
...
<defaults>
<allow_any>auth_admin_keep</allow_any>
<allow_inactive>auth_admin_keep</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
Обратите внимание, что он позволяет активному пользователю отключаться, перезагружаться и т. Д.
Вы можете использовать команду chmod
.
Если вы хотите предоставить доступ только root, вы можете написать:
каталог chmod 700 / в / в / файл
Если вы хотите разрешить root и группу sudo, вы можете написать:
chmod 770 directory / to / the / file
Если вы хотите изменить группу файла с sudo на другую (например, пользователь или администратор), вам необходимо ввести:
chown owner: каталог группы / в / файл /
Если вы хотите вернуться, запустите:
chown root: sudo filedirectory
Примечание : возможно, вам придется использовать sudo
для этой команды или войти в учетную запись root
Вы можете сделать скрипт, который проверяет, работает ли пользователь с правами root или нет.
Затем он выполнит systemctl команду или вернет ошибку.
#!/bin/bash if [ "$(whoami)" != "root" ]; then echo "Sorry, you are not root." exit 1 else (systemctl shutdown command) fi
e2fsck
отказы совсем не так плохи, как они могут быть вызваны переходными проблемами. Они не требуют замены диска.
– MSalters
6 November 2017 в 03:27
Попробуйте изменить его разрешения в терминале. Вы можете сделать его исполняемым только определенной группой, например, wheel или admin. К сожалению (или, возможно, к счастью), файл может иметь только одну группу владельцев, поэтому chown просто не будет работать сам по себе. Попробуйте "sudo chown root:wheel /sbin/shutdown", а затем "sudo chmod g+x /sbin/shutdown". Это сделает файл исполняемым только root'ом, а администраторам (вздрагивающим) и sudoers потребуется ввести свои пароли.
badblocks
непосредственно, а скорее использование sudo e2fsck -ck /dev/sdxn
. Проверьте man badblocks
на большее количество информации.
– heynnema
5 November 2017 в 08:15
Поскольку изменение разрешений символической ссылки в системе Linux не изменяет разрешения ссылки, а вместо этого изменяет файл, на который она указывает (по крайней мере, в Ubuntu). Я думаю, что самый безопасный способ сделать это - удалить ссылку и воссоздать ее с необходимой umask , чтобы получить желаемый результат.
Другой связанный пост можно найти здесь
sudo e2fsck -cfk /dev/sdxn
... НО I' d проверяют УМНУЮ информацию сначала.
– heynnema
5 November 2017 в 08:10