Então, eu estou em uma instalação do VPS - CentOS Linux. Eu tenho vsFTPd no servidor. Atualmente, tenho acesso SFTP ao servidor via meu usuário root, mas agora estou tentando criar um novo usuário com acesso FTP a um diretório específico apenas no servidor, fiz o seguinte:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
O que estou tentando fazer é criar o usuário SOMENTE para ter acesso /var/www/mydomain.com
- observei que o usuário efetua login corretamente na pasta correta, no entanto, o usuário pode procurar "voltar" para outros diretórios. Eu quero que o usuário fique na pasta específica e não consiga "navegar" de volta .
Alguma ideia?
Encontrei artigos diferentes sobre chrooting, mas simplesmente não consegui usá-lo nas etapas incluídas acima.
Respostas:
É bem simples
Você deve adicionar a seguinte opção no arquivo vsftpd.conf
A documentação dentro do arquivo de configuração é auto-explicativa:
Isso significa que o usuário terá apenas acesso à pasta que você configurou como HOME do usuário. Abaixo, tenho um exemplo de uma entrada de senha do usuário:
Defina o diretório inicial do usuário com o seguinte comando
Nota: No meu exemplo, este usuário também é um usuário válido para algumas tarefas agendadas no Linux. Se você não tiver essa necessidade, altere o shell do usuário para em
/sbin/nologin
vez debash
.fonte
/etc/passwd
arquivo, que representa um usuário chamado upload_ftp, 1001: 1001 é o ID do usuário e o ID do grupo, / var / www / sites é o diretório inicial do usuário (e o parâmetro do qual o vsftpd lê) e / bin / bash, o shell. Provavelmente o que está faltando no seu caso é um diretório home para o usuário, e que poderia ser resolvido com o seguinte comando:usermod -d /var/www/mydomain.com <username>
. Cheers :)Depois de alterar sua configuração para incluir
chroot_local_user=YES
Você pode alterar o shell do usuário para,
/usr/sbin/nologin
para que, se a senha vazar, você reduza alguns riscos (defina também o diretório inicial). O shell também precisa ser listado/etc/shells
ou a autenticação falhará.https://security.appspot.com/vsftpd/FAQ.txt
fonte
Aqui estão as etapas para configurar um usuário e permitir que o usuário acesse apenas via FTP (ou seja, sem SSH) e também limite o acesso a um diretório específico (home do usuário) no proftpd :
Adicionar novo usuário:
adduser newusername
Configurar senha:
passwd newusername
Modifique o diretório inicial do usuário do padrão para uma nova pasta:
usermod -d /target/directory username
Editar
shells
arquivo:vi /etc/shells
e adicione/dev/null
no finalModifique a
newusername
entrada nopasswd
arquivo:vi /etc/passwd
para adicionar/./
antes donewusername
para que a entrada fique assim:newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null
Detalhes para as etapas 4 e 5 aqui:
Edite o
/etc/proftpd/proftpd.conf
arquivo e remova o comentário da linhaDefaultRoot ~
fonte
Defina as permissões da pasta raiz como 711 com sua conta root.
fonte
Execute este comando:
fonte