45 votes

Puis-je créer un utilisateur SSH qui ne peut accéder qu'à un certain répertoire ?

J'ai un serveur privé virtuel auquel je peux me connecter par SSH avec mon compte root, ce qui me permet d'exécuter n'importe quelle commande linux et d'accéder à toute la zone disque, évidemment.

Je voudrais créer un autre compte d'utilisateur, qui serait capable d'accéder à ce serveur en utilisant SSH également, mais seulement à un certain répertoire, par exemple /var/www/example.com/

Par exemple, imaginez que cet utilisateur possède un ENORME fichier error.log (500 Mo) situé à l'adresse suivante /var/www/example.com/logs/error.log Lorsqu'il accède à ce fichier par FTP, cet utilisateur doit télécharger 500 Mo pour voir les dernières lignes du journal, mais j'aimerais qu'il puisse exécuter quelque chose comme ceci :

tail error.log

J'ai donc besoin qu'il puisse accéder au serveur en utilisant SSH, mais je ne veux pas lui accorder l'accès à toutes les zones du serveur.

Comment puis-je le faire ?

28voto

RedGrittyBrick Points 78148

chroot l'utilisateur.


Mise à jour :

Le site Article de Vincent Danen dans TechRepublic dit :

Avec la sortie d'OpenSSH 4.9p1, vous n'avez plus besoin de recourir à des pirates tiers ou à des configurations chroot compliquées pour confiner les utilisateurs dans leurs répertoires personnels ou leur donner accès aux services SFTP.

éditer /etc/ssh/sshd_config (/etc/sshd_config sur certaines distributions) et définissez les options suivantes :

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Assurez-vous que la directive "Match" se trouve à la fin du fichier. Ceci indique à OpenSSH que tous les utilisateurs du groupe sftp doivent être chrootés dans leur répertoire personnel (que %h représente dans la commande ChrootDirectory)

Pour tous les utilisateurs que vous souhaitez chrooter, ajoutez-les au groupe sftp en utilisant :

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

La commande usermod ci-dessus ajoutera l'utilisateur joe au groupe sftp et définira son Shell à /bin/false afin qu'il ne puisse absolument pas obtenir l'accès à Shell. Les commandes chown et chmod définiront les permissions requises pour le répertoire. Une fois ces autorisations définies, l'utilisateur sera autorisé à télécharger des fichiers, mais ne pourra pas créer de répertoires ou de fichiers dans le répertoire racine.

Le chrootage des comptes Shell est un peu plus compliqué car il nécessite que certains fichiers de périphériques et un Shell soient disponibles dans le répertoire personnel de l'utilisateur. Les commandes suivantes vont configurer un système chroot très basique sur Mandriva Linux :

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

Avec ce qui précède, l'utilisateur Joe peut se connecter et sera restreint au chroot. Malheureusement, cela ne fait pas grand-chose, mais cela vous donne une idée de la façon dont cela peut être configuré. En fonction de ce que vous voulez fournir, vous devrez installer des bibliothèques et des binaires supplémentaires.


Le site Site de la communauté Ubuntu dit

Création d'un chroot

  1. Installez les paquets dchroot et debootstrap.

  2. En tant qu'administrateur (c.-à-d. en utilisant sudo), créez un nouveau répertoire pour le répertoire chroot. Dans cette procédure, le répertoire /var/chroot sera utilisé. Pour faire cela, tapez sudo mkdir /var/chroot dans une ligne de commande.

  3. En tant qu'administrateur administrateur, ouvrez /etc/schroot/schroot.conf dans un texte dans un éditeur de texte. Tapez cd /etc/schroot suivi par gksu gedit schroot.conf . Cela vous permettra vous permettra de modifier le fichier.

  4. Ajoutez le les lignes suivantes dans schroot.conf et puis enregistrez et fermez le fichier. Remplacer _your_username_ avec votre nom d'utilisateur.

    [lucide] description=Ubuntu Lucid location=/var/chroot priorité=3 users=votre_nom_d'utilisateur groups=sbuild root-groups=root

Ouvrez un terminal et tapez :

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Cela créera une base de base d'Ubuntu 10.04 (Lucid Lynx) en Lynx) dans le chroot. Cela peut prendre un temps pour que les paquets soient téléchargés. Note : Vous pouvez remplacer lucid par la version Ubuntu de votre choix. choix. Note : Vous devez modifier le fichier ci-dessus mirror.url.com avec l'URL d'un d'un miroir d'archives valide situé près de chez vous. A chroot de base devrait maintenant avoir été créé. Tapez sudo chroot /var/chroot pour passer à une racine Shell à l'intérieur de la chroot.

Configuration du chroot

Il y a Il y a quelques étapes de base que vous pouvez suivre pour configurer le chroot, en fournissant des facilités telles que la résolution DNS et l'accès à /proc .

Note : Tapez ces commandes dans un Shell qui est en dehors du chroot.

Tapez ce qui suit pour monter le /proc dans le chroot (requis pour le système de fichiers gestion des processus) :

sudo mount -o bind /proc /var/chroot/proc  

Tapez ce qui suit pour autoriser la résolution DNS à partir de à l'intérieur du chroot (nécessaire pour l'accès à Internet) :

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Très peu sont installés par défaut dans un chroot (même sudo n'est pas installé). Utilisez apt-get install package_name à installer des paquets.

16voto

celebdor Points 926

Votre meilleure chance, à mon avis, est de configurer une prison chroot ssh, c'est-à-dire un environnement bash minimum sur le serveur de l'entreprise. /var/www/example.com/ dir. Pour ce faire, vous pouvez suivre :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X