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

28

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?

badr
la source
Vous souhaiterez peut-être utiliser des comptes d'utilisateurs distincts à cette fin.
Martin von Wittich
Ou peut-être Jailkit
FloHimself
chmod n'est pas une bonne solution car je ne peux pas l'utiliser pour tous les dossiers de mon serveur que j'ai utilisés avant qu'il puisse sortir de son dossier
badr
en fait, je n'ai aucune idée du groupe parce que je ne l'ai pas utilisé auparavant, pouvez-vous simplement m'expliquer quel est l'avantage de celui-ci?
badr
Une autre méthode - serverfault.com/questions/497011/… .
slm

Réponses:

26

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 cela, je suis allé /etc/ssh/sshd_configet j'ai 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 filerépertoire, je veux dire que tout son fichier doit être dans le dossier File.

badr
la source
1
J'ai changé d'utilisateur au fur sudo su - obamaet à mesure qu'il peut voir les fichiers des autres @badr
alper
11

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, définir /bin/rksh(un kornshell restreint) 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/rkshetksh déterminerez par son nom s'il est restreint ou non.

Le shell restreint sera (par exemple) empêchent de faire une cdcommande, ou en spécifiant une commande avec un /(un chemin explicite) dans l'invocation, et elle interdit de changer le PATH, SHELLou ENVvariable et de sortie sont redirections également interdits.

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

Janis
la source
Cette réponse va être beaucoup plus simple que de mettre en place un environnement chroot donc je l'ai voté.
Azhrei
5

La commande chrootvous permet de créer une racine restreinte pour un utilisateur, cette question explique le concept chrootet comment l'utiliser.

Mise à jour: recherche d'une prison chroot installée sur l'océan numérique , 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 des environnements Chroot pour les tests sur un VPS Ubuntu 12.04

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

En voici un qui concerne le jailkit , que FloHimself a suggéré.

X Tian
la source
oui, ils l'expliquent, mais ils n'ont pas expliqué comment l'utiliser. J'ai essayé avec quelques recommandations, mais ce que j'obtiens: chroot: n'a pas réussi à exécuter la commande '/ bin / bash': aucun fichier ou répertoire de ce type
badr
1
Certes, mais maintenant que vous avez entendu parler de la prison chroot, vous pourriez faire plus de recherches, j'ai mis à jour la réponse avec quelques liens vers des documents sur Digital Ocean, qui donnent des explications supplémentaires adaptées à leur environnement.
X Tian