我有一个使用网络名称空间(netns)的体系结构。我想允许普通用户在这些netns中进行一些操作。
我可以编写一个netns-exec.sh
受本文启发的脚本,由执行sudo
,包含:
ip netns exec $1 su $USER -c "$2"
并添加到我的sudoer文件中:
user ALL=(ALL) /path/to/netns-exec.sh
但是我发现它是如此丑陋,我完全可以做噩梦。有没有更好的解决方案,允许普通用户使用名称空间?是否可以将用户分成一些有用的组?我搜索了一下,但一无所获。
这是
—
Raspbeguy 2015年
sudo
包含su
惹恼了我,而不是脚本本身。无论如何,我会写一个脚本来包装东西。它有2个用户开关,这真的很丑,您不觉得吗?
那应该吓到你了。用户可以将$ USER修改为root。
—
斯蒂芬
是的,这确实使我感到恐惧。但是我后来发现
—
Raspbeguy 2015年
sudo
提供了一个特定的变量$SUDO_USER
,它更安全。但这仍然很丑。
@Elronnd-内核忽略脚本中的setuid
—
Angelo
Cmd_Alias CMD_NETNS = ip netns exec [regexp matching your namespace] su [regexp matching allowed used] -c [regexp matching allowed namespace command]
不在sudoers文件中定义,然后创建一个组,在其中放置允许的用户,然后将此组关联到此命令别名。