Duplicata possible:
autorisations de répertoire Linux
Je travaille avec des développeurs tiers et je voudrais autoriser SFTP (ou FTP) à accéder au dossier racine d'un site Web sur lequel ils travaillent, c'est-à-dire '/var/www/html/website_abc'
afin qu'ils puissent y télécharger les fichiers. Notez que j'héberge mes autres sites Web sur la même instance EC2, par exemple '/var/www/html/website_xyz'
.
Pour souligner que je travaille avec plusieurs sites Web sur une seule instance EC2, la structure des sites Web est la suivante:
/ var/www/html /
/var/www/html/website_abc
...
/var/www/html/website_xyz
Mes objectifs sont les suivants:
J'ai fait des recherches mais la plupart des gens parlaient de la façon d'accéder à EC2 via SFTP que je suis déjà en mesure d'utiliser WinSCP.
Clarifications:
/var/www/html/website_abc
qui est l'autorisation d'écriture/var/www/html/
, et idéalement même pas la permission de "lire"/var/www/html/
a déjà l'autorisation 777 car il s'agit de mon dossier DocumentRoot. Alors, comment puis-je empêcher "adeveloper" d'accéder à mon autre site Web?Partiellement résolu J'ai réussi à atteindre mes objectifs en utilisant OpenSSH (je crée le dossier .ssh dans/var/www/html/website_abc/et génère une clé privée et la donne aux développeurs tiers). J'ai également appris que je ne devrais jamais donner le fichier de clé privée qu'AWS m'a donné. Toujours en train d'apprendre sur chroot.
Par défaut, les services qui fournissent un shell distant, comme ssh ou telnet, ou une session distante interactive pour des commandes comme sftp, permettent à un utilisateur local de se transformer en n'importe quel répertoire pour lequel il dispose d'autorisations et de récupérer une copie de tout fichier auquel il a accès.
En tant que configuration de sécurité générale, cela est regrettable car il existe de nombreux fichiers et répertoires qui sont nécessairement lisibles par tous. Par exemple, voici moi un utilisateur non root sur une boîte CentOS distante;
$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...
par exemple. Je peux accéder à beaucoup de choses, que vous voudriez idéalement restreindre à un utilisateur inconnu auquel vous souhaitez fournir un accès local.
Voici que je regarde tous les utilisateurs locaux configurés dans le /etc/passwd
fichier;
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
Les systèmes Unix fournissent la commande chroot
qui vous permet de réinitialiser le /
de l'utilisateur vers un répertoire de la hiérarchie du système de fichiers, où il ne peut pas accéder aux fichiers et répertoires "supérieurs".
Cependant, dans votre cas, il serait approprié de fournir un chroot virtuel implémenté par le service Shell distant. sftp peut être facilement configuré pour restreindre un utilisateur local à un sous-ensemble spécifique du système de fichiers en utilisant une configuration dans le
donc dans votre cas, vous voulez chroot
l'utilisateur adeveloper
dans le /var/www/html/website_abc
répertoire.
Vous pouvez définir un répertoire chroot pour votre utilisateur afin de les confiner dans le sous-répertoire /var/www/html/website_abc
comme ça dans /etc/ssh/sshd_config
;
Ce truc nécessite un serveur openssh plus tard que 4.8?, Donc nécessite probablement CentOS 6.2
Match Group sftp
ChrootDirectory %h
AllowTcpForwarding no
(non testé, voir man sshd_config
pour confirmer la syntaxe)
puis ajoutez ces utilisateurs au groupe sftp;
groupadd sftp
usermod -d /var/www/html/website_abc adeveloper
usermod -G sftp adeveloper
Concernant les clés partagées
vous devez créer une paire de clés supplémentaire pour les utilisateurs du développeur et l'envoyer à votre consultant. (ou bien, demandez-leur d'envoyer votre clé publique et de l'ajouter au fichier authorized_keys pour adeveloper
)
n'abandonnez jamais votre clé privée, c'est pourquoi elle est appelée privée; -)
alternatives ftp traditionnelles
vsftp/proftp, etc. prennent également en charge les configurations chroot, mais de nos jours, les configurations basées sur ssh sont la voie normale, et la prise en charge de ftp est historique uniquement.
il y a quelques liens vers des tutoriels ici;
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229
http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny