web-dev-qa-db-fra.com

Pour créer un utilisateur SSH uniquement autorisé à accéder à des dossiers spécifiques

J'ai installé SSH, mais j'ai constaté que si j'utilisais mon compte d'origine pour me connecter à Ubuntu, il y avait trop d'autorisations.

Je veux contraindre l'utilisateur à ne disposer que d'autorisations pour des dossiers spécifiques sous Ubuntu. Comment puis-je configurer un tel utilisateur?

45
Foolish

C'est simple Créez simplement un nouvel utilisateur avec son répertoire de base défini sur celui auquel vous souhaitez qu'il ait accès (cette commande doit être exécutée sous Sudo ou dans le shell root):

adduser --home /restricted/directory restricted_user

Cela créera un utilisateur restricted_user, le répertoire /restricted/directory, puis les autorisations sur le répertoire seront définies afin que l'utilisateur puisse y écrire. Il ne sera pas capable d'écrire dans un autre répertoire par défaut.

Si vous avez déjà le répertoire, vous pouvez exécuter la commande adduser avec une option --no-create-home ajoutée et définir les autorisations manuellement (également avec les privilèges root), comme par exemple:

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

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

1) Si vous souhaitez fournir une session Shell interactive à l’utilisateur, envisagez de suivre ce manuel pour 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 de lui pour copier des fichiers entre son terminal de connexion et votre hôte, tout est beaucoup plus simple. Ajoutez ces lignes à la fin de votre sshd_config:

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

Subsystem       sftp    internal-sftp

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

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

46
whitequark

Le moyen le plus simple de créer un utilisateur restreint qui ne peut pas errer hors du répertoire donné (par exemple, vers le répertoire supérieur, etc.) et qui a un ensemble de commandes limité/choisi à utiliser consiste à utiliser un shell restreint. Ref:

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

Commencez par créer un lien symbolique appelé rbash (exécuté en tant qu'utilisateur root).

ln -s /bin/bash /bin/rbash

Ensuite, créez simplement un utilisateur normal avec ce shell restreint et configurez son répertoire home dans le dossier souhaité:

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

Même sans Shell restreint, si vous n'ajoutez pas explicitement cet utilisateur à la liste de sudoer, ni à aucun groupe spécial, 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 annuler les valeurs de Shell, PATH, ENV ou BASH_ENV

  • spécifier les noms de commande contenant /

  • spécifiant un nom de fichier contenant un/comme argument de la. commande intégrée

  • Spécification d'un nom de fichier contenant une barre oblique en tant qu'argument de l'option -p de la commande intégrée hash

  • importation des définitions de fonction de l'environnement Shell au démarrage

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

  • redirection de la sortie à l'aide des opérateurs>,> |, <>,> &, &> et >>

  • en utilisant la commande intégrée exec pour remplacer le shell par une autre commande

  • ajout ou suppression de commandes intégrées avec les options -f et -d à la commande active enable

  • Utilisation de la commande enable enable pour activer les fonctions intégrées du shell désactivées

  • spécifiant l'option -p à la commande intégrée à la commande

  • désactiver le mode restreint avec set + r ou set + o restreint.

Ces restrictions sont appliquées après tous les fichiers de démarrage.

De plus, vous pouvez créer un fichier .bash_profile en lecture seule pour cet utilisateur, en option, pour limiter l'utilisateur à un ensemble limité/sélectionné de commandes à utiliser, avec

PATH=$HOME/bin

et faites un lien symbolique aux commandes que vous autorisez dans le dossier ~/bin vers 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

4
xpt