我遇到sshd应该允许sftp只访问一组用户的情况。
通过添加匹配部分(如
)可以轻松完成此操作Match Group groupname
ChrootDirectory /srv/ftp
ForceCommand internal-sftp
现在我需要排除一个属于该组成员的用户。他应该有正常的shell访问权限。
Match User username
ChrootDirectory ???
ForceCommand ???
我在这里设置了什么? 是否可以通过另一个匹配部分设置配置指令?
答案 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