Imaginez ce scénario. Vous souhaitez autoriser un utilisateur à effectuer uniquement certaines tâches et à exécuter certaines commandes. L'utilisateur ne doit pas modifier les variables/chemins d'environnement. Il ne peut pas visiter les autres répertoires à l'exception de son répertoire personnel et ne peut pas basculer vers d'autres utilisateurs, etc. L'utilisateur ne peut exécuter que quelques commandes assignées par l'administrateur système. Est-ce possible? Oui! C'est là que Restricted Shell vient en aide. En utilisant Restricted Shell, nous pouvons facilement limiter l'accès des utilisateurs au système Linux. Une fois que vous avez mis les utilisateurs en mode shell restreint, ils ne sont autorisés à exécuter qu'un ensemble limité de commandes. Dans ce bref tutoriel, nous expliquerons comment procéder sous Linux. J'ai testé ce guide sur le serveur minimal CentOS 7. Cependant, cela fonctionnera sur la plupart des distributions de type Unix.
Qu'est-ce que le shell restreint ?
Tout d'abord, permettez-moi de clarifier ce qu'est exactement le shell restreint. Ce n'est pas un shell séparé comme Bash, Korn Shell, etc. Si vous démarrez un shell existant en utilisant les options "rbash", "--restricted", "-r", il deviendra alors un shell restreint. Par exemple, le shell Bourne peut être démarré en tant que shell restreint avec la commande bsh -r , et le shell Korn avec la commande ksh -r .
Le shell restreint empêchera les utilisateurs d'exécuter la plupart des commandes et de modifier le répertoire de travail actuel. Le shell restreint imposera les restrictions suivantes aux utilisateurs :
- Cela ne vous permettra pas d'exécutercd commande. Vous ne pouvez donc aller nulle part. Vous pouvez simplement rester dans le répertoire de travail actuel.
- Cela ne vous permettra pas de modifier les valeurs de $PATH , $SHELL , $BASH_ENV ou $ENV variables environnementales.
- Cela ne vous permettra pas d'exécuter un programme contenant un caractère /(barre oblique). Par exemple, vous ne pouvez pas exécuter /usr/bin/uname ou ./uname commande. Vous pouvez cependant exécuter la commande uname. En d'autres termes, vous êtes autorisé à exécuter les commandes dans le chemin actuel uniquement.
- Vous ne pouvez pas rediriger la sortie en utilisant ' > ', ' >| ', ' <> ', ' >& ', ' &> ' et ' >> ’ opérateurs de redirection.
- Cela ne vous permettra pas de sortir du mode shell restreint dans les scripts.
- Cela ne vous permettra pas de désactiver le mode shell restreint avec ‘set +r’ ou 'set +o restreint' .
Cela peut être très utile lorsqu'un grand nombre d'utilisateurs utilisent un système partagé. Donc, si vous souhaitez autoriser les utilisateurs à exécuter uniquement des commandes spécifiques, Restricted Shell est une façon de le faire.
Limiter l'accès de l'utilisateur au système Linux à l'aide d'un shell restreint
Tout d'abord, créez un lien symbolique appelé rbash de Bash comme indiqué ci-dessous. Les commandes suivantes doivent être exécutées en tant que root utilisateur.
# ln -s /bin/bash /bin/rbash
Ensuite, créez un utilisateur appelé "ostechnix" avec rbash comme son shell de connexion par défaut.
# useradd ostechnix -s /bin/rbash
Définissez le mot de passe pour le nouvel utilisateur.
# passwd ostechnix
Créer un bac répertoire à l'intérieur du dossier de départ du nouvel utilisateur.
# mkdir /home/ostechnix/bin
Maintenant, nous devons spécifier quelles commandes l'utilisateur peut exécuter.
Ici, je vais laisser l'utilisateur exécuter uniquement "ls" , "mkdir" , et "ping" commandes. Vous pouvez attribuer les commandes de votre choix.
Pour ce faire, exécutez les commandes suivantes :
# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping
Maintenant, vous comprenez pourquoi nous avons créé le répertoire "bin" à l'étape précédente. Les utilisateurs ne peuvent exécuter aucune commande à l'exception des trois commandes ci-dessus.
Ensuite, empêchez l'utilisateur de modifier .bash_profile .
# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
Modifier /home/ostechnix/.bash_profile fichier :
# vi /home/ostechnix/.bash_profile
Modifier la variable PATH comme ci-dessous.
[...] PATH=$HOME/bin [...]
Appuyez sur ESC clé et tapez :wq pour enregistrer et fermer le fichier.
Désormais, lorsque l'utilisateur se connecte, le shell restreint (rbash) s'exécute en tant que shell de connexion par défaut et lit le .bash_profile , qui définira PATH sur $HOME/bin afin que l'utilisateur ne puisse exécuter que le ls , mkdir et ping commandes. Le shell restreint ne permettra pas à l'utilisateur de changer PATH , et les autorisations sur .bash_profile ne permettra pas à l'utilisateur de modifier l'environnement pour contourner les restrictions lors de la prochaine session de connexion.
Vérifier Rbash
Maintenant, déconnectez-vous de l'utilisateur root et reconnectez-vous avec l'utilisateur nouvellement créé, c'est-à-dire ostechnix dans notre cas.
Ensuite, exécutez quelques commandes pour vérifier si cela fonctionne ou non. Par exemple, je veux vider le terminal.
Pour ce faire, j'ai lancé :
$ clear
Exemple de résultat :
-rbash: clear: command not found
Vous ne pouvez pas utiliser cd commande pour changer de répertoire.
$ cd /root
Exemple de résultat :
-rbash: cd: restricted
Vous ne pouvez pas non plus rediriger la sortie à l'aide de l'opérateur >.
$ cat > file.txt
Exemple de résultat :
-rbash: file.txt: restricted: cannot redirect output
L'utilisateur "ostechnix" n'est autorisé à utiliser que les commandes que vous lui avez attribuées (l'administrateur système, bien sûr). Dans notre cas, l'utilisateur peut exécuter les commandes ls, mkdir et ping.
$ ls
$ mkdir ostechnix
$ ping -c 3 google.com
En dehors de ces trois commandes, l'utilisateur ne peut rien faire. Il/elle est entièrement sous votre contrôle.
Suggestion de lecture :
- Comment surveiller l'activité des utilisateurs sous Linux
Autoriser les nouvelles commandes aux utilisateurs
Si vous souhaitez attribuer plus de commandes à un utilisateur, déconnectez-vous de l'utilisateur actuel et reconnectez-vous à la racine à nouveau l'utilisateur et attribuez les commandes comme indiqué ci-dessous.
Par exemple, pour permettre à l'utilisateur (c'est-à-dire ostechnix) d'exécuter rm commande, exécutez la commande suivante en tant que root utilisateur.
# ln -s /bin/rm /home/ostechnix/bin/rm
L'utilisateur peut désormais utiliser la commande "rm".
Pour plus de détails, reportez-vous aux pages de manuel dans le lien ci-dessous.
- Pages de manuel Rbash