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

Dav*_*son 4 sftp sshd

我可能遗漏了一些非常明显的内容,但是否可以指定用户可以通过 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  
Run Code Online (Sandbox Code Playgroud)

我可以使它对“管理员”和“WebDev1”用户正常工作,但不能对其他 2 个用户正常工作。

对于“Manager1”用户,我希望允许访问(包括子目录):

/data/vhosts  
/usr/share/phpMyAdmin  
Run Code Online (Sandbox Code Playgroud)

这是在使用 SSHD 的 Centos 7 系统上。我将不胜感激,因为这让我困惑了好几个小时。

ron*_*ron 5

与你想做的事情相关的关键词是SFTP chroot jail

您需要修改您的 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
Run Code Online (Sandbox Code Playgroud)

将特定用户监禁到特定文件夹是相当简单的。根据您指定各种用户可以访问的文件夹列表的问题,您只需进行一些体力劳动,即可创建一个单独的组并将其与您要使用的特定文件夹进行匹配,然后将这些用户放入这些相关组中(s) 与您想要授予他们监禁的 sftp 访问权限的文件夹相匹配。例如,将用户dave放入两个组sftp1_groupsftp2_group允许该用户访问多个文件夹。

一个很好的例子也可以在这里找到:https : //serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos-user-authentication-error

注意

直到 chroot 主目录的所有文件夹都必须归 root 用户所有并且只能由 root 用户写入。文件夹不能是组可写的 - 即使组是 root

这是另一个例子:https : //askubuntu.com/questions/261663/how-can-i-set-up-sftp-with-chrooted-groups