Como posso criar um usuário apenas para sftp?


15

Eu adicionei um usuário ao sistema através da adduserferramenta. Então, /etc/passwdtentei mudar de /bin/bashpara /sbin/nologinou para /dev/null, mas nenhum deles funcionou.

Eu gostaria que o usuário não tivesse a opção de obter um shell interativo e apenas de usá-lo sftp. Há algum jeito?

Eu sei que já foi perguntado aqui antes, mas parece que ninguém deu uma resposta satisfatória.


O que você quer dizer com "sem sorte"?
Paweł Brodacki

Eu quis dizer que o scp / sftp remoto não funcionou. Eu resolvi-lo usando o shell scponly como sugerido por Iain
Toni Rosa

Respostas:


9

O comando que você deve usar para alterar o shell é chsh . O shell nologin pode ser /sbin/nologinou /usr/sbin/nologin(verifique o que você tem olhando /etc/shells), mas /bin/falseprovavelmente seria uma escolha melhor.

chsh -s /bin/false user

Você deve configurar algo como scponly, que fará exatamente o que você deseja.


Obrigado pela sua resposta. Eu tentei com os shells dentro do / etc / shell sem sorte ... / bin / false fornece uma "conexão perdida" e / sbin / nologin retorna um "Esta conta não está disponível no momento". Vou tentar isso scponly
Toni Rosa

Eu resolvi usando a concha de borracha! Cheers
Toni Rosa

3
Esta resposta é a agulha no feno! Certifique-se /bin/falsee /bin/nologinestão realmente disponíveis no /etc/shells!
Afr

@ Afri Fine, mas ... você realmente vai querer ler serverfault.com/questions/328395/… . Isso é fortemente contra-indicado.
Reinderien

@Afr não colocar nologinem /etc/shells! serverfault.com/a/328424
Robau

9

Você também deve conseguir fazê-lo com o OpenSSH 4.9 e superior, com o qual também pode fazer o chroot do usuário para aumentar a segurança.

No seu /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Então corra:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

O usuário poderá escrever apenas em / home / user / uploads.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory


+1 Coloquei isso na minha lista para investigar.
User9517 12/12

1
Eu o usei e funciona muito bem - você também pode dar ao usuário a opção de efetuar login no ambiente chroot com um shell, mas nesse caso você deve copiar um mínimo de bibliotecas e alguns outros utilitários conforme o esperado. O Jailkit ( olivier.sessink.nl/jailkit ) é útil para isso.
Eduardo Ivanec

Obrigado, ForceCommand foi uma dica. Não preciso de chroot, mas quero fazer login no SFTP com contas de serviço.
AnrDaemon #


1

Você pode adicionar um usuário -s /bin/falsepara desativar seu shell, mas o que você realmente deve considerar na configuração é uma conta sftp com chroot. Isso "prende" um usuário em seu próprio diretório e impede que ele possa acessar ou modificar qualquer arquivo ou diretório fora do diretório chroot.


Obrigado pela sua resposta, mas parece não funcionar. Eu recebo uma "conexão perdida" sempre que tento um usuário usando o shell / bin / false.
Toni Rosa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.