Je dois pouvoir ajouter un utilisateur virtuel à vsftpd qui n'a accès qu'à un sous-dossier. La raison pour laquelle je souhaite utiliser des utilisateurs virtuels est que je ne souhaite avoir qu'un seul utilisateur réel sur le serveur.
La structure FTP est:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
Le compte principal a accès au dossier www et à tous les sous-répertoires et je souhaite ajouter un utilisateur virtuel qui peut avoir accès au sous- dossier1 et uniquement au sous- dossier1
Pour éviter une certaine confusion, j'exigerais également qu'un autre utilisateur accède à sub_folder3 et uniquement à sub_folder3 . Mon point étant que je dois être en mesure de choisir quel dossier et sous-dossiers utilisateur par utilisateur.
J'ai trouvé des moyens d'ajouter des utilisateurs pour voir l'intégralité de la structure ou configurer les dossiers nommés par l'utilisateur, qui ne me sont d'aucune utilité.
J'ai trouvé une question similaire publiée ici:
Comment configurer VSFTPD pour plusieurs utilisateurs, y compris l'ajout de répertoires spécifiques
mais il recommande proftpd
que je pensais être généralement moins sûr.
Ou ai-je manqué le point ici?
la source
Réponses:
Avec un peu de jeu, j'ai réussi à trouver une solution semi (pas parfaite mais assez bonne)
en utilisant la réponse 2707974 et les informations que j'ai obtenues ailleurs où j'ai pu obtenir ce dont j'ai besoin.
Vous devez d'abord installer vsftp et PAM
Modifiez /etc/vsftpd.conf
puis collez ce qui suit
Modifier à vos besoins exacts, le bit le plus important pour les utilisateurs virtuels est tout après le commentaire des paramètres de l'utilisateur virtuel
Création d'un utilisateur
Vous pouvez soit utiliser une base de données ou
htpasswd
j'ai trouvéhtpasswd
plus rapide et plus facile à utiliser.créer un annuaire pour stocker vos utilisateurs
l'ajout d'utilisateurs supplémentaires omettent simplement la
-c
J'ai seulement réussi à le faire fonctionner en utilisant CRYPT qui limite à 8 caractères pour utiliser plus de 8 caractères utilisez openssl pour générer un hachage et un tuyau compatibles directement dans htpasswd
Une fois vos utilisateurs créés, vous pouvez maintenant modifier votre fichier de configuration PAM
et supprimez tout ce qui se trouve dans ce fichier et remplacez-le par ce qui suit
Cela permettra la connexion pour vos utilisateurs virtuels définis dans
/etc/vsftpd/ftpd.passwd
et désactivera les utilisateurs locauxEnsuite, nous devons ajouter un utilisateur à utiliser par ces utilisateurs virtuels. Ces utilisateurs n'auront pas accès au shell et seront appelés
vsftpd
l'utilisateur doit correspondre
guest_username=vsftpd
dans le fichier conf vsftpdDéfinition de l'accès au répertoire
La ligne importante ici est la suivante
cela signifie que lorsque vous vous
user1
connectez, il recherchera le fichier suivantce fichier identique au
vsftpd.conf
afin que vous puissiez définir un nouveaulocal_root
revenons à la question à laquelle nous voulons
user1
seulement avoir accèsvar/www/website_name1/sub_folder1
, nous devons donc créer levsftpd_user_conf
dossier:Créez maintenant le fichier utilisateur:
et entrez la ligne suivante
Redémarrez maintenant vsftp
vous devriez maintenant pouvoir vous connecter en tant qu'utilisateur1 qui ne pourra voir
var/www/website_name1/sub_folder1
que les dossiers et fichiers qu'il contient.Voilà, vous pouvez maintenant ajouter autant d'utilisateurs que vous le souhaitez et limiter leur accès au dossier que vous souhaitez.
important de se rappeler que si vous ne créez pas de fichier de configuration utilisateur, il sera par défaut dans le dossier var / www en tant que root (dans l'exemple ci-dessus)
Si le sous-dossier est destiné à être modifiable par l'utilisateur, il peut être nécessaire de changer le propriétaire du sous-dossier partagé:
la source
Essayez avec ce manuel. Peut-être fonctionnera-t-il pour vous.
Comment faire
Installer vsftpd et une bibliothèque PAM
Modifier
/etc/vsftpd.conf
et/etc/pam.d/vsftpd
Créez des comptes utilisateur avec des répertoires personnalisés (dans / var / www / par exemple)
Définir des répertoires avec la bonne
chmod
etchown
Créer un utilisateur administrateur avec un accès complet au serveur
vsftpd
(Deamon FTP très sécurisé) etlibpam-pwdfile
créer des utilisateurs virtuelsJe voulais créer des utilisateurs FTP mais je ne voulais pas ajouter d'utilisateurs locaux Unix (pas d'accès shell, pas de répertoire personnel, etc.). Un PAM (Pluggable Authentication Modules) vous aidera à créer des utilisateurs virtuels.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Vous devez d'abord sauvegarder le fichier d'origine
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Ensuite, créez-en un nouveau
sudo vim /etc/vsftpd.conf
Copiez et collez les lignes suivantes. Le fichier ne doit contenir que ces lignes:
Pour enregistrer un utilisateur que vous utilisez
htpasswd
, je suppose que vousapache2
travaillez sur votre serveur. Créez unvsftpd
dossier puis placez-y les fichiers de configuration.sudo mkdir /etc/vsftpd
puis
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c signifie que nous allons créer le fichier s'il n'existe pas encore -d force MD5, vous en avez besoin sur Ubuntu 12.04, utilisez-le toujours
La commande vous demandera un mot de passe.
Si vous souhaitez ajouter de nouveaux utilisateurs par la suite:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Encore une fois, vous devez sauvegarder le fichier d'origine
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
et en créer un nouveau
sudo vim /etc/pam.d/vsftpd
Copiez et collez ces 2 lignes (cela devrait être le seul contenu). J'insiste seulement sur ces 2 lignes, j'ai perdu beaucoup de temps à garder les originaux et je les ai juste ajoutés.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Vous pouvez vérifier qu'il a été créé avec la commande id: id vsftpd. Nous définissons l'utilisateur avec le shell / bin / false en raison du paramètre check_shell (même si vous ne l'utilisez pas). Lorsque l'utilisateur final se connecte au serveur FTP, ils seront utilisés pour les droits et la propriété:
chmod
etchown
.vsftpd
La manière courante utilise init.d comme tous les démons
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
Selon la configuration, tous les utilisateurs seront placés dans ce dossier: / var / www / user1.
Vous devez les créer avec des droits particuliers: le dossier racine ne peut pas être accessible en écriture!
Remarque: l'utilisateur ne peut pas créer de fichiers ou de dossiers dans le répertoire racine.
Dans
vsftpd.conf
cechroot_local_user=YES
cas, l'utilisateur ne peut rien voir en dehors de son dossier. Pour lui, le serveur ressemble à ceci:Il suffit donc d'exécuter ces commandes:
Le
/var/www/user1
dossier doit exister ou la connexion échouera.Pour le moment, vous pouvez essayer de vous connecter avec votre FTP
Pour créer un utilisateur administrateur, nous devons enregistrer un nouvel utilisateur avec
htpasswd
.Avant de le faire, je vous conseille de vérifier dans le
/etc/ftpusers
fichier qui définit certains utilisateurs qui ne sont pas autorisés à se connecter avec ftp. Je pense que c'est uniquement pour les utilisateurs locaux et non les utilisateurs virtuels, mais au cas où ne choisissez pas un nom contenu dans ce fichier.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Maintenant, nous devons ajouter une nouvelle ligne dans
/etc/vsftpd.conf
chroot_list_enable=YES
Cela signifie que votre utilisateur sera placé dans son dossier (comme une prison) SAUF les utilisateurs dans / etc /
vsftpd.chroot_list
Créons ce fichier et ajoutons notre utilisateur, le fichier est une simple ligne contenant "theadmin". Ajoutez un utilisateur par ligne. Cela signifie que vous N'AVEZ PAS besoin de créer un
/var/www/theadmin
dossier, l'utilisateur se connectera et démarrera/home/vsftpd
.Redémarrez le serveur et vous avez terminé!
la source
oui, vous pouvez, et pour plus de flexibilité, créez un répertoire et un fichier userconfig,
mkdir /var/www/userconfs
ou tout ce que vous souhaitez changer le nom userconfs, puis créez un fichier spécifiqueà l'intérieur du type,
local_root=/var/www
(ou tout ce que vous voulez accéder par dir)guest_username=www-data
(le propriétaire ubuntu du fichier top editaprès la mise à jour, vous vsftpd.conf en ajoutant
user_config_dir=/var/www/userconfigs
(ou quoi que vous l'ayez remplacé, ce compte accédera à tout sdir yo spécifié)la source