![限制用户运行特定命令](https://linux22.com/image/159531/%E9%99%90%E5%88%B6%E7%94%A8%E6%88%B7%E8%BF%90%E8%A1%8C%E7%89%B9%E5%AE%9A%E5%91%BD%E4%BB%A4.png)
我有一个用户test1
,我想限制它只运行特定的命令。我发现这解决方案,我测试了它(使用 test1 登录并运行一些随机命令。它们都不起作用,但是date
)并且它起作用了。这就是我所做的:
cp /bin/bash /bin/rbash
useradd -s /bin/rbash test1
mkdir /home/test1/bin
chmod 755 /home/test1/bin
echo "PATH=$HOME/bin" >> /home/test1/.bashrc
echo "export PATH" >> /home/test1/.bashrc
chattr +i /home/test1/.bash_profile
ln -s /usr/bin/date /home/test1/bin
因为我更像是一个 DBA,而不是像你们这样的 Linux 专业人士,所以我不知道这是否足够,以及我是否需要做其他事情来防止它test1
在系统上做任何事情。有什么提高安全性的建议吗?
如您所见,如果我为以下命令创建链接ifconfig
:
ln -s /sbin/ifconfig /home/test1/bin
该用户test1
还可以add | del | up | down
使用ifconfig
.我如何使用例如此选项来限制此命令-a
,或者可以在没有任何选项的情况下执行它?
答案1
普通用户不允许更改网络接口。
例如,我的非 root 用户可以使用以下命令查看界面详细信息ifconfig
:
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 178399193 bytes 213874320365 (199.1 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 50539358 bytes 36748192570 (34.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xba200000-ba21ffff
但无法关闭接口:
$ ifconfig eth0 down
SIOCSIFFLAGS: Operation not permitted
简而言之,不要让它们ifconfig
以 root 身份运行(例如使用sudo
),您不必担心这一点。
答案2
你尝试过跑步吗/bin/rm
?您阅读了文章顶部的警告吗?
免责声明:这只是一个 hack,不建议用于实际生产使用
我也会阅读以下评论这个答案到 Stack Overflow 上的副本。
如果你想真正限制用户安全地您可能需要研究权限框架,例如 SELinux 或 AppArmor。