文章源于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"
"https://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"
"https://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 许可协议。转载请注明出处!