Limitar o acesso FTP apenas ao / var / www com vsftpd

38

Estou executando o vsftpd como servidor ftp no meu linux (rasbian), faço login na máquina como usuário root.

Eu gostaria de continuar bloqueado para usar somente / var / www, como posso configurar o vsftpd conf para realizá-lo?

    
por Badr Hari 11.10.2013 / 12:46

4 respostas

62

Método 1: Alterando o diretório pessoal do usuário

Certifique-se de que a linha a seguir exista

chroot_local_user=YES

Defina o diretório HOME do usuário como /var/www/ , se você quiser alterar o usuário existente, poderá usar:

usermod --home /var/www/ username

defina a permissão necessária em /var/www/

Método 2: usar user_sub_token

Se você não quiser alterar o diretório pessoal do usuário, use:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

Sobre user_sub_token :

Automatically generate a home directory for each virtual user, based on a template. For example, if the home directory of the real user specified via guest_username is /ftphome/$USER, and user_sub_token is set to $USER, then when virtual user test logs in, he will end up (usually chroot()'ed) in the directory /ftphome/test. This option also takes affect if local_root contains user_sub_token.

Crie um diretório e configure as permissões:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Depois de reiniciar o vsftpd e testar sua configuração.

Exemplo de saída de sucesso:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.
    
por 11.10.2013 / 21:34
4

Você pode fazer isso:

usermod --home /var/www/ username
    
por 25.11.2014 / 15:45
2

Eu usei a sugestão de Rahul Patil acima:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Mas não consegui entender por que só consegui fazer login com um usuário. Então eu descobri que não poderíamos chroot para um diretório raiz (para este caso, /home/$USER/www-data ) que tem um acesso de gravação. Então eu removo o acesso de gravação com:

# chmod a-w /home/$USER/www-data

OBSERVAÇÃO: altere $USER com seu usuário. Espero que isso possa ajudar.

    
por 06.07.2015 / 13:43
1

Verifique as opções chroot em vsftpd.conf e crie um usuário separado para ele cujo homedir esteja definido como /var/www .

    
por 11.10.2013 / 12:58