web-dev-qa-db-fra.com

Besoin d'écrire un script qui jailkit un utilisateur et lui donnera accès à un répertoire de site Web particulier

J'ai un serveur d'application Ubuntu 12.04 hébergeant quelques sites Web. Nous devons donner accès au développeur pour pouvoir uniquement télécharger des fichiers sur l'un des sites Web. J'ai installé Jailkit mais je n'arrive pas à trouver comment lui donner un accès sFTP au répertoire du site Web.

Voici notre structure de répertoires Web:

/var/www/website.com/htdocs/ /var/www/someotherwebsite.com/htdocs/ /var/www/website3.com/htdocs/ tous détenus par www-data: www-data

Quelqu'un peut-il me donner quelques étapes pour donner à un utilisateur un accès à un ou deux de ces répertoires uniquement via sFTP et sans accès ssh?

3
John Hamman

En général, ce n'est pas une structure de répertoire pratique pour les raisons que vous rencontrez. Si vous n'avez qu'un seul site Web, le répertoire/var/www peut être très bien. Cependant, d'après mon expérience, depuis plus de 20 ans, la meilleure approche est de créer une partition domestique séparée afin que la partition domestique puisse être montée nosuid, noexec, nodev, et al. Chaque site Web possède son propre compte utilisateur système. Ce compte reçoit un Shell, rssh, qui autorise sftp mais pas ssh. Ceci est pratique lors de l'hébergement, lors de l'embauche de développeurs, ou même d'un point de vue sécurité.

Après avoir écrit tant de choses, une solution devient claire: déplacer les sites vers les répertoires des comptes d'utilisateurs et mettre à jour la configuration du serveur Web. Cela peut être fait en toute sécurité en créant une copie du site Web sur un sous-domaine. Par exemple, pour le domaine, www.website.com, créez un CNAME appelé test.website.com. Assurez-vous que le site sur test.website.com fonctionne. Ensuite, mettez à jour le fichier de configuration du serveur Web pour pointer www.website.com vers le nouvel emplacement une fois que vous savez qu'il est parfait.

À ce stade, vous pouvez fournir un accès via sFTP à qui vous voulez sans cette préoccupation.

Mais ... pour aller droit au but et répondre à la question: une solution moins évidente mais efficace consiste à utiliser ACL. Avec ACL, vous pouvez obtenir de bien meilleurs contrôles fins sur les autorisations du système de fichiers. L'utilisation d'ACL peut fournir les restrictions souhaitées.

La première chose à faire est d'installer le logiciel acl:

Sudo apt-get install acl

La prochaine chose à faire est de monter ou remonter le système de fichiers avec l'option ACL.

Sudo -e /etc/fstab

Vous pourriez voir une ligne comme celle-ci, alors ajoutez l'option acl.

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,acl 0 1

Sauvegarder et quitter. Remontez avec acl activé.

Sudo mount -o remount,acl /

Après cela, vous aurez accès à ACL. Il y a un guide pour ACL sur help.ubuntu.com . Quelques exemples d'utilisation d'ACL sur askubuntu.com:

Gestion des autorisations utilisateur arbitraires sous PureFTPd

Quel est le moyen le plus simple de modifier et d'ajouter des fichiers dans "/ var/www"?

1
user8290