Necesito poder agregar usuarios virtuales a vsftpd que solo tengan acceso a una subcarpeta. La razón por la que quiero usar usuarios virtuales es que solo quiero tener 1 usuario real en el servidor.
La estructura FTP es:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
La cuenta principal tiene acceso a la carpeta www y a todos los subdirectorios y quiero agregar un usuario virtual que pueda tener acceso a sub_folder1 y solo sub_folder1
También para evitar cierta confusión, también requeriría que otro usuario acceda a sub_folder3 y solo a sub_folder3 . Mi punto es que necesito poder elegir qué carpeta y subcarpetas usuario por usuario.
He encontrado formas de agregar usuarios para ver la estructura completa o configurar carpetas con nombre de usuario, las cuales no me sirven.
Encontré una pregunta similar publicada aquí:
Cómo configurar VSFTPD para múltiples usuarios, incluida la adición de directorios específicos
pero recomienda proftpd
que, aunque en general, era menos seguro.
¿O he perdido el punto aquí?
fuente
Respuestas:
Con un poco de juego he logrado encontrar una semi solución (no perfecta pero lo suficientemente buena)
utilizando 2707974 respuestas e información que obtuve en otro lugar donde pude obtener lo que necesito.
Primero necesitas vsftp y PAM instalados
Editar /etc/vsftpd.conf
luego pegue lo siguiente
Edite según sus necesidades exactas, lo más importante para los usuarios virtuales es todo después de que la configuración del usuario virtual comente
Crear usuario
Puede usar una base de datos o
htpasswd
me parecióhtpasswd
más rápido y fácil de usar.crea un directorio para almacenar tus usuarios
agregar usuarios adicionales simplemente omita el
-c
Solo he logrado que funcione con CRYPT, que limita a 8 caracteres para usar más de 8 caracteres, utiliza openssl para generar un hash compatible y canalizar directamente en htpasswd
Una vez que se crean sus usuarios, ahora puede cambiar su archivo de configuración PAM
y elimine todo lo que está dentro de este archivo y reemplácelo con lo siguiente
Esto habilitará el inicio de sesión para los usuarios virtuales definidos en
/etc/vsftpd/ftpd.passwd
y deshabilitará a los usuarios locales.A continuación, necesitamos agregar un usuario para que lo usen estos usuarios virtuales. Estos usuarios no tendrán acceso al shell y serán llamados
vsftpd
el usuario debe coincidir
guest_username=vsftpd
en el archivo de configuración vsftpdDefinición de acceso al directorio
La línea importante aquí es la siguiente
Esto significa que cuando
user1
inicie sesión, buscará el siguiente archivoeste archivo es igual que el
vsftpd.conf
para que pueda definir un nuevolocal_root
volviendo a la pregunta
user1
a la que solo queremos tener accesovar/www/website_name1/sub_folder1
, por lo que debemos crear lavsftpd_user_conf
carpeta:Ahora cree el archivo de usuario:
e ingrese la siguiente línea
Ahora reinicie vsftp
ahora debería poder iniciar sesión como usuario1, que solo podrá ver
var/www/website_name1/sub_folder1
cualquier carpeta y archivo que contenga.Eso es todo, ahora puede agregar tantos usuarios como desee y limitar su acceso a la carpeta que desee.
Es importante recordar que si no crea un archivo de configuración de usuario, la carpeta var / www se configurará como raíz (en el ejemplo anterior)
Si el usuario pretende modificar la subcarpeta, puede ser necesario cambiar el propietario de la subcarpeta compartida:
fuente
Prueba 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 el correcto
chmod
ychown
Crear un usuario administrador con acceso completo al servidor
vsftpd
(Very Secure FTP Deamon) ylibpam-pwdfile
crear usuarios virtualesQuería crear usuarios FTP pero no quería agregar usuarios locales de Unix (sin acceso a shell, sin directorio de inicio, etc.). Un PAM (Módulos de autenticación conectables) lo ayudará a crear usuarios virtuales.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Primero debes hacer una copia de seguridad del archivo original
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Luego crea uno nuevo
sudo vim /etc/vsftpd.conf
Copie y pegue las siguientes líneas. El archivo SOLO debe contener estas líneas:
Para registrar un usuario que usa
htpasswd
, así que supongo que tieneapache2
trabajando en su servidor. Cree unavsftpd
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 necesitas en ubuntu 12.04, solo úsalo siempre
El comando le pedirá una contraseña.
Si desea agregar nuevos usuarios después:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Nuevamente, debe hacer una copia de seguridad del archivo original
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
y crear 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 acabo de agregarlos.
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 shell / bin / false debido al parámetro check_shell (incluso si no lo usa). Cuando el usuario final se conecta al servidor FTP, se utilizarán para obtener derechos y propiedad:
chmod
ychown
.vsftpd
La forma común es usar init.d como todos los deamon
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
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 puede ser editable!
Nota: el usuario no puede crear archivos o carpetas en el directorio raíz.
En lo
vsftpd.conf
que tenemos,chroot_local_user=YES
el usuario no puede ver nada fuera de su carpeta. Para él, el servidor se ve así:Así que solo ejecuta estos comandos:
La
/var/www/user1
carpeta TIENE QUE existir o la conexión fallará.Ahora puedes intentar conectarte con tu FTP
Para crear un usuario administrador necesitamos registrar un nuevo usuario con
htpasswd
.Antes de hacerlo, le aconsejaré que verifique el
/etc/ftpusers
archivo que define a 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 no elige 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 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 una
/var/www/theadmin
carpeta, el usuario iniciará sesión y comenzará/home/vsftpd
.Reinicie el servidor y listo.
fuente
sí, puede, y por flexibilidad, cree un directorio y un archivo de configuración de usuario,
mkdir /var/www/userconfs
o lo que sea que desee cambiar el nombre de la configuración de usuario, luego cree un archivo específicotipo interno,
local_root=/var/www
(o lo que quiera acceder por dir)guest_username=www-data
(el propietario de ubuntu de la edición superior del archivodespués de actualizar vsftpd.conf agregando
user_config_dir=/var/www/userconfigs
(o lo que sea que lo haya reemplazado, esta cuenta accederá a cualquier sdir yo especificado)fuente