我需要在 sh 脚本中使用“brctl addbr br-lan”命令创建一个网桥,而不使用 sudo。
我有一个像这样的脚本;
brctl addbr br-lan
ifconfig lo up
我尝试为我的脚本设置功能
sudo ./setcap cap_net_raw,cap_net_admin,cap_dac_override+eip
./myscript.sh
但这并没有改变任何事情。
调用“./myscript.sh”会返回以下输出;
add bridge failed: Operation not permitted
SIOCSIFFLAGS: Operation not permitted
我应该怎么做才能在没有 root 权限的情况下运行我的脚本,或者我应该为我的脚本定义哪些功能?
德克萨斯州。
答案1
您无法将功能分配给脚本,因为需要这些功能的是解释器,而不是脚本。如果您无法使用,sudo
则需要找到其他方式以 root 权限运行脚本。
也许如果您更新您的问题以包含一些上下文(例如,提到为什么您不能使用sudo
,或者为什么脚本不会在 root 帐户下自然运行),这里的某人可能能够提供一些额外的建议。
答案2
您是否知道 sudo 具有细粒度的权限。例如,您可以授予一个用户做一件事的权限(带或不带密码)。这是不是全有或全无。
考虑使用
go
lang 或其他高级编译语言进行编写。它将允许能力。考虑使用
docker
并授予一些sudo
权限来管理此容器。请注意容器/映像重命名,可能会允许权限升级(并非所有具有此名称的容器/映像都相同),因此请注意您允许的内容。