Saltar al contenido

¿Cómo configurar usuarios virtuales para vsftpd con acceso a un subdirectorio específico?

Te damos la bienvenida a proyecto online, en este lugar hallarás la resolución a lo que necesitas.

Solución:

Con un poco de juego, me las arreglé para encontrar una solución semi (no perfecta, pero lo suficientemente buena)

usando 2707974 la respuesta y la información que obtuve en otros lugares donde he podido obtener lo que necesito.

Primero necesita vsftp y PAM instalados

apt-get install vsftpd libpam-pwdfile

Edite /etc/vsftpd.conf

nano /etc/vsftpd.conf

luego pega lo siguiente

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd

Edite según sus necesidades exactas, lo más importante para los usuarios virtuales es todo después del comentario de la configuración del usuario virtual

Crear usuario

Puede utilizar una base de datos o htpasswd encontré htpasswd más rápido y más fácil de usar.

hacer un directorio para almacenar sus usuarios

mkdir /etc/vsftpd
htpasswd -cd /etc/vsftpd/ftpd.passwd user1

agregar usuarios adicionales simplemente omita el -c

htpasswd -d /etc/vsftpd/ftpd.passwd user2

Solo logré que funcione usando CRYPT, que se limita a 8 caracterespara usar más de 8 caracteres, use openssl para generar un hash compatible y canalice directamente a htpasswd

htpasswd -c -p -b /etc/vsftpd/ftpd.passwd user1 $(openssl passwd -1 -noverify password)

Una vez que haya creado sus usuarios, ahora puede cambiar su archivo de configuración PAM

nano /etc/pam.d/vsftpd

y elimine todo dentro de este archivo y reemplácelo con lo siguiente

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

Esto permitirá el inicio de sesión para sus usuarios virtuales definidos en /etc/vsftpd/ftpd.passwd y deshabilitará a los usuarios locales

A continuación, debemos agregar un usuario para que lo utilicen estos usuarios virtuales. Estos usuarios no tendrán acceso al shell y serán llamados vsftpd

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

el usuario debe coincidir guest_username=vsftpd en el archivo conf vsftpd

Definición del acceso al directorio

La línea importante aquí es la siguiente

user_config_dir=/etc/vsftpd_user_conf

esto significa que cuando user1 inicia sesión buscará el siguiente archivo

/etc/vsftpd_user_conf/user1

este archivo es el mismo que el vsftpd.conf para que puedas definir una nueva local_root

volviendo a la pregunta que queremos user1 solo tener acceso a var/www/website_name1/sub_folder1, entonces necesitamos crear el vsftpd_user_conf carpeta:

mkdir /etc/vsftpd_user_conf

Ahora crea el archivo de usuario:

nano /etc/vsftpd_user_conf/user1

e ingrese la siguiente línea

local_root=/var/www/website_name1/sub_folder1

Ahora reinicie vsftp

service vsftpd restart

ahora debería poder iniciar sesión como usuario1, que solo podrá ver
var/www/website_name1/sub_folder1 y cualquier carpeta y archivo que contenga.

Eso es todo, ahora puede agregar tantos usuarios como desee y limitar su acceso a cualquier carpeta que desee.

Es importante recordar que si no crea un archivo de configuración de usuario, se establecerá de forma predeterminada en la carpeta var / www como raíz (en el ejemplo anterior).

Si la subcarpeta está destinada a ser modificada por el usuario, puede ser necesario cambiar el propietario de la subcarpeta compartida:

chown vsftpd:nogroup /var/www/website_name1/sub_folder1

Pruebe con este manual. Quizás funcione para ti.

Cómo hacerlo

Instale vsftpd y una biblioteca PAM

Editar /etc/vsftpd.conf y /etc/pam.d/vsftpd

Cree cuentas de usuario con directorios personalizados (en / var / www / por ejemplo)

Establecer directorios con la correcta chmod y chown

Cree un usuario administrador con acceso completo al servidor

  1. Instalar en pc vsftpd (Deamon FTP muy seguro) y libpam-pwdfile para crear usuarios virtuales

Quería crear usuarios de FTP, pero no quería agregar usuarios locales de Unix (sin acceso al shell, sin directorio de inicio, etc.). Un PAM (módulos de autenticación conectables) le ayudará a crear usuarios virtuales.

sudo apt-get install vsftpd libpam-pwdfile

  1. Editar vsftpd.conf

Primero necesita hacer una copia de seguridad del archivo original

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Entonces crea uno nuevo

sudo vim /etc/vsftpd.conf

Copia y pega las siguientes líneas. El archivo SOLO debe contener estas líneas:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
  1. Registrar usuarios virtuales

Para registrar un usuario que usa htpasswd, así que supongo que tienes apache2 trabajando en su servidor. Crear un vsftpd carpeta y luego coloque los archivos de configuración en ella.

sudo mkdir /etc/vsftpd

luego

sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1

-c significa que crearemos el archivo si aún no existe -d fuerza MD5, lo necesita en ubuntu 12.04, solo úselo siempre

El comando le pedirá una contraseña.

Si desea agregar nuevos usuarios posteriormente:

sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2

  1. Configurar PAM en /etc/pam.d/vsftpd

Nuevamente, necesita hacer una copia de seguridad del archivo original

sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

y crea uno nuevo

sudo vim /etc/pam.d/vsftpd

Copie y pegue estas 2 líneas (este debería ser el único contenido). Insisto solo en estas 2 líneas, perdí mucho tiempo guardando los originales y solo agregué estos.

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
  1. Crea un usuario local sin acceso al shell

sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Puede verificar que se haya creado con el comando id: id vsftpd. Definimos al usuario con el / bin /false shell debido al parámetro check_shell (incluso si no lo usa). Cuando el usuario final se conecta al servidor FTP, se utilizarán para derechos y propiedad:

chmod y chown.

  1. Reiniciar vsftpd

La forma común es usar init.d como todos los demonios

sudo /etc/init.d/vsftpd restart

sudo service vsftpd restart

  1. Crea directorios

Según la configuración, todos los usuarios se colocarán en esta carpeta: / var / www / user1.

Debe crearlos con derechos particulares: ¡la carpeta raíz no se puede escribir!

 / [root = /var/www/user1] => 555
www [ /var/www/user1/www ] => 755
docs [ /var/www/user1/docs ] => 755

Nota: el usuario no puede crear archivos o carpetas en el directorio raíz.

En vsftpd.conf tenemos chroot_local_user=YES por lo que el usuario no puede ver nada fuera de su carpeta. Para él, el servidor se ve así:

Así que simplemente ejecute estos comandos:

mkdir /var/www/user1`
chmod -w /var/www/user1
mkdir www/user1/www
chmod -R 755 /var/www/user1/www
chown -R vsftpd:nogroup /var/www/user1

los /var/www/user1 la carpeta TIENE QUE existir o la conexión fallará.

Ahora mismo puede intentar conectarse con su FTP

  1. Cree un usuario administrador para acceder a todo el servidor

Para crear un usuario administrador, necesitamos registrar un nuevo usuario con htpasswd.

Antes de hacerlo, le aconsejaré que consulte el /etc/ftpusers archivo que define ciertos usuarios a los que no se les permite conectarse con ftp. Creo que es solo para usuarios locales y no para usuarios virtuales, pero por si acaso no elija un nombre contenido en este archivo.

sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin

Ahora necesitamos agregar una nueva línea en /etc/vsftpd.conf

chroot_list_enable=YES

Esto significa que su usuario será colocado en su carpeta (como una cárcel) EXCEPTO los usuarios en / etc /

vsftpd.chroot_list

Creemos este archivo y agreguemos nuestro usuario, el archivo es una línea simple que contiene “theadmin”. Agregue un usuario por línea. Eso significa que NO necesita crear un /var/www/theadmin carpeta, el usuario iniciará sesión y comenzará en /home/vsftpd.

Reinicie el servidor y listo.

Finalizando este artículo puedes encontrar las crónicas de otros programadores, tú asimismo tienes el poder dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *