Como criar um usuário SFTP (SSH) com permissões extremamente limitadas

8

Eu executo um servidor no Ubuntu Server 14.04. Quero criar um usuário capaz de conectar via sftp, baixar 1 arquivo e encerrar a conexão. O usuário não deve poder fazer QUALQUER COISA. Procurando arquivos ou configurações do sistema nem entradas da linha de comando, nada. Faça o login, faça o download do arquivo, gg. Quando o arquivo for atualizado, faça o download, gg. O arquivo está no mesmo diretório todas as vezes e tem o mesmo nome todas as vezes, mas é atualizado.

EDIT: Estou tentando implementar sua solução, mas encontrei alguns problemas: No arquivo de configuração do ssh na minha configuração, há uma linha com "allow groups sshdusers". Eu adicionei sftp_users. Mas há outro problema pela frente. sudo chown root.root / ubuntu / não é ideal para mim, porque o root não pode ssh e grava no diretório o arquivo que o "ubuntu" deve baixar (o chamaremos de user1. Quero que o user1 seja capaz de escrever em o diretório e o ubuntu apenas para leitura.Se eu mudar o sudo chown user1.user1 / ubuntu / e tentar sftp com o usuário ubuntu, a conexão falhará.Se eu deixar a raiz como você, posso conectar, mas não consigo ver currentdirectory eu vejo somente / e empy no filezilla, eu até adicionei user1 ao sftp_users, mas ainda não obtive sucesso.

Muito Obrigado

BlueStarry
fonte

Respostas:

11

Vamos começar

Criar usuário ubuntu

sudo useradd ubuntu

Criar senha

sudo passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Criar apenas para grupo SFTP

xxx@xxx:~$ sudo groupadd sftp_users 

Adicionar a um usuário "ubuntu" apenas para o grupo SFTP

xxx@xxx:~$ sudo usermod -G sftp_users ubuntu 

Fazer dir para sftpacesso

sudo mkdir /ubuntu

Alterar proprietário, porque a permissão de leitura / gravação

sudo chown root.root /ubuntu/

Adicionar permissão

sudo chmod 755 /ubuntu/

Editar /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Comente e adicione uma linha como abaixo

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Adicione no último

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /ubuntu
  ForceCommand internal-sftp

Reiniciar sshserviço

sudo service ssh restart

Com esta configuração, você pode ssh na pasta ubuntue obter arquivos. Não pode putoudelete

Tentar.

Editar 1

Para sftp na pasta direita, edite /etc/passwd. Alterar linha para que o usuário ubuntufique assim

sudo nano /etc/passwd

 ubuntu:x:1001:1001::/ubuntu:

Isso mudará a pasta inicial do usuário do ubuntu para a pasta do servidor sftp.

Ativar rootconta não é uma boa ideia.

Você pode ssh para servidor com user1.

Se você adicionar o usuário user1em sudoer groupque você vai ser capaz de escrever na pasta /ubuntu/e definir a permissão adequada

sudo adduser user1 sudo

Faça pasta, escreva na pasta ubuntu. Após as ações, você deve definir a permissão para o usuário ubuntu. A maneira mais fácil é agai definir a permissão para 755

sudo chmod 755 -R /ubuntu/

-R - opção dará permissão de leitura de todos os arquivos e diretórios para o usuário ubuntu

2707974
fonte
Muito obrigado a você. Veja minha edição para saber mais, pois os comentários são muito rigorosos.
BlueStarry
1
Você tem o Edit 1 na minha resposta.
2707974
Lamento dizer que isso não funciona. Com o filezilla sftp, não consigo escrever na pasta com o user1 nem o ubuntu. o login no ubuntu via sftp me dá a pasta /, apesar das últimas modificações. Eu tentei várias vezes e não consigo descobrir o problema.
BlueStarry
Eu também acho que 755 não é bom para esta finalidade porque o proprietário é root e sudoers não pode escrever na pasta com 755
BlueStarry
Mesmo de volta em 2015, tenho certeza Ubuntu estava usando addusere addgroup, em vez de useradd, groupaddetc. O sudo chown root.root /ubuntu/é apenas errado. Você criou o diretório usando sudo, portanto, a propriedade já é root. Deve usar ubuntu.sftp_users. Por fim, se você o criou inicialmente como pertencente a ubuntu, tudo, desde " Ativando o usuário root ...", é supérfluo.
Auspex