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:
- L'utilisateur «adeveloper» a accès à «/ var / www / html / website_abc» et uniquement à «/ var / www / html / website_abc»
- Je suppose que l'utilisateur «adeveloper» utilisera «adeveloper @ [mon élastique IP]» comme nom d'utilisateur pour se connecter à SFTP (ou FTP), ai-je raison?
- L'utilisateur «adeveloper» n'a pas accès à «/ var / www / html /» ni à aucun autre répertoire de mon instance EC2
- Et le fichier de clé privée?
- Dois-je transmettre mon fichier de clé privée aux développeurs tiers - est-il conseillé de le faire?
- Existe-t-il un moyen de générer un fichier de clé privée différent pour eux ou de leur permettre de se connecter avec un nom d'utilisateur et un mot de passe à la place?
J'ai fait des recherches mais la plupart des gens parlaient de la façon d'accéder à EC2 via SFTP que je peux déjà utiliser WinSCP.
Précisions:
- J'aurais besoin d'un «développeur» pour pouvoir télécharger des trucs sur
/var/www/html/website_abc
lesquels est la permission «d'écriture» - J'aurais besoin que «un développeur» n'ait pas la permission «d'écriture» pour tous les fichiers / répertoires sous
/var/www/html/
, et idéalement même pas la permission «lecture» - Cependant, il semble y avoir un gros problème ici:
/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?
En partie 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.
Réponses:
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 dans le monde entier. Par exemple, voici moi un utilisateur non root sur une boîte CentOS distante;
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;Les systèmes Unix fournissent la
chroot
commande qui vous permet de réinitialiser l'/
utilisateur dans 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
par conséquent, dans votre cas, vous souhaitez que
chroot
l'adeveloper
utilisateur 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 dans/etc/ssh/sshd_config
;Ce truc nécessite un serveur openssh après 4.8?, Donc nécessite probablement CentOS 6.2
(non testé, voir
man sshd_config
pour confirmer la syntaxe)puis ajoutez ces utilisateurs au groupe sftp;
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
)ne renoncez 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
la source