限制 SFTP 用户访问多个文件夹

限制 SFTP 用户访问多个文件夹

我可能遗漏了一些非常明显的东西,但是是否可以指定用户可以通过 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_groupsftp2_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

相关内容