如何用/ bin / false shell执行

我试图设置每个用户fastcgi脚本,将运行每个不同的端口和不同的用户。 这里是我的脚本的例子:

#!/bin/bash BIND=127.0.0.1:9001 USER=user PHP_FCGI_CHILDREN=2 PHP_FCGI_MAX_REQUESTS=10000 

等等…

但是,如果我添加用户/ bin / false(我想要的,因为这将是像共享主机,我不希望用户有shell访问),该脚本运行在1001,1002'用户'正如我的谷歌search显示,这可能是一个安全漏洞。 我的问题是:是否有可能允许用户执行shell脚本,但禁用它们,所以他们不能通过SSHlogin?

使用sshd_configDenyUsersDenyGroups设置。

首先,为什么你需要将/bin/false作为用户的shell? 为什么不简单地使用/bin/bash作为shell,并在sshd_config设置AllowGroupsAllowGroups ? 这解决了sshlogin问题。 没有通过sshlogin的权限,用户是否可以访问shell?

或者,您可以将您的用户环境脚本设置为用户的shell,并将用户AllowGroupsAllowGroups设置设置为sshd_config 。 当然,你的脚本必须是一个locking的脚本。 这解决了用户环境问题和sshlogin问题。

换句话说,你试图解决哪个问题?

您可能想要完全阻止用户使用PAM远程login:

/etc/security/access.conf中:

 - : user : ALL EXCEPT LOCAL 

而不是一个用户,你可以使用一个组。 在man access.conf详细信息然后将用户shell设置为/ bin / false是没有必要的。

尝试使用/ bin / true而不是/ bin / false,看看是否会影响到它。

/ bin / false总是返回一个非零值,这可能会导致问题。 / bin / true将像/ bin / false一样工作,只不过它返回零。

这是可能的,但如果你拿走他们的shell,那么不,他们不能执行shell脚本。 将用户shell设置为/ sbin / nologin并不罕见,但是与将shell设置为false相同。

提出的最直接的答案是编辑sshd_config并限制shell访问。

大多数限制访问的其他方式不如configuration访问协议来拒绝访问那么明显。