web-dev-qa-db-fra.com

Configuration de SFTP pour se connecter au serveur avec Filezilla

J'ai une instance ec2 sur AWS qui y a déjà installé quelques Wordpress-es. Je veux mettre les choses en place pour permettre à plus de gens de gérer leurs propres projets. Je peux également accéder au serveur à l'aide d'un terminal si je le souhaite encore.

J'ai suivi des tutoriels tels que Comment installer un serveur SFTP restreint sur Ubuntu? et quelques autres. Je pensais que tous enseignaient simplement aux utilisateurs comment sftp dans leur propre dossier personnel. De plus, les étapes ne cessaient de répéter addUser, mais certains utilisateurs existaient déjà et leur suppression risquait de poser problème.

Comment donner aux utilisateurs existants l'autorisation d'utiliser SFTP pour les projets Wordpress?

Disons que tous mes Wordpress projets sont déjà sous /var/www/ qui a déjà été configuré avec www-data:www-data.

Vraiment nouveau avec des choses comme ça.

Merci d'avance pour votre aide.

2
Dora

Je suppose ici que vous êtes en mesure de ssh/sftp dans le répertoire de base de votre utilisateur et que vous souhaitez modifier (avec votre utilisateur) les fichiers et dossiers sous _/var/www_ appartenant à user et _:group_ - _www-data:www-data_ (sans en changer les propriétaires).

Ici, je suppose également que le sujet Comment éviter d'utiliser Sudo lorsque vous travaillez dans/var/www? ne couvre pas vos besoins. Par exemple, vous ne souhaitez pas modifier les autorisations sous _/var/www_.

Je pense que le moyen le plus simple et le plus simple de résoudre cette tâche est de monter _/var/www_ (ou un certain répertoire à l'intérieur) dans le répertoire de base de votre utilisateur et de changer le propriétaire en votre utilisateur et votre groupe. Ceci pourrait être réalisé avec l'outil bindfs:

_Sudo apt update && Sudo apt install bindfs
_

Ici, nous monterons le répertoire entier _/var/www_ dans un répertoire appelé également _www/_ et situé dans le répertoire de base de votre utilisateur.

_mkdir "$HOME/www"
Sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www "$HOME/www"
_
  • Les substitutions de commandes $(id -u) et $(id -g) renverront l'UID et le GID de l'utilisateur actuel.

  • Si vous souhaitez exécuter la commande ci-dessus pour un autre utilisateur, utilisez $(id -u <user>) et $(id -g <user>). Où _<user>_ est un nom d'utilisateur réel.

  • Pour plus de détails sur les arguments utilisés avec bindfs, lisez sa page de manuel - man bindfs .

  • Si vous souhaitez démonter _~/www_ (_$HOME/www_), utilisez la commande suivante:

    _Sudo fusermount -u ~/www
    _

Pour monter _/var/www_ dans _~/www_ automatiquement lors du démarrage du système, ajoutez la ligne suivante au bas de _/etc/fstab_:

_bindfs#/var/www /home/<user>/www Fuse force-user=<uid>,force-group=<gid>,create-for-user=www-data,create-for-group=www-data 0 0
_
  • Remarque: vous devez remplacer _<user>_ par le nom d'utilisateur actuel; devrait également remplacer _<uid>_ et _<gid>_ par les UID et GID réels de _<user>_, vous pouvez les trouver à l’aide des commandes: _id -u <user>_ et _id -u <user>_.
  • Pour voir le résultat, redémarrez le système ou exécutez:

    _Sudo mount -a    # maybe you should execute `Sudo fusermount -u ~/www` first 
    _

Voici une démonstration animée comment cela fonctionne:

enter image description here


Mise à jour:

La seule limitation de cette approche que j'ai trouvée est que, lorsque vous modifiez la propriété du répertoire bind, la propriété sera également modifiée pour le répertoire source. Par exemple, la commande suivante n'est pas une bonne idée:

_chown -R $(id -u):$(id -g) $HOME/www
_

Peut-être existe-t-il une option appropriée pour la commande bindfs qui évitera que cela se produise, mais je ne peux pas le dire pour le moment.

Notes:

3
pa4080