Como criar um usuário FTP com acesso / dir / específico somente em uma instalação Centos / linux

37

Então estou em uma instalação VPS - CentOS Linux. Eu tenho vsFTPd no servidor. Atualmente, tenho acesso SFTP ao servidor através do meu usuário root, mas agora estou tentando criar um novo usuário com acesso FTP a um diretório específico somente 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 eu estou tentando fazer é criar o usuário para APENAS ter acesso a /var/www/mydomain.com - observei que o usuário faz login corretamente na pasta correta, no entanto o usuário pode navegar " voltar "para outros diretórios. Eu quero que o usuário fique na pasta específica e não consiga "navegar" de volta .

Alguma idéia?

Encontrei artigos diferentes no chrooting, mas simplesmente não consegui usá-lo nas etapas incluídas acima.

    
por user1231561 16.07.2013 / 15:53

5 respostas

31

É bem simples.

Você tem que adicionar a seguinte opção no arquivo vsftpd.conf

chroot_local_user=YES

A documentação dentro do arquivo de configuração é autoexplicativa:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Isso significa que o usuário só terá acesso na pasta que você configurou como HOME do usuário. Abaixo, eu tenho um exemplo de uma entrada passwd de usuário:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Defina o diretório inicial do usuário com o seguinte comando

usermod -d /var/www/my.domain.example/ exampleuser

Nota: No meu exemplo, este usuário também é um usuário válido para algumas tarefas agendadas dentro do Linux. Se você não tiver essa necessidade, altere o shell do usuário para /sbin/nologin em vez de bash .

    
por 16.07.2013 / 16:09
5

Depois de alterar sua configuração para incluir chroot_local_user=YES

Você pode alterar o shell do usuário para /usr/sbin/nologin , de modo que, se a senha vazar, você terá atenuado algum risco (defina também o diretório pessoal)

usermod -d /var/www/my.domain.example -s /usr/sbin/nologin exampleuser

-d, --home HOME_DIR The user’s new login directory. If the -m option is given the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist.

-s, --shell SHELL The name of the user’s new login shell. Setting this field to blank causes the system to select the default login shell.

link

    
por 15.10.2014 / 17:27
4

Aqui estão as etapas para configurar um usuário e permitir que o usuário acesse somente via FTP (ou seja, sem SSH) e também limitar o acesso a um diretório específico (home do usuário) em proftpd :

  1. Adicionar novo usuário: adduser newusername

  2. Definir senha: passwd newusername

  3. Modifique o diretório inicial do usuário do padrão para uma nova pasta:

    usermod -d /target/directory username

  4. Edite o arquivo shells : vi /etc/shells e adicione /dev/null no final

  5. Modifique a entrada newusername no arquivo passwd : vi /etc/passwd para adicionar /./ antes do newusername , para que a entrada tenha esta aparência:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Detalhes para os passos 4 e amp; 5 aqui:

  6. Edite o arquivo /etc/proftpd/proftpd.conf e descomente a linha DefaultRoot ~

por 21.07.2015 / 16:28
-4

Defina as permissões da pasta raiz como 711 com sua conta root.

    
por 19.05.2014 / 19:55
-4

Execute este comando:

useradd -d ftp_user:chown 711 /etc/init.d/
    
por 18.10.2014 / 07:46