推荐方案是授予普通用户network服务管理权:创建netadmin组、添加用户、配置sudoers允许免密重启network服务;也可用polkit放开ip命令权限或sudoers精准授权特定ip子命令。

您需要让普通用户能直接执行修改网卡IP地址的操作,而不是每次都要输sudo密码或切root,这在政务终端批量调试、驻场工程师快速排障或教学实验环境中很常见。默认情况下只有root或wheel组成员才能调用ip/ifconfig等网络命令,必须通过权限策略调整来实现。
给普通用户授予network服务管理权(推荐)
银河麒麟V10服务器版和多数桌面版使用systemd-networkd或network服务管理底层网络,直接授权该服务控制权比开放单条命令更安全可控。
第一步:创建专用权限组,例如netadmin:sudo groupadd netadmin
第二步:将目标用户加入该组:sudo usermod -aG netadmin username(把username替换成实际用户名)
第三步:编辑sudoers文件,允许netadmin组无需密码重启network服务:sudo visudo,在文件末尾添加这一行:%netadmin ALL=(root) NOPASSWD: /bin/systemctl restart network, /bin/systemctl reload network
第四步:保存退出后,该用户即可执行sudo systemctl restart network立即生效新IP配置,且不弹密码框。注意:此权限仅限network服务本身,不会开放其他系统命令。
用polkit规则放开ip命令权限(图形/终端通用)
如果用户常在图形界面或终端里直接运行ip addr add这类命令,polkit是比sudoers更细粒度的授权机制,适合Kylin桌面版(V10 SP1+)。
方法一:创建polkit规则文件:sudo nano /etc/polkit-1/rules.d/50-network-ip.rules
方法二:写入以下内容(注意缩进必须是两个空格,不能用Tab):polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.network-manager-settings.system.modify" && subject.isInGroup("netadmin")) { return polkit.Result.YES; } });
方法三:重启polkit服务使规则生效:sudo systemctl restart polkit
【关键提醒】此规则仅对NetworkManager接管的接口生效;若系统禁用了NetworkManager(如某些政务加固版),需先执行sudo systemctl enable --now NetworkManager再配置。
临时免密执行特定网络命令(最小权限原则)
当只需放开某一条命令(比如只允许改IP不许删路由),用sudoers精准限制最稳妥,避免权限过度开放。
执行sudo visudo,添加如下行(替换youruser为真实用户名):youruser ALL=(root) NOPASSWD: /usr/sbin/ip addr add *, /usr/sbin/ip addr del *, /usr/sbin/ip link set * up, /usr/sbin/ip link set * down
这行配置允许该用户免密执行ip addr增删地址、启停网卡四类操作,但禁止ip route、ip rule等高危命令。每条命令后加*表示接受任意参数,但不会匹配路径遍历(如../etc/shadow)。
配置完保存退出,用户即可直接运行sudo ip addr add 192.168.10.99/24 dev ens33,不提示输入密码。











