Restringir o usuário SFTP a várias pastas

Restringir o usuário SFTP a várias pastas

Provavelmente estou faltando algo realmente óbvio, mas é possível especificar uma lista de pastas (não apenas o diretório inicial dos usuários) que um usuário pode acessar via SFTP?

por exemplo

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  

Posso fazer com que funcione bem para os usuários "Admin" e "WebDev1", mas não para os outros 2.

Para o usuário "Manager1" desejo permitir acesso (incluindo subdiretórios):

/data/vhosts  
/usr/share/phpMyAdmin  

Isto está em um sistema Centos 7 usando SSHD. Eu apreciaria qualquer ajuda em relação a isso, pois isso está me intrigando há algumas horas.

Responder1

palavras-chave relacionadas ao que você deseja fazer sãoSFTP chroot cadeia

você precisa modificar seu sshd_config, primeiro descomente a linha para ativar o SFTP que corresponderá a algo assim:

Subsystem sftp /usr/lib64/ssh/sftp-server

Na parte inferior do sshd_config, você pode ter alguns dos itens a seguir em um modelo comentado. Você vai querer algo especificamente assim:

# 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

Prender um usuário específico em uma pasta específica é bastante simples. De acordo com sua pergunta deespecifique uma lista de pastas que vários usuários podem acessar, é apenas um trabalho manual de sua parte criar um grupo separado e combiná-lo com uma pasta específica que você deseja usar e colocar esses usuários nos grupos relevantes que correspondem às pastas que você deseja fornecer a eles sftp preso acesso a. Por exemplo, coloque o usuário daveem ambos os grupos sftp1_groupe sftp2_grouppara permitir que esse usuário acesse várias pastas.

Um exemplo muito bom também pode ser encontrado aqui: https://serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos-user-authentication-error

esteja atento a

Todas as pastas até o início do chroot devem ser de propriedade e somente graváveis ​​pelo usuário root. As pastas não podem ser graváveis ​​em grupo - mesmo que o grupo seja root

aqui está outro exemplo:https://askubuntu.com/questions/261663/how-can-i-set-up-sftp-with-chrooted-groups

informação relacionada