带有多个匹配部分的sshd,覆盖设置

时间:2012-05-31 08:11:11

标签: configuration ssh sshd

我遇到sshd应该允许sftp只访问一组用户的情况。

通过添加匹配部分(如

)可以轻松完成此操作
Match Group groupname
    ChrootDirectory /srv/ftp
    ForceCommand internal-sftp

现在我需要排除一个属于该组成员的用户。他应该有正常的shell访问权限。

Match User username
    ChrootDirectory ???
    ForceCommand ???

我在这里设置了什么? 是否可以通过另一个匹配部分设置配置指令?

3 个答案:

答案 0 :(得分:5)

不要添加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

答案 1 :(得分:3)

首先将设置应用于组,不包括用户用户名,然后将(其他)设置应用于用户用户名。如果您没有对用户用户名使用'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

答案 2 :(得分:0)

对我有用的是将用户规则放在首位:

Match user lee
    ChrootDirectory /mnt/s3
    ForceCommand internal-sftp

Match group ftp
    ChrootDirectory /home/%u
    ForceCommand internal-sftp