Passei o dia inteiro tentando obter um compartilhamento de rede no meu framboesa.
Eu queria bloquear o usuário para que ele não conseguisse navegar pelo sistema de arquivos inteiro, sem acesso ao login ssh e eu queria ter acesso de gravação ao compartilhamento de rede.
E aqui está como eu consegui trabalhar:
Primeiro, criei um usuário:
sudo useradd netdrive
Em seguida, editou /etc/passwd
e certificou-se de ter /bin/false
para o usuário, então a linha era:
netdrive:x:1001:1004:Net Drive User,,,:/home/netdrive:/bin/false
Eu editei /etc/ssh/sshd_config
para incluir:
Match User netdrive
ChrootDirectory /home/netdrive
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Proprietário e permissões do diretório inicial alterado:
sudo chown root:root /home/netdrive/
sudo chmod 755 /home/netdrive/
Ok, depois de tudo isso, consegui me conectar usando sshfs
, mas no modo somente leitura. O que eu precisava fazer para conseguir uma pasta gravável:
sudo mkdir -p /home/netdrive/home/netdrive/
sudo chown netdrive:netdrive /home/netdrive/home/netdrive/
sudo chmod 755 /home/netdrive/home/netdrive/
Foi isso, funcionou sem mais mudanças. Note que tenho apenas permissões graváveis para o usuário , não para o grupo como muitas outras soluções online. Consegui criar / excluir / editar / renomear arquivos / pastas sem problemas.
Ao acessar usando sshfs
com o usuário netdrive por causa da configuração chroot, eu veria apenas as coisas armazenadas dentro do diretório /home/netdrive/
do servidor, perfeito. A estrutura de diretórios /home/netdrive/home/netdrive/
repetida é o que fez com que funcionasse para ter uma solução limpa chroot ssh gravável .
Agora vou explicar abaixo os problemas que tive:
Você provavelmente não deve executar os seguintes parágrafos :
Depois de olhar para as soluções acima (e muitas outras na rede que até usaram ACL (listas de controle de acesso)) eu ainda não consegui fazê-lo funcionar porque o que fiz em seguida foi:
O seguinte NÃO funcionou para mim:
sudo mkdir /home/netdrive/writable/
sudo chown netdrive:netdrive /home/netdrive/writable/
sudo chmod 755 /home/netdrive/writable/
Como o usuário netdrive ainda não conseguiu gravar nesse diretório /home/netdrive/writable/
apesar de possuir a pasta e ter as permissões. Então eu fiz:
sudo chmod 775 / home / netdrive / gravável /
E agora eu poderia criar um diretório e excluí-lo, mas não consegui editá-lo porque ele estava sendo criado sem permissões de grupo graváveis. Aqui, pelo que vi na net, as pessoas usam acl
para consertá-lo. Mas eu não estava feliz com isso, já que tive que instalar o acl
, depois configurar os pontos de montagem, etc. Também não tenho ideia de por que eu precisaria da permissão group para gravar em uma pasta de propriedade do mesmo usuário.
Parece que, por algum motivo, criar /home/netdrive/home/netdrive
e dar posse à última pasta netdrive
foi capaz de fazer tudo funcionar sem mexer nas permissões grupo .