Eu tenho uma configuração com usuários apenas sftp:
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Recebo a seguinte mensagem no meu secure.log:
fatal: bad ownership or modes for chroot directory
Com a palavra-chave match, existem alguns itens de segurança ... os diretórios precisam pertencer ao root e os diretórios precisam ser chmod 755 (drwxr-xr-x). Portanto, torna impossível para um usuário ter permissões de gravação nas pastas, se for gravável apenas na raiz do usuário e definido como ben não gravável para grupos devido à segurança do ssh.
Alguém sabe sobre um bom trabalho por aí?
chroot
usuários do ed possuem os seusChrootDirectory
? Eles podem acessá-lo?Respostas:
Eu tenho as mesmas configurações no nosso servidor. Usamos a mesma configuração do SSHD. Os diretórios pessoais dos usuários são de propriedade da raiz e, dentro deles, existem pastas
documents
e depublic_html
propriedade dos respectivos usuários. Os usuários fazem login usando o SFTP e gravam nessas pastas (não diretamente em casa). Como o SSH não é permitido para eles, ele funciona perfeitamente. Você pode ajustar quais diretórios serão criados para novos usuários no / etc / skel / (pelo menos no openSUSE, não estou familiarizado com outras distribuições).Outra possibilidade seria o ACL ( documentação do openSUSE ) - ele pode adicionar permissão de gravação para o respectivo usuário em seu diretório pessoal.
fonte
packet_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
Encontramos recentemente uma solução alternativa que é assim:
/ etc / ssh / sshd_config:
permissões de diretório:
Agora,
/home
cumpre os requisitosChrootDirectory
e não pode ser listado por usuários restritos, mas ossftponly
usuários não poderão efetuar login se seus diretórios pessoais estiverem configurados como de costume (/home/$LOGNAME
): no ambiente chroot, seus diretórios pessoais não estão dentro,/home
mas diretamente em raiz (/
).solução alternativa 1
Defina as casas dos usuários restritos como elas aparecem em chroot:
caviar 1
Se algum dos usuários irrestritos ou algum script de administração usar a expansão de til do bash, como
~username
ele se expandirá para/username
agora, o que não é o que isso significa.Além disso, o administrador que cria
sftponly
usuários deve se lembrar de usar a página inicial não padrão. Resolvível com um script. Que o administrador deve se lembrar de usar.solução alternativa 2
Essa é uma alternativa à anterior que acabamos usando:
Isso é criar um link simbólico dentro
/home
de seu próprio nome de diretório. Agora, em chroot,/home/username
aponta para o mesmo diretório que sem chroot. Para usuário restrito conectado com sftp, ele aparecerá como/username
. Este diretório é gravável para seu proprietário (usuário restrito). O usuário restrito não pode listar seus diretórios pai ou home de nenhum dos irmãos por nome.A única coisa especial sobre um
sftponly
usuário é sua participação nosftponly
grupo. Achamos mais fácil lidar com isso do que a solução alternativa 1.ressalvas 2
/home/home
/home
hierarquia e seguem os links simbólicos.fonte
Você precisa criar uma estrutura dentro do diretório inicial do usuário, como dirs in e out. Esses diretórios devem pertencer ao usuário e lá ele poderá colocar e obter arquivos.
fonte
Você deve criar a seguinte estrutura de diretórios:
/ home / usuário
/ home / user / home / user <- o diretório real ao qual o usuário terá acesso
Opcionalmente:
/home/user/.ssh/authorized_keys <- se você deseja se autenticar com uma chave pública
fonte
Em referência à seção 'permissões de diretório' na resposta de @artm (que acabei de testar) .. Encontrei:
Não permite que a conexão sftp funcione no ubuntu com apenas permissões de execução em tudo, ou seja, 111.
Eu achei aquilo:
Funciona com a conexão ao sftp com as permissões de leitura e execução, isto é, 555. Não tenho certeza se o debian vs outros tipos são diferentes, mas é isso que funciona no meu ubuntu.
fonte
Ao criar um usuário, você deve definir a propriedade usando
chown
cada dir para cada usuário.Por exemplo:
fonte