我如何限制linux用户可以运行的可执行命令的范围?
例如,我只希望用户能够运行ls命令而没有别的。 如果尝试,例如运行cat ,linux会抛出一个错误或返回null。
我查看了alias命令来设置一个预定义的自定义命令列表,但这并不限制用户运行其他命令。 我其实很想设置alias命令,然后将范围限制在这些范围内。
我也研究了关于限制用户的文档 ,但是仍然不确定如何去做。
范围:我正在使用服务帐户在我们的PHP应用程序中运行ssh命令。 我想限制该服务帐户的命令,以防止有人注入命令到ssh_exec(); – 比如ls和inject | some command | some command
我想我会尝试这个: https : //github.com/ghantoos/lshell
您还可以将命令绑定到授权密钥文件中的特定ssh密钥。
from="host.com",command="/bin/ls" ssh-dss <SSH PUBLIC KEY>
这样做是限制访问帐户使用特定的SSH公共只运行特定的主机的特定命令。 看到
man sshd
为更多的select。
我可能会通过编写一个包装脚本来解决这个问题。 在这里有一个可用的解决scheme供您使用,请阅读,看看您是否无法通过此链接。
我知道这指定了UID的使用,如果你需要这个用户的话,可以考虑使用GID,把所有这些types的用户放在同一个组中。
欢呼声,祝你好运!
如果要限制SSH用户的命令执行,可以使用OpenSSH 4.9p1引入的ChrootDirectory
你还可以find一个busybox的静态链接二进制文件,它可以用来build立一个chroot环境。 (上面的文章付出了很大的努力来build立一个完整的chroot环境。)