68 votes

Créez un utilisateur SSH qui n'a le droit d'accéder qu'à des dossiers spécifiques.

J'ai installé SSH, mais j'ai constaté que si j'utilise mon compte d'origine pour me connecter à Ubuntu, il a trop de permissions.

Je veux contraindre l'utilisateur à n'avoir des permissions que pour des dossiers spécifiques dans Ubuntu. Comment puis-je configurer un tel utilisateur ?

76voto

VolkA Points 10297

C'est simple. Il suffit de créer un nouvel utilisateur dont le répertoire de base est celui auquel vous voulez qu'il ait accès (cette commande doit être exécutée sous le nom de sudo ou dans la racine Shell) :

adduser --home /restricted/directory restricted_user

Cela va créer un utilisateur restricted_user le répertoire /restricted/directory et les permissions sur le répertoire seront définies pour que l'utilisateur puisse y écrire. Il n'aura pas la possibilité d'écrire dans un autre répertoire par défaut.

Si vous avez déjà le répertoire, vous pouvez exécuter adduser avec une commande --no-create-home et définir les permissions manuellement (également avec les privilèges de l'administrateur), comme :

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Si vous devez rendre inaccessibles à cet utilisateur même les répertoires inscriptibles dans le monde, il existe deux variantes.

1) Si vous voulez fournir une session interactive Shell à l'utilisateur, alors considérez ce qui suit ce manuel sur la création d'une prison chroot (dans votre /restricted/directory ).

Après cela, ajoutez ce qui suit à votre sshd_config :

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Si vous avez seulement besoin qu'il copie des fichiers entre son point de connexion et votre hôte, tout est beaucoup plus facile. Ajoutez ces lignes à la fin de votre sshd_config :

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

Ensuite, commentez le Subsystem sftp /usr/lib/openssh/sftp-server en plaçant un dièse ( # ) au départ.

Après avoir redémarré votre serveur SSH (il ne tue pas les sessions interactives au redémarrage, ce qui est sûr même si vous avez mal configuré quelque chose ; il ne ferme pas non plus votre session en cours avant d'avoir vérifié que vous pouvez toujours vous connecter), tout devrait fonctionner comme prévu.

15voto

xpt Points 7071

La façon la plus simple de créer un utilisateur restreint qui ne peut pas se promener hors du répertoire donné (par exemple, dans le répertoire supérieur, etc.), et qui a un ensemble limité/choisi de commandes à utiliser, est d'utiliser un Shell restreint. Réf :

http://man.he.net/man1/rbash

Tout d'abord, créez un lien symbolique appelé rbash (exécuté en tant qu'utilisateur root).

ln -s /bin/bash /bin/rbash

Ensuite, il suffit de créer un utilisateur normal avec ce Shell restreint, et de définir son répertoire d'origine dans le dossier souhaité :

useradd -s /bin/rbash -d /home/restricted_folder username

Même sans la restriction Shell, si vous n'ajoutez pas explicitement cet utilisateur à la liste de sudoer, ou à tout groupe spécial, alors il sera limité par défaut.

Avec le Shell restreint, les opérations suivantes sont interdites ou non exécutées :

  • changer de répertoire avec cd

  • définir ou non les valeurs de Shell, PATH, ENV, ou BASH_ENV

  • spécifier des noms de commandes contenant /

  • en spécifiant un nom de fichier contenant un / comme argument à la commande . builtin

  • En spécifiant un nom de fichier contenant une barre oblique comme argument de la commande option -p de la commande intégrée de hachage

  • l'importation de définitions de fonctions à partir de l'environnement Shell à démarrage

  • l'analyse de la valeur de SHELLOPTS à partir de l'environnement Shell à démarrage

  • redirection de la sortie à l'aide des redirections >, >|, <>, >&, &> et >>. ion

  • en utilisant la commande intégrée exec pour remplacer le Shell par un autre commande

  • ajouter ou supprimer des commandes intégrées avec les options -f et -d à la commande intégrée enable

  • Utilisation de la commande intégrée enable pour activer les Shell désactivés. builtins

  • en spécifiant l'option -p à la commande builtin command

  • désactivation du mode restreint avec set +r ou set +o restreint.

Ces restrictions sont appliquées après tout fichier de démarrage.

De plus, pour restreindre l'utilisateur à un ensemble limité de commandes à utiliser, vous pouvez créer un .bash_profile en lecture seule pour cet utilisateur, avec

PATH=$HOME/bin

et faites un lien symbolique entre les commandes que vous autorisez dans le dossier ~/bin et cet utilisateur :

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

etc.

HTH

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