1. Crie um novo grupo
Crie um grupo chamado sftpusers. Somente usuários pertencentes a esse grupo serão automaticamente restritos ao ambiente chroot do SFTP neste sistema.
# groupadd sftpusers
2. Criar usuários (ou modificar usuário existente)
Digamos que você queira criar um usuário guestuser que deve ter permissão apenas para executar SFTP em um ambiente chroot e não deve ter permissão para executar o SSH.
O seguinte comando cria guestuser, atribui este usuário ao grupo sftpusers, faz / incoming como o diretório home, set / sbin / nologin como shell (o que não permitirá ao usuário ssh e obter acesso ao shell).
# useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# passwd guestuser
Verifique se o usuário foi criado corretamente.
# grep guestuser /etc/passwd
guestuser:x:500:500::/incoming:/sbin/nologin
Se você quiser modificar um usuário existente e torná-lo apenas um usuário do sftp e colocá-lo na jaula do sftp chroot, faça o seguinte:
# usermod -g sftpusers -d /incoming -s /sbin/nologin john
Em uma nota relacionada, se você tiver que transferir arquivos do Windows para o Linux, use qualquer um dos clientes sftp mencionados nesta lista dos 7 principais clientes do Sftp.
3. Configuração do subsistema sftp-server no sshd_config
Você deve instruir o sshd a usar o sftp interno para o sftp (em vez do sftp-server padrão).
Modifique o arquivo / etc / ssh / sshd_config e comente a seguinte linha:
#Subsystem sftp /usr/libexec/openssh/sftp-server
Em seguida, adicione a seguinte linha ao arquivo / etc / ssh / sshd_config
Subsystem sftp internal-sftp
Deveria ser assim:
# grep sftp /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
4. Especifique o diretório Chroot para um grupo
Você deseja colocar apenas determinados usuários (ou seja, usuários pertencentes ao grupo sftpusers) no ambiente chroot jail. Adicione as seguintes linhas no final de / etc / ssh / sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Acima:
- Corresponder sftpusers do grupo - Isso indica que as linhas a seguir ser correspondido apenas para usuários que pertencem a sftpusers de grupo
- ChrootDirectory / sftp /% u - Esse é o caminho que será usado para chroot após o usuário ser autenticado. % u indica o usuário. Assim, para john, isso será / sftp / john.
- ForceCommand internal-sftp - Isso força a execução do interno-sftp e ignora qualquer comando que são mencionados no arquivo ~ / .ssh / rc.
5. Crie o diretório pessoal do sftp
Como especificamos / sftp como ChrootDirectory acima, crie esse diretório (que é equivalente ao seu diretório / home típico).
# mkdir /sftp
Agora, sob / sftp, crie os diretórios individuais para os usuários que fazem parte do grupo sftpusers. ou seja, os usuários que terão permissão apenas para executar o sftp e estarão em ambiente chroot.
# mkdir /sftp/guestuser
Assim, / sftp / guestuser é equivalente a / para o guestuser. Quando o guestuser se desloca para o sistema e executa "cd /", eles verão apenas o conteúdo dos diretórios em "/ sftp / guestuser" (e não o real / do sistema). Esse é o poder do chroot.
Portanto, sob este diretório / sftp / guestuser, crie qualquer subdiretório que você queira que o usuário veja. Por exemplo, crie um diretório de entrada onde os usuários possam inserir seus arquivos.
# mkdir /sftp/guestuser/incoming
6. Permissão Apropriada de Configuração
Para que o chroot funcione corretamente, é necessário verificar se as permissões apropriadas estão configuradas corretamente no diretório que você acabou de criar.
Defina o proprietário para o usuário e agrupe-o ao grupo de usuários intermediários, conforme mostrado abaixo.
# chown guestuser:sftpusers /sftp/guestuser/incoming
A permissão será semelhante à seguinte para o diretório de entrada.
# ls -ld /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
A permissão será semelhante à seguinte para o diretório / sftp / guestuser
# ls -ld /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
# ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
7. Reinicie o sshd e teste o SFTP do Chroot
Reinicie o sshd:
# service sshd restart
Teste o ambiente chroot sftp. Como você vê abaixo, quando o gusetuser faz sftp, e faz "cd /", eles só verão o diretório de entrada.
# sftp [email protected]
guestuser@thegeekstuff's password:
sftp> pwd
Remote working directory: /incoming
sftp> cd /
sftp> ls
incoming
Quando o guestuser transfere os arquivos para o diretório / incoming do sftp, eles estarão realmente localizados no diretório / sftp / guestuser / incoming no sistema.