SSHD 配置中有一个匹配组:
cat /etc/ssh/sshd_config
...
Match Group FOOGROUP
ForceCommand /bin/customshell
...
机器上有许多属于“FOOGROUP”的用户。
我的问题:如何从“匹配组”中排除“FOOGROUP”中的给定用户?
答案1
该Match
运算符可以采用多个参数,从而允许非常灵活的规则。在这种情况下,你可以做这样的事情来实现你想要的。
Match Group FOOGROUP User !username
ForceCommand /bin/customshell
否定!
传递给条件的参数User
,因此即使用户username
位于组中FOOGROUP
,Match
也不会成功,并且username
在登录时不会获得自定义 shell。
答案2
您需要在配置文件条目中使用多个子句,但要以非常具体的方式。某些设置中存在一个错误,导致通常推荐的最简单语法(“匹配组 FOOGROUP 用户!用户名”)导致组中的其他人无法匹配或让他们逃脱 chroot 监狱。
在使用 OpenSSH_6.0p1 Debian-4、OpenSSL 1.0.2d 的 Debian Jessie 上,我得到的结果是组中的其他人无法再连接。 其他的报告越狱。在这两种情况下,语法都是
Match Group FOOGROUP User *,!username
似乎没有副作用。毫无疑问,解析器中存在某种错误。
答案3
使用下面的选项,我可以将 sftp 用户监禁在指定的目录中,并且指定的用户也可以通过 ssh 登录。
Match Group groupname User *,!username
谢谢。