SFTP: fichier de liens symboliques dans un répertoire emprisonné (chrooté)

22

J'essaie de configurer sftp afin que quelques personnes de confiance puissent accéder / modifier / créer des fichiers. J'ai emprisonné un utilisateur dans son répertoire personnel (/ home / name) mais j'ai rencontré un problème. Je veux qu'ils puissent également accéder à d'autres parties du VPS car c'est également un serveur de jeu, un hébergeur, etc., et je veux qu'ils puissent avoir le contrôle total des fichiers en dehors de leur répertoire emprisonné.

J'ai essayé de créer un lien symbolique (ln -s) vers le répertoire souhaité mais cela ne fonctionne pas, comme prévu. J'ai essayé (cp -rl) les fichiers auxquels je voulais donner accès et cela a fonctionné - ils peuvent éditer les fichiers dans leur répertoire et cela change celui stocké en dehors de la prison. MAIS ils ne peuvent pas créer de nouveaux fichiers (ils le peuvent mais ils ne seront pas mis à jour en dehors de la prison). Je sais que je ne fais probablement pas cela de la "bonne façon" mais que puis-je faire pour faire ce que je veux?

dukevin
la source

Réponses:

40

Les liens symboliques sont purement symboliques: ils ne contiennent rien d'autre qu'un chemin, donc lorsque vous ouvrez un lien symbolique, le système d'exploitation lit le chemin et l'utilise à la place. Dans un environnement chroot, les liens (en particulier ceux avec des chemins absolus) ne pointent généralement pas au même endroit qu'ils ont indiqué dans l'environnement normal.

Si le système d'exploitation du serveur est Linux, votre meilleur pari est de lier-monter le répertoire entier quelque part dans le répertoire chroot. Lorsque vous utilisez cela, il est important de se rappeler qu'il ne s'agit pas d'une copie du répertoire, tout ce qui est supprimé ici sera supprimé de l'autre répertoire (important si l'utilisateur peut les mvfichiers ou rm -rf). Pour faire ça:

mount --bind /some/directory /somewhere/else

Les fichiers du répertoire doivent être de vrais fichiers. Les liens symboliques ici auront probablement les mêmes problèmes que vous avez en premier lieu pour créer un lien vers les fichiers.

DerfK
la source
Merci pour votre réponse. Pouvez-vous s'il vous plaît m'expliquer ou me diriger vers un tutoriel sur la façon dont je peux faire fonctionner cela? J'ai désactivé ssh pour les invités, ils n'ont donc qu'un accès sftp. Quel fichier dois-je mettre cette commande?
dukevin
Bien que cela ne soit pas largement conseillé, vous pouvez également créer des liens physiques de répertoire, ce qui serait plus simple, mais uniquement si tous les fichiers se trouvent sur le même périphérique.
Falcon Momot
Quelle est la commande pour cela
dukevin
@KevinDuke Ce n'est pas quelque chose que les utilisateurs peuvent faire eux-mêmes, seul root peut l'utiliser de mountcette façon. Il peut y avoir un moyen de le spécifier /etc/fstabafin qu'il se fasse automatiquement au démarrage, mais je ne sais pas comment
DerfK
1
Merci. J'ai lu quelques tutoriels et je l'ai compris. Votre réponse m'a vraiment aidé à me diriger dans la bonne direction. Merci! Pour ceux qui veulent savoir, ils ont aidé: aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/... redbottledesign.com/...
dukevin