Как сделать / sbin / shutdown, / sbin / reboot и т. д. требуется sudo снова в 16.04?

19

По какой-то причине нам больше не нужно быть root (или использовать sudo ) для запуска /sbin/shutdown , /sbin/reboot и т. д.

Кажется, что эти исполняемые файлы теперь являются символическими ссылками на /bin/systemctl , который обрабатывает все как обычный пользователь.

Однако, если я хочу, чтобы shutdown и reboot потребовали повторной проверки подлинности root? Как я могу это достичь?     

задан Byte Commander 19.06.2016 в 19:14
источник

5 ответов

5

Systemd действительно обрабатывает shutdown , reboot и другие команды и назначенные привилегии по умолчанию разрешительны. Чтобы изменить это, вам необходимо создать правило 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>

Обратите внимание, что он позволяет активному пользователю отключать питание, перезагружать и т. д.

    
ответ дан muru 18.02.2017 в 15:26
источник
0

Вы можете использовать команду chmod .

  • Если вы хотите предоставить доступ только к root, вы можете написать:

    chmod 700 directory/to/the/file
    
  • Если вы хотите дать permisson для root и sudo group, вы можете написать:

    chmod 770 directory/to/the/file
    
  • Если вы хотите изменить группу файла с sudo на другой (например, пользователь или администраторы), вам нужно ввести:

    chown owner:group directory/to/the/file
    
  • Если вы хотите вернуться назад, запустите:

    chown root:sudo filedirectory 
    

Примечание : вам может потребоваться использовать sudo для этой команды или войти в учетную запись root

    
ответ дан Zoltán Pataki 02.08.2016 в 13:40
0

Как изменение разрешений символической ссылки в системе Linux doesn 't изменить разрешения ссылки, но вместо файла, на который он указывает (в Ubuntu, по крайней мере). Я думаю, что самым безопасным способом для этого было бы удалить ссылку и заново создать ее с требуемым umask , чтобы получить результат, который вы желаете.

Другой связанный пост можно найти здесь     

ответ дан Elder Geek 13.02.2017 в 19:47
-1

Вы можете создать скрипт, который проверяет, работает ли пользователь с правами root или нет.
Затем он запустит команду systemctl или вернет ошибку.

#!/bin/bash
if [ "$(whoami)" != "root" ]; then
    echo "Sorry, you are not root."
    exit 1
else
    (systemctl shutdown command)
fi

Источник

    
ответ дан Ven3k 30.06.2016 в 19:56
-1

Попробуйте изменить свои разрешения в терминале. Вы можете сделать его исполняемым только определенной группой, например, колесом или администратором. К сожалению (или, возможно, к счастью), файл может содержать только одну группу, поэтому chown просто не будет работать сам по себе. Попробуйте «sudo chown root: wheel / sbin / shutdown», а затем «sudo chmod g + x / sbin / shutdown». Это сделает файл исполняемым только root, а администраторы (содрогания) и sudoers будут обязаны вводить свои пароли.

    
ответ дан chevydog 13.07.2016 в 23:31