O sftp do Chroot dá erro de "Permissão negada"

2

Eu configurei o sshd_conf na minha caixa de centos como abaixo:

Match group pilots
ChrootDirectory /home/pilots
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

e o diretório / home / pilots assim:

# ls -al /home/pilots
total 12
drwxr-x---. 3 root pilots 4096 Mar 10 14:20 .
drwxr-xr-x. 7 root root     4096 Mar 10 14:10 ..
drwxrwxr-x. 2 root pilots 4096 Mar 10 15:21 data
-rwxrwxrwx. 1 root root        0 Mar 10 14:20 topLevel
# 

Se eu entrar como um usuário no grupo de pilotos SEM a Diretiva ChrootDirectory ativada, posso fazer um cd para a pasta / home / pilots (ou um subdiretório dela) e fazer um ls ou obter sem dificuldade. No entanto, se eu habilitar a diretiva ChrootDirectory, enquanto eu ainda puder me inserir, e puder cd para os dados, não posso fazer um ls ou entrar em nenhum dos diretórios. Tentando ls, por exemplo, dá um erro remote readdir("/"): Permission denied , e tentando obter topLevel dá File "/topLevel" not found . Eu estava pensando que talvez eu não estivesse no diretório que eu estava esperando, mas a capacidade de fazer cd de dados pareceria indicar que o chroot funcionava como deveria. O que eu posso estar fazendo errado?

Algumas notas potencialmente importantes:

  • Os usuários em questão existem em um servidor LDAP remoto, acessado via sssd
  • O controle de acesso deve ser por grupo, pois muitos usuários precisarão de acesso de leitura a essa mesma pasta. Assim, a raiz restante da propriedade.

Edit: Acabei de notar isso no log de mensagens:

type=1400 audit(1394494944.504:50): avc:  denied  { read } for  pid=22758 comm="sshd" name="pilots" dev=dm-0 ino=400504 scontext=unconfined_u:system_r:chroot_user_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=dir

Então, há um registro da negação. Ainda não me diz porquê.

    
por ibrewster 11.03.2014 / 00:55

1 resposta

6

Encontrei a solução em esta página . Para resumir, depois de configurar o sftp de acordo com a configuração acima, os dois comandos a seguir precisavam ser executados para permitir o acesso com o SELinux ativado:

setsebool -P ssh_chroot_rw_homedirs on
restorecon -R /home/$USERNAME

Neste caso, o segundo comando seria restorecon -R / home / pilots. Depois disso, o sftp funciona como esperado, mesmo quando chrooted, sem ter que desabilitar completamente o SELinux.

    
por 13.03.2014 / 19:01

Tags