Crie um novo usuário vsftpd e bloqueie para (especificar) o diretório home / login


31

Preciso periodicamente conceder acesso temporário e limitado a vários diretórios em um servidor Linux CentOS com o vsftp instalado.

Eu criei um usuário usando useradd [user_name]e dei a ele uma senha usando passwd [password].

Criei um diretório /var/ftpe vinculo-o ao diretório ao qual desejo limitar o acesso.

O que mais eu preciso fazer especificamente para garantir que, quando esse usuário fizer login no FTP, ele só tenha acesso a esse diretório?


Desculpe, mas você já considerou verificar o vsftpd.conf?
jirib

Sim. Eu tenho. Ele não me diz como instruir um usuário específico a fazer login em um diretório específico ...?
Zigojacko 9/10

11
Certo? opção chroot_list_enable ... Ou você deseja substituir o diretório diferente de $ HOME?
jirib

11
Quero saber como declarar um diretório inicial específico para um usuário específico. Eu ativei chroot_list_enablee criei /etc/vsftpd/chroot_list. Eu simplesmente não sabia o que fazer a seguir.
Zigojacko 9/10

Então usermod para alterar o nome do usuário.
jirib

Respostas:


44

Resposta completa que resolveu minha pergunta para outras pessoas que estão após um passo a passo ...

Instale vsftpdusando isso como um guia .

  • Crie usuário com useradd [user_name].
  • Crie a senha do usuário com passwd [user_name]. (Você será solicitado a especificar a senha).
  • Crie um diretório FTP /var/ftpe, em seguida, vincule-o ao diretório 'home' com o qual você deseja especificar esse usuário mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Altere o diretório inicial do usuário com usermod -d /var/ftp/custom_name/ user_name

    Em /etc/vsftpd/vsftpd.conf, verifique se todos os itens a seguir estão definidos: -

    • chroot_local_user = SIM
    • chroot_list_enable = SIM
    • chroot_list_file = / etc / vsftpd.chroot_list

Apenas liste os usuários no vsftpd.chroot_listarquivo se desejar que eles tenham acesso total a qualquer lugar do servidor. Ao não listá-los nesse arquivo, você está dizendo restringir todos os vsftpdusuários ao diretório inicial especificado.

Em outras palavras (para referência): -

  1. significa que, por padrão, TODOS os usuários são chrootados, exceto os usuários do arquivo ...
    • chroot_local_user = SIM
    • chroot_list_enable = SIM
  2. significa que, por padrão, APENAS usuários no arquivo são chrootados ...
    • chroot_local_user = NO
    • chroot_list_enable = SIM

Por que não definir o diretório inicial desse usuário diretamente /var/www/vhosts/domain.com/? Existe algum problema com isso (como riscos potenciais)?
precisa saber é

2
Acabei de descobrir que o vsftp parece proibir conceder a um usuário ftp permissões de gravação no nível superior do chroot por motivos de segurança (mas não tenho 100% de certeza). Portanto, esse pode ser um motivo para ter esse "indireção", a fim de conceder ao usuário do ftp acesso de gravação a uma pasta específica, sem permitir a visualização de nenhuma pasta irmão (o que seria o caso se você simplesmente configurasse a casa dele um nível acima, o que evita o problema mencionado). (veja ubuntuforums.org/… )
leemes

2
@zigojacko seu usuário vê apenas o diretório inicial atribuído? Para mim, isso padroniza o usuário para o diretório atribuído, mas eles ainda podem ver outras pastas e bisbilhotar todo o caminho até a raiz, embora com apenas acesso de leitura.
precisa saber é o seguinte

11
Esta resposta, em combinação com unix.stackexchange.com/questions/208960/…, foi a resposta completa para mim. Acabei criando um usuário em um grupo e limitando o acesso do grupo ao diretório desejado.
GraehamF

10

Para mim, não funcionou mesmo depois do exposto. Já havia um local_root definido em um diretório e, o que quer que eu faça, o diretório do usuário não está preso. Finalmente, é trabalhado depois de apenas alterado

chroot_local_user = SIM

E seguindo o procedimento

  1. vi /etc/vsftpd.conf
  2. Adicione a linha 'user_config_dir = / etc / vsftpd_user_conf' (sem aspas)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi nome_do_usuário;
  6. Digite a linha 'local_root = / srv / ftp / user_name'

Apenas meus dois centavos, se mais alguém tivesse o mesmo problema.


Eu segui este procedimento para alterar o diretório raiz do vsftpd, incluindo as etapas adicionais do gnaanaa. Infelizmente, ainda não funciona. O Filezilla reporta 530 Login incorreto. O usuário e a senha estão de acordo com o procedimento acima (user_name). Criei um usuário de teste ftp2 e defini sua senha. O logon normal do Filezilla usa esse nome de usuário e senha. Também defini o diretório raiz como somente leitura e criei um diretório de nível inferior com permissões de gravação de acordo com este post. Estou usando o Ubuntu 16.04, se isso faz alguma diferença.
tim11g

Estou usando o Ubuntu 16.04, se isso faz alguma diferença, @gnaanaa. Também achei estranho que não houvesse diretório ftp em / var. Então eu tive que criar / var / ftp e depois / var / ftp / user_name. code<br/> Resposta: 220 (vsFTPd 3.0.3) <br/> Comando: USER ftp2 <br/> Resposta: 331 Especifique a senha. <br/> Comando: PASS ***** <br/> Resposta .: 530 Entrada incorreta <br/> erro: erro crítico: não foi possível conectar ao servidor <br/>code
tim11g

Em primeiro lugar, veja por que você não pôde acessar o servidor. Você pode depurar o problema com a prisão somente após o login com êxito. Felicidades.
gnaanaa

O vsftp usa um usuário / senha diferente em comparação com as contas na máquina? Descobri que as senhas smb precisavam ser definidas separadamente com smbpasswd -a. Vsftpd funciona da mesma maneira?
tim11g

Não, é a conta de usuário do sistema. verifique esta resposta: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
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.