为了ifconfig
在 Linux 中执行此操作并更改 IP 和 VIP,是否需要 root 权限?
或者也可以通过非 root 帐户执行此操作?
答案1
您不需要 root 权限即可ifconfig
更改 IP 地址,只需CAP_NET_ADMIN。让我们创建一个启用的副本ifconfig
来CAP_NET_ADMIN
查看这一点:
cp /sbin/ifconfig .
sudo setcap cap_net_admin=eip ./ifconfig
./ifconfig eth0 1.2.3.4 # succeeds
# Wouldn't want to leave this copy of ifconfig around,
# It's a security hole!
rm ifconfig
答案2
是的,您必须是 root 才能使用 ifconfig,因为它通常位于/usr/sbin
或/sbin
目录中。由于是非 root,ifconfig 二进制文件甚至不在您的 PATH 环境变量中。因此,您应该是 root,或者必须设置 sudo。但现代方法是使用数据包ip
中的实用程序iproute2
。您可以在非特权用户下使用它来查看有关链接、接口和路由的信息。但是,您必须是 root 才能更改设置。
答案3
这很容易测试:
% ifconfig lo 1.2.3.4
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
是的,它需要 root。