如何使用 /bin/false shell 执行

如何使用 /bin/false shell 执行

我正在尝试设置每个用户的 fastcgi 脚本,这些脚本将在不同的端口和不同的用户上运行。这是我的脚本的示例:

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

ETC...

但是,如果我使用 /bin/false 添加用户(我想要这样做,因为这将类似于共享主机,并且我不希望用户拥有 shell 访问权限),则脚本将在 1001、1002“用户”下运行,正如我的 Google 搜索显示的那样,这可能是一个安全漏洞。我的问题是:是否可以允许用户执行 shell 脚本但禁用它们,以便他们无法通过 SSH 登录?

答案1

使用DenyUsersDenyGroups设置sshd_config

答案2

首先,为什么需要将 设置/bin/false为用户的 shell?为什么不直接将 设置/bin/bash为 shell,然后AllowGroupsDenyGroups设置在sshd_config?这解决了 ssh 登录问题。如果没有通过 ssh 登录的权限,用户是否拥有 shell 访问权限?

或者,您可以将用户环境脚本设置为用户的 shell,并将用户AllowGroupsDenyGroup设置放在sshd_config。当然,您的脚本必须是锁定的脚本。这解决了用户环境问题和 ssh 登录问题。

换句话说,您想解决哪个问题?

答案3

您可能希望完全阻止用户使用 PAM 远程登录:

/etc/security/access.conf:

- : user : ALL EXCEPT LOCAL

您可以使用组来代替单个用户。详细信息请参见man access.conf 然后无需将用户 shell 设置为 /bin/false。

答案4

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

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

限制访问的大多数其他方法都不如仅仅配置访问协议来拒绝访问那么明显。

相关内容