限制Linux用户的Exec命令

我如何限制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供您使用,请阅读,看看您是否无法通过此链接。

https://unix.stackexchange.com/questions/92049/restrict-standard-users-to-run-a-command-with-a-specific-argument

我知道这指定了UID的使用,如果你需要这个用户的话,可以考虑使用GID,把所有这些types的用户放在同一个组中。

欢呼声,祝你好运!

如果要限制SSH用户的命令执行,可以使用OpenSSH 4.9p1引入的ChrootDirectory

  • Chroot用户使用OpenSSH:一种更简单的方法来限制用户到他们的主目录 – TechRepublic

你还可以find一个busybox的静态链接二进制文件,它可以用来build立一个chroot环境。 (上面的文章付出了很大的努力来build立一个完整的chroot环境。)