一般来说,想要以root权限运行命令可以借助sudo 和 pkexec
要想省略输入密码的步骤,需要分别配置他们。
sudo可针对用户进行统一管理,而pkexec可以针对每一个命令配置,并且pkexec是支持图形界面授权的。
可以通过命令sudo visudo来编辑sudo的配置文件。
在该文件末尾添加如下行:
maicss ALL=(ALL:ALL) NOPASSWD:ALL
maicss ALL=(ALL:ALL) NOPASSWD:ALL
一定要在末尾(%sudo那一行的后边),否则无效。
保存后maicss用户在使用sudo时就不会要求输入密码了。
pkexec的策略文件存储于:/usr/share/polkit-1/actions/中,要实现修改某程序的策略,需要为其添加策略文件(可以复制一个其他程序的然后进行修改)。
/usr/share/polkit-1/actions/
(这里我是在Fedora下操作的,使用了dnf命令作为例子,大家可以根据需要配置修改。)
如要设置dnf命令的提示信息,要新增一个配置文件,名为:org.maicss.dnf.policy原则上这个名字需要和对应的程序ID相同,但是我们可以随便起一个,后缀名为 .policy 是固定的。
org.maicss.dnf.policy
.policy
<?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>
<?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>
其中一些重要信息说明:
whereis
设置无需密码需要修改下面代码中的11-13行内容为yes,如下所示:
<?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>
<?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 将不再弹出任何输入密码的提示,直接就可以运行。
pkexec dnf update
这个代码框竟然不显示行号,不过好在不多😂
收藏了
感谢分享
Popular Ranking
Popular Events
一般来说,想要以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
是固定的。<?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>
其中一些重要信息说明:
whereis
命令获得其路径。设置无需密码
设置无需密码需要修改下面代码中的11-13行内容为yes,如下所示:
<?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
将不再弹出任何输入密码的提示,直接就可以运行。