Informations générales:
J'utilise Serverpilot pour gérer mon serveur Ubuntu qui ne fournit aucun service FTP.
serverpilot
/srv/users/serverpilot/
/srv/users/serverpilot/apps/website/public/
.Ce que je veux:
Maintenant, j'aimerais avoir un compte FTP qui ne peut lire et écrire que dans ce répertoire: /srv/users/serverpilot/apps/website/public/ftpdir/
.
Ce que j'ai essayé:
Sudo apt-get install vsftpd
Sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser
(ce qui n’est probablement pas une bonne idée d’avoir un répertoire personnel d’un utilisateur dans le répertoire personnel d’un autre utilisateur)Sudo passwd ftpuser
Sudo vi /etc/vsftpd.conf
local_enable=YES
pour que ftpuser
puisse être utilisé comme login FTPwrite_enable=YES
l'utilisateur est capable d'écrirechroot_local_user=YES
ne peut accéder à rien en dehors de son répertoire personnelpam_service_name=ftp
parce que j'obtenais un erreur de 530 Login incorrecteSudo ufw allow 21/tcp
Les problèmes:
ftpuser
peuvent également être utilisés comme identifiant FTP. Je veux juste avoir 1 utilisateur ftp et ne pas permettre aux autres utilisateurs du système d'utiliser FTP.ftpuser
peut également utiliser SSH sur le serveur.553 error: could not create file
en essayant de télécharger un fichier. Pour résoudre ce problème, je suis tombé sur cette question: https://askubuntu.com/a/320186 mais ce n'est pas le cas pense que c'est la bonne façon, car le fichier devrait appartenir à l'utilisateur serverpilot
, et non à l'utilisateur ftpuser
. Le site Web exécuté sous l'utilisateur serverpilot
doit traiter les fichiers téléchargés.Comment je l'ai résolu auparavant:
Dans le passé, sur un autre serveur, j'avais changé la propriété du répertoire et après avoir ajouté ces options de configuration supplémentaires de vsftpd, cela fonctionnait enfin:
file_open_mode=0775
local_umask=022
allow_writeable_chroot=YES
pam_service_name=vsftpd
Mais sur ce serveur, j’ai eu des problèmes avec le traitement des fichiers téléchargés à cause de la propriété, c’est pourquoi j’utilise la fonction file_get_contents()
PHP pour obtenir les fichiers sur le Web au lieu de les y accéder directement. le serveur qui n'est pas si gentil.
La dernière question:
Comment puis-je simplement avoir 1 login ftp qui peut lire et écrire dans un répertoire du répertoire de base des utilisateurs où la propriété reste sur l'utilisateur d'où provient le répertoire de base?
local_enable = OUI est ce qui permet aux autres utilisateurs de se connecter. Vous devez plutôt ajouter votre utilisateur à la liste d'utilisateurs explicite.
du manuel:
local_enable
Controls whether local logins are permitted or not. If enabled, normal user accounts in /etc/passwd (or wherever your PAM config references) may be used to log in. This must be enable for any non-anonymous login to work, including virtual users.
Default: NO
userlist_file
This option is the name of the file loaded when the userlist_enable option is active.
Default: /etc/vsftpd.user_list
Pour trier vos problèmes d'autorisations, activez la commande SITE CHMOD et demandez à votre client FTP de l'utiliser.
chmod_enable
When enabled, allows use of the SITE CHMOD command. NOTE! This only applies to local users. Anonymous users never get to use SITE CHMOD.
Default: YES
vsftpd
ne supporte pas le nombre limité d'utilisateurs mais proftpd
est plus puissant et dispose d'une option dans le fichier de configuration (proftpd.conf
) pour limiter la connexion à un utilisateur comme celui-ci:
<Limit LOGIN>
AllowUser barb
AllowUser dave
AllowGroup ftpuser
DenyAll
</Limit>
Éditer
DenyUsers ftpuser
à /etc/ssh/sshd_config
ftpuser
au groupe de serverpilot
et en ajoutant serverpilot
au groupe de ftpuser
. vous devez également modifier l'autorisation du dossier /srv/users/serverpilot/apps/website/public/ftpdir
en 775.Rappelez-vous que le dossier /srv/users/serverpilot/
doit avoir l'autorisation 755.
Vous pouvez utiliser la fonction PureDB
de pure-ftpd
pour créer un identifiant FTP uniquement pour le service pure-ftpd
.