propriedade ou modos inadequados para o componente de diretório chroot

57

Eu criei o usuário MY_USER. Defina seu diretório pessoal como / var / www / RESTRICTED_DIR, que é o caminho ao qual ele deve se restringir. Então editei sshd_config e defina:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Então eu reiniciei o ssh. Tornei MY_USER proprietário (e proprietário do grupo) de RESTRICTED_DIR e o modificou para 755. Recebo

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

Se eu removi as 2 linhas do sshd_config, o usuário poderá fazer login com sucesso. Claro que pode acessar todo o servidor. Qual é o problema? Eu até tentei chutar RESTRICTED_DIR para fazer o root (como eu li em algum lugar que alguém resolveu o mesmo problema). Sem sorte ..

MultiformeIngegno
fonte

Respostas:

73

A partir da manpágina :

ChrootDirectory
Especifica o nome do caminho de um diretório para chroot (2) após a autenticação. Todos os componentes do nome do caminho devem ser diretórios de propriedade raiz que não podem ser gravados por nenhum outro usuário ou grupo . Após o chroot, o sshd (8) altera o diretório de trabalho para o diretório inicial do usuário.

Meu palpite é que um ou mais diretórios no caminho não atendem a esses requisitos (minha suspeita wwwé de propriedade ou gravável do usuário da web, e não raiz).
Volte e siga as instruções, garantindo que os requisitos acima em negrito e itálico sejam atendidos.

voretaq7
fonte
Isso está me deixando bravo. Eu fiz "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; "usermod -a -G root www-data". Mas ainda não consigo fazer login com MY_USER
MultiformeIngegno
11
A exigência é sobre os componentes de caminho ( /, /var, /var/www, e /var/www/RESTRICTED_DIRtodos devem cumprir os requisitos de segurança acima). É um verdadeiro chroot (reveja a página man) - diretório home do seu usuário precisa existir dentro do chroot , como obrigação /bine todas as outras coisas o usuário vai precisar ...
voretaq7
2
Está bem! Resolvido. Eu ajustei o diretório chroot um nível acima. Então dei 777 permissões para o chrooted_dir original.
Estou
11
Apesar do que a página de manual diz, e mesmo com o grupo definido como 'root', tive que definir a permissão gw antes que funcionasse (Ubuntu 14.04). A página de manual deve dizer que Todos os componentes do nome do caminho devem ser diretórios de propriedade raiz que não podem ser gravados por nenhum outro usuário ou grupo sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell
3
Eu sei que isso é bastante antigo, mas, em vez de modificar /var/wwwdiretamente as permissões do caminho, o que pode quebrar o apache, seria melhor colocar o diretório sftp em outro caminho e usar o mapeamento de URL no Apache para apontar para o outro diretório . Verifique a documentação aqui httpd.apache.org/docs/2.4/urlmapping.html emFiles Outside DocumentRoot
Daniel
32

O diretório ChrootDirectory deve pertencer à raiz e ter o modo 755:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

Ok, agora todos os arquivos /var/www/RESTRICTED_DIRdevem pertencer a MY_USER, que devem pertencer ao www-datagrupo, e ter o modo 775 para permitir permissões de grupo, como este:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

NOTA: Lembre - se de que é uma boa prática permitir acesso apenas a uma pasta htdocs se você estiver configurando o apache.

JG.
fonte
3
Certeza que ele deve ser sudo usermod -a -G www-data MY_USERcomo o grupo deve vir depois-G
Smyles
Isso funciona, mas não consigo carregar novos arquivos no diretório, só posso modificar os arquivos criados anteriormente com a conta root e com a propriedade do usuário.
dlopezgonzalez 31/01
3

Após algumas soluções de problemas hoje, percebi que o root também deve poder gravar nos diretórios.

O seguinte não funcionou:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

Assim que consertei isso, meu chroot começou a funcionar.

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
Magnus
fonte