Limite el acceso FTP solo a / var / www con vsftpd

41

Estoy ejecutando vsftpd como servidor ftp en mi linux (rasbian), inicio sesión en la máquina como usuario root.

Me gustaría seguir bloqueado para usar solo / var / www, ¿cómo puedo configurar vsftpd conf para lograrlo?

Badr Hari
fuente
1
Verifique las chroot opciones vsftpd.confy cree un usuario separado para él cuyo homedir esté configurado /var/www.
jirib

Respuestas:

65

Método 1: cambiar el directorio de inicio del usuario

Asegúrese de que exista la siguiente línea

chroot_local_user=YES

Establezca el directorio HOME del usuario en /var/www/, si desea cambiar para un usuario existente, puede usar:

usermod --home /var/www/ username

luego establezca el permiso requerido en /var/www/

Método 2: uso user_sub_token

Si no desea cambiar el directorio de inicio del usuario, puede usar:

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

Acerca de user_sub_token:

Genere automáticamente un directorio de inicio para cada usuario virtual, basado en una plantilla. Por ejemplo, si el directorio de inicio del usuario real especificado a través de guest_username es / ftphome / $ USER, y user_sub_token se establece en $ USER, cuando la prueba de usuario virtual inicie sesión, terminará (generalmente chroot () 'ed) en el directorio / ftphome / test. Esta opción también tiene efecto si local_root contiene user_sub_token.

Crear directorio y configurar permisos:

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

Una vez que reinicie vsftpdy pruebe su configuración.

Ejemplo de salida exitosa:

[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.
Rahul Patil
fuente
2
Tenga en cuenta que puede tener un sufijo después $USERpara local_root, como /home/$USER/ftp(que hará que los usuarios pasen al ftpsubdirectorio de su directorio de inicio).
Benoit Duffez
Tenga en cuenta los comentarios en las preguntas frecuentes de vsftp con respecto al chrooting a la carpeta que el usuario puede escribir local_root.
Thomas Urban
¿Dónde confirmar que existe "chroot_local_user = YES"?
El de
4

Puedes hacerlo:

usermod --home /var/www/ username
Zeev Cohen
fuente
55
Las respuestas de una o dos líneas a menudo se consideran de baja calidad. Considere expandir su publicación con alguna explicación de lo que hace su recomendación junto con enlaces o documentación que sugiera la capacidad de su recomendación para resolver el problema.
HalosGhost
2

Usé la sugerencia de Rahul Patil anterior:

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

Pero no podía entender por qué solo podía iniciar sesión con un usuario. Luego descubrí que no podíamos hacer un chroot a un directorio raíz (para este caso /home/$USER/www-data) que tiene acceso de escritura. Entonces elimino el acceso de escritura con:

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

NOTA: cambie $USERcon su usuario.

Rizal Rahman
fuente
1

Verifique las chrootopciones vsftpd.confy cree un usuario separado para él cuyo homedir esté configurado /var/www.

jirib
fuente
Soy consciente de eso, crearé un usuario separado. Tal vez debería rediseñar mi pregunta, entonces, ¿cómo puedo limitar a un usuario a una ruta separada solo
Badr Hari
Use sftp de OpenSSH. Vea man sshd_config para internal-sftp, luego 'ForceCommand' y vea 'ChrootDirectory'. El nuevo OpenSSH también agregó la opción para que el servidor sftp cambie a una ruta específica, por lo que en combinación con ChrootDirectory puede hacer: chroot -> / path -> destination -> 'onlyhere' = / chroot / onlyhere
jirib