GNU/Linux >> Tutoriels Linux >  >> Linux

Comment limiter l'accès de l'utilisateur au système Linux

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

Linux
  1. Comment bloquer ou désactiver les connexions utilisateur normales sous Linux

  2. Comment vérifier la version du système d'exploitation et de Linux

  3. Comment changer l'identité d'un système Linux

  4. Linux - Comment restreindre l'accès à Internet pour un utilisateur particulier sur le réseau local à l'aide d'Iptables sous Linux ?

  5. Comment limiter les commandes utilisateur sous Linux

Comment changer le shell utilisateur par défaut dans le système d'exploitation Linux

Comment joindre un système Linux à un domaine Active Directory

Les effets de l'ajout d'utilisateurs à un système Linux

Comment changer le shell par défaut dans le système Linux

Comment utiliser la commande fd sur le système Linux

Comment connaître les groupes d'un utilisateur Linux