Linux 用户的限制执行命令

Linux 用户的限制执行命令

如何限制 Linux 用户可以运行的可执行命令的范围?

例如,我只希望用户能够运行ls命令,而不能执行其他任何操作。如果尝试运行cat,linux 将抛出错误或返回 null。

我研究过alias设置预定义自定义命令列表的命令,但这不会限制用户运行其他命令。我实际上很想设置alias命令,然后将范围限制为这些命令。

我也调查过本文档限制用户,但仍然不确定如何去做。

范围:我正在使用服务帐户在我们的 PHP 应用程序中运行 ssh 命令。我想限制该服务帐户的命令,以防止有人将命令注入其中的情况ssh_exec();- 例如ls并注入| some command

我想我会尝试这个:https://github.com/ghantoos/lshell

答案1

您还可以将命令绑定到授权密钥文件中的特定 ssh 密钥。

from="host.com",command="/bin/ls" ssh-dss <SSH PUBLIC KEY>

这样做的目的是限制使用特定 ssh public 的账户访问,以便仅从特定主机运行特定命令。请参阅

man sshd 

以获得更多选项。

答案2

我可能会通过编写包装器脚本来解决这种情况。这里有一个部分解决方案可供您开始使用,请阅读并查看您是否无法从此链接找到它。

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

我知道这指定了 UID 的使用,如果多个用户需要此功能,请考虑使用 GID 并将所有这些类型的用户放在同一个组中。

欢呼并祝你好运!

答案3

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

您还会发现静态链接的二进制文件busybox对于设置 chroot 环境非常有用。(上面的文章花了很多功夫来设置完整的 chroot 环境。)

相关内容