2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Créer un utilisateur SSH qui a seulement la permission d'accéder à des dossiers spécifiques

J'ai installé SSH, mais j'ai trouvé 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 ?

Réponses (2)

53
53
53
2010-06-06 12:49:32 +0000

C'est simple. Il suffit de créer un nouvel utilisateur avec son répertoire d'origine défini sur celui auquel il doit avoir accès (cette commande doit être exécutée sous sudo ou en root shell) :

adduser --home /restricted/directory restricted_user

Cela créera un utilisateur restricted_user, le répertoire /restricted/directory et ensuite les permissions sur le répertoire seront définies pour que l'utilisateur puisse y écrire. Il ne pourra pas é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 en annexe et définir les permissions manuellement (également avec les privilèges de root), 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 par le monde, il existe deux variantes.

1) Si vous voulez fournir une session shell interactive à l'utilisateur, alors pensez à suivre 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

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

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

5
5
5
2017-11-04 02:03:42 +0000

La façon la plus simple de créer un utilisateur restreint qui ne peut pas quitter le répertoire donné (par exemple, vers le répertoire supérieur, etc.), et qui a un ensemble de commandes limité/sélectionné à utiliser, est d'utiliser un Shell restreint. Ref : http://man.he.net/man1/rbash

Premièrement, créez un lien symbolique appelé rbash (exécutez en tant qu'utilisateur root).

ln -s /bin/bash /bin/rbash

Ensuite, il suffit de créer un utilisateur normal avec ce Restricted Shell, et de placer son répertoire personnel dans le dossier souhaité :

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

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

Avec l'interpréteur de commandes restreint, les opérations suivantes sont interdites ou ne sont pas effectuées :

  • changer de répertoire avec un cd

  • définir ou supprimer les valeurs de SHELL, PATH, ENV, ou BASH_ENV

  • spécifier des noms de commandes contenant /

  • spécifier un nom de fichier contenant un / en argument du fichier . builtin

  • spécification d'un nom de fichier contenant un slash en argument de l'option -p à la commande builtin de hachage

  • importation de définitions de fonctions depuis l'environnement shell au démarrage

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

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

  • utiliser la commande builtin exec pour remplacer le shell par une autre commande

  • ajouter ou supprimer les commandes builtin avec les options -f et -d à la commande builtin enable

  • utiliser la commande builtin enable pour activer les buildins du shell désactivé

  • spécifier l'option -p à la commande builtin

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

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

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

PATH=$HOME/bin

et lier symboliquement toutes les commandes que vous autorisez dans le dossier ~/bin à 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