我可能遗漏了一些非常明显的东西,但是是否可以指定用户可以通过 SFTP 访问的文件夹列表(而不仅仅是用户主目录)?
例如
Admin -> Full root access
WebDev1 -> Access to the primary vhost folder and sub directories
SysAdmin1 -> Access to all folders, except the vhost folder
Manager1 -> Access to vhost folder, and phpMyAdmin install folder
我可以让它对“Admin”和“WebDev1”用户正常工作,但对其他 2 个用户则不行。
对于“Manager1”用户,我希望允许访问(包括子目录):
/data/vhosts
/usr/share/phpMyAdmin
这是在使用 SSHD 的 Centos 7 系统上。我将不胜感激任何有关此问题的帮助,因为它已经让我困惑了好几个小时。
答案1
与你想做的事情相关的关键词是SFTP chroot 监狱
您需要修改您的 sshd_config,首先取消注释该行以启用 SFTP,这将对应于如下内容:
Subsystem sftp /usr/lib64/ssh/sftp-server
在 sshd_config 的底部,模板中可能有以下一些被注释掉的内容。你会特别想要这样的东西:
# jail only user dave to folder /dave_sftp/
Match User dave
ChrootDirectory /dave_sftp
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail only user ron to folder /ron_sftp/
Match User ron
ChrootDirectory /ron_sftp
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail users that are in group sftp1_group to the folder /sftp1_group/
Match Group sftp1_group
ChrootDirectory /sftp1_group
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail users that are in group sftp2_group to the folder /sftp2_group/
Match Group sftp2_group
ChrootDirectory /sftp2_group
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
将特定用户限制到特定文件夹相当简单。根据你的问题指定不同用户可以访问的文件夹列表,这只是您的一些手工劳动,创建一个单独的组并将其与您想要使用的特定文件夹相匹配,然后将这些用户放入与您想要向他们提供监狱 sftp 的文件夹相匹配的相关组中进入。例如,将用户dave
放入 和 的两个组中sftp1_group
,sftp2_group
以允许该用户访问多个文件夹。
一个非常好的例子也可以在这里找到: https://serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos-user-authentication-error
注意
chroot 主目录之前的所有文件夹都必须由 root 用户拥有且只能写入。文件夹不能为组可写 - 即使该组是根组
这是另一个例子:https://askubuntu.com/questions/261663/how-can-i-set-up-sftp-with-chrooted-groups