web-dev-qa-db-fra.com

Comment restreindre un utilisateur à un dossier et ne pas lui permettre de sortir de son dossier

J'ai un serveur ubuntu sur digitalocean et je veux donner à quelqu'un un dossier pour son domaine sur mon serveur, mon problème est, je ne veux pas que cet utilisateur voit mes dossiers ou fichiers ou puisse sortir de leur dossier.

Comment puis-je restreindre cet utilisateur dans son dossier et ne pas lui permettre de sortir et de voir d'autres fichiers/répertoires?

30
badr aldeen

J'ai résolu mon problème de cette façon:

Créer un nouveau groupe

$ Sudo addgroup exchangefiles

Créez le répertoire chroot

$ Sudo mkdir /var/www/GroupFolder/
$ Sudo chmod g+rx /var/www/GroupFolder/

Créer le répertoire accessible en écriture de groupe

$ Sudo mkdir -p /var/www/GroupFolder/files/
$ Sudo chmod g+rwx /var/www/GroupFolder/files/

Donnez-les tous les deux au nouveau groupe

$ Sudo chgrp -R exchangefiles /var/www/GroupFolder/

après je suis allé à /etc/ssh/sshd_config et ajouté à la fin du fichier:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Maintenant, je vais ajouter un nouvel utilisateur avec le nom obama à mon groupe:

$ Sudo adduser --ingroup exchangefiles obama

Maintenant, tout est fait, nous devons donc redémarrer le service ssh:

$ Sudo service ssh restart

remarque: l'utilisateur ne peut plus rien faire dans le répertoire file Je veux dire que tout son fichier doit être dans le dossier file.

26
badr aldeen

Les restrictions sont une question sensible et doivent être définies de manière cohérente. Ce que vous pouvez faire est de définir un Shell restreint pour l'utilisateur comme son Shell par défaut.

Par exemple, en définissant /bin/rksh (une coquille restreinte) au lieu du Shell prédéfini de l'utilisateur comme Shell par défaut pour cet utilisateur dans /etc/profile.

REMARQUE: si l'exécutable portant ce nom n'existe pas sur votre système, créez un lien dur ln /bin/ksh /bin/rksh et ksh détermineront par son nom s'il est restreint ou non.

Le shell restreint empêchera (par exemple) d'exécuter une commande cd ou de spécifier une commande avec un / (un chemin explicite) dans l'invocation, et il interdit de modifier la variable PATH, Shell ou ENV, et les redirections de sortie sont également interdites.

Vous pouvez fournissez toujours prédéfini des scripts shell à l'utilisateur qui (sous le contrôle des implémenteurs de script!) Permettront à l'utilisateur d'exécuter ce ou ces scripts spécifiques dans un environnement sans restriction.

11
Janis

La commande chroot vous permet de créer une racine restreinte pour un utilisateur, ceci question explique le concept de chroot et comment l'utiliser.

Mise à jour: La recherche de prison chroot configurée sur Digital Ocean , apporte une documentation supplémentaire spécifique à leur environnement. Voici un couple qui, je pense, est lié à ce dont vous pourriez avoir besoin.

Comment configurer les environnements Chroot pour les tests sur un VPS Ubuntu 12.04

Comment autoriser l'accès SSH restreint à un utilisateur emprisonné chroot

Voici celui qui concerne jailkit , qui FloHimself suggéré.

5
X Tian