Restringir usuários SFTP à sua pasta pessoal

1

Eu quero restringir os usuários de SFTP à sua pasta pessoal para que eles não vejam os diretórios de pasta / home de outra pessoa. Infelizmente, todos os usuários do SFTP podem ver as pastas de outros usuários no momento. Todos os posts e exemplos apontam ChrootDirectory , mas por algum motivo eu não consigo trabalhar.

$ sudo nano /etc/ssh/sshd_config

Subsystem sftp internal-sftp
Match Group sftp
  ChrootDirectory %h            # The %h causes "Broken pipe" error while trying to login
  ChrootDirectory /var/sftp     # This allows login but all SFTP folders are visible to all user
  X11Forwarding no
  AllowTcpForwarding no
  AllowAgentForwarding no
  PermitTunnel no
  ForceCommand internal-sftp

Usuários, permissões e pastas

Eu usei o comando abaixo para criar usuários e pastas.

sudo useradd -m -d /var/sftp/hello -G sftp hello --shell /usr/sbin/nologin

Resultado

ubuntu@linux:~$ grep hello /etc/passwd
hello:x:1001:1002::/var/sftp/hello:/usr/sbin/nologin

ubuntu@linux:~$ grep world /etc/passwd
world:x:1002:1003::/var/sftp/world:/usr/sbin/nologin

ubuntu@linux:~$ ls -l /var/
drwxr-xr-x  4 root root   4096 May  7 14:48 sftp

ubuntu@linux:~$ ls -l /var/sftp/
drwxr-xr-x 3 hello sftp 4096 May  7 14:01 hello
drwxr-xr-x 2 world sftp 4096 May  7 14:48 world

SOLUÇÃO

O problema aqui é que, tive de deixar root:root possuir a pasta pessoal dos meus usuários e criar outra pasta na pasta inicial dos usuários (por exemplo, uploads ) e, em seguida, possuí-la como hello|world:sftp . Originalmente, as pastas iniciais eram de propriedade de hello|world:sftp .

    
por BentCoder 07.05.2018 / 16:17

1 resposta

2

Por motivos de segurança, os usuários com chroot não devem poder criar arquivos arbitrários (por exemplo, /etc/shadow e inúmeros outros). É por isso que o sshd força você a tirar a propriedade e escrever privilégios do próprio diretório chroot:

chown root:root /var/sftp/hello
chmod o-w       /var/sftp/hello

A solução alternativa, sem nenhum sshd ChrootDirectory , depende do fato de que o usuário só pode listar um diretório se tiver r permissão, enquanto usá-lo requer apenas x permission:

chown root:root /var/sftp
chmod o=x       /var/sftp    # implicitly removes rw, sets only x
    
por 07.05.2018 / 18:12

Tags