Permissão somente leitura para usuário sftp em diretório específico

10

Quero criar um usuário SFTP específico que tenha permissões para ler apenas todas as pastas e subpastas /var/www/vhosts. Alguma ajuda nisso?

Delírio
fonte

Respostas:

11

Os sistemas Unix fornecem o chrootcomando que permite redefinir o /usuário para algum diretório na hierarquia do sistema de arquivos, onde eles não podem acessar arquivos e diretórios "superiores".

No entanto, no seu caso, seria apropriado fornecer um chroot virtual implementado pelo serviço de shell remoto. O sftp pode ser facilmente configurado para restringir um usuário local a um subconjunto específico do sistema de arquivos.

portanto, no seu caso, você quer chrootdizer, usuário foousuário no /var/www/vhosts/diretório

Você pode definir um diretório chroot para o seu usuário confiná-lo ao subdiretório da seguinte /var/www/vhosts/maneira /etc/ssh/sshd_config;

Criar usuário foocom senha

sudo useradd foo
sudo passwd foo

Criar apenas para grupo SFTP

$ sudo groupadd sftp_users 

Adicionar a um usuário fooapenas para o grupo SFTP

$ sudo usermod -G sftp_users foo 

Alterar proprietário, porque a permissão de leitura / gravação

sudo chown root.root /var/www/vhosts/

Adicionar permissão

sudo chmod 755 /var/www/vhosts/

Editar /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

Comente e adicione uma linha como abaixo

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Adicione no último

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(NOTA: os Matchblocos precisam estar no final do sshd_configarquivo.)

Reiniciar sshserviço

sudo service ssh restart

Com esta configuração, você pode ssh na pasta ubuntue obter arquivos. Não pode putoudelete

Para sftp na pasta direita, edite /etc/passwd. Alterar linha para que o usuário foofique assim

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

Isso mudará a foopasta inicial do usuário para a pasta do servidor sftp.

Rahul
fonte
Então adicionei Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no In sshd_config e criei usuário e grupo como você fez, mas o usuário footem direitos para todas as pastas :(
Delirium
@Delirium ver minha resposta atualizados
Rahul
Muito obrigado pelo seu asnwer. Mas deve haver algum engano .. eu adicionei Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftpmas não há erro quando eu quiser reiniciar ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Delirium
2
@ Delirium mencionei claramente para colocar a Match.....seção no final do arquivo. Coloque esse código no final do arquivo e reinicie-o.
Rahul
1
Desculpe pelos meus olhos cegos, mas funciona, muito obrigado.
Delirium