具有多个匹配部分的 sshd,覆盖设置
Posted
技术标签:
【中文标题】具有多个匹配部分的 sshd,覆盖设置【英文标题】:sshd with multiple match sections, override settings 【发布时间】:2012-06-05 11:32:19 【问题描述】:我的情况是 sshd 应该只允许 sftp 访问一组用户。
这很容易通过添加一个匹配部分来完成
Match Group groupname
ChrootDirectory /srv/ftp
ForceCommand internal-sftp
现在我需要排除一个属于该组的用户。他应该有正常的 shell 访问权限。
Match User username
ChrootDirectory ???
ForceCommand ???
我在这里设置什么? 是否可以取消设置先前使用另一个匹配部分设置的配置指令?
【问题讨论】:
【参考方案1】:不要添加Match User
部分。相反,通过从原始匹配中排除用户来排除用户。
Match Group groupname User !username
ChrootDirectory /srv/ftp
ForceCommand internal-sftp
必须满足Match
行上的所有条件才能应用该部分。
我不确定确切的语法。您可能需要引号。
Match Group groupname User "!username"
ChrootDirectory /srv/ftp
ForceCommand internal-sftp
【讨论】:
不需要引号 对于其他偶然发现此问题的人,我只是在阅读bbs.archlinux.org/viewtopic.php?id=121945 之前无法让它工作。结果发现模式匹配中存在错误,您需要执行“匹配组组名,用户 *,!用户名”,在我这样做之后它会立即按预期工作。 @NicolasMommaerts 使用 SSH 配置,the doc says "Criteria 可以通过在前面加上感叹号 ('!') 来否定。" 你能做到吗?也用 SSHD 来做这件事?Match Group foo !User bar baz
【参考方案2】:
首先将设置应用于组,不包括用户名,然后将(其他)设置应用于用户名。如果您不对用户名使用“ForceCommand”设置,则不会应用。
Match Group groupname User !username
ChrootDirectory /srv/ftp
ForceCommand internal-sftp
Match User username
PasswordAuthentication yes
另一个例子是,如果用户从不同的 IP 地址登录,您可能需要不同的设置
#all users except username1 and username2 default to sftp
Match User *,!username1,!username2
PasswordAuthentication yes
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -f LOCAL0 -l INFO
#normal ssh allowed for users username1 and username2 from the local network
Match User username1,username2 Address 192.168.0.0/16
PasswordAuthentication yes
#users username1 and username2 not allowed from other networks
Match User username1,username2 Address *,!192.168.0.0/16
PasswordAuthentication yes
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/sbin/nologin
【讨论】:
您的第二个示例正是我所需要的,因此非常感谢。为了将“坏”用户分组,我引入了一个组,例如,badusers
:Match Group badusers Address *,!192.168.0.0/16 PasswordAuthentication no
【参考方案3】:
对我有用的是将用户规则放在首位:
Match user lee
ChrootDirectory /mnt/s3
ForceCommand internal-sftp
Match group ftp
ChrootDirectory /home/%u
ForceCommand internal-sftp
【讨论】:
以上是关于具有多个匹配部分的 sshd,覆盖设置的主要内容,如果未能解决你的问题,请参考以下文章
设置具有多个部分和按钮的 tableviewcontroller