2022-12-28小白笔记0

文章源于deepin社区 https://bbs.deepin.org/post/229374 作者:Maicss

一般来说,想要以root权限运行命令可以借助sudo 和 pkexec

要想省略输入密码的步骤,需要分别配置他们。

sudo可针对用户进行统一管理,而pkexec可以针对每一个命令配置,并且pkexec是支持图形界面授权的。

配置sudo
可以通过命令sudo visudo来编辑sudo的配置文件。

在该文件末尾添加如下行:

maicss ALL=(ALL:ALL) NOPASSWD:ALL
一定要在末尾(%sudo那一行的后边),否则无效。

保存后maicss用户在使用sudo时就不会要求输入密码了。

配置pkexec
pkexec的策略文件存储于:/usr/share/polkit-1/actions/中,要实现修改某程序的策略,需要为其添加策略文件(可以复制一个其他程序的然后进行修改)。

设置提示信息
(这里我是在Fedora下操作的,使用了dnf命令作为例子,大家可以根据需要配置修改。)

如要设置dnf命令的提示信息,要新增一个配置文件,名为:org.maicss.dnf.policy原则上这个名字需要和对应的程序ID相同,但是我们可以随便起一个,后缀名为 .policy 是固定的。

bash
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
    <vendor>Dnf Package Manager</vendor>
    <icon_name>x-package-repository</icon_name>
    <action id="org.maicss.dnf">
        <description>要使用包管理器需要root权限</description>
        <message>要使用dnf命令进行包管理需要获得root权限</message>
        <defaults>
            <allow_any>auth_admin</allow_any>
            <allow_inactive>auth_admin</allow_inactive>
            <allow_active>auth_admin</allow_active>
        </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/dnf</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
    </action>
</policyconfig>

其中一些重要信息说明:

5行:设置该配置的名称,可以随便写。
6行:图标名称,可能会在图形界面弹窗要求输入密码时显示。
7行:这行要写ID,需要和文件名保持一致(不包括后缀名)。
8行:说明,可以随便写。
9行:消息,会在图形界面弹窗要求输入密码时显示。
15行:可执行程序的路径,如果是命令,可以使用 whereis 命令获得其路径。
16行:是否允许 GUI 打开 X 显示器。
设置无需密码
设置无需密码需要修改下面代码中的11-13行内容为yes,如下所示:

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
    <vendor>Dnf Package Manager</vendor>
    <icon_name>x-package-repository</icon_name>
    <action id="org.maicss.dnf">
        <description>要使用包管理器需要root权限</description>
        <message>要使用dnf命令进行包管理需要获得root权限</message>
        <defaults>
            <allow_any>yes</allow_any>
            <allow_inactive>yes</allow_inactive>
            <allow_active>yes</allow_active>
        </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/dnf</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
    </action>
</policyconfig>

这时使用命令 pkexec dnf update 将不再弹出任何输入密码的提示,直接就可以运行。

本文作者:墨洺的文档

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!