Comment utiliser une coquille restreinte pour limiter ce qu'un utilisateur Linux peut faire

Mar 25, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock [dix]

Une coque restreinte limite ce qu'un compte d'utilisateur peut faire sous Linux. Un utilisateur restreint ne peut pas modifier son annuaire et vous contrôlez quelles commandes ont accès à. Voici comment configurer une coquille restreinte sur Linux.

Coquilles restreintes

Une coque restreinte n'est pas une coquille différente. C'est un mode différent de une coque standard . Les Frapper , Korn , Poisson et d'autres coquillages peuvent tous être démarrés en mode Shell restreint. Nous utiliserons Bash dans cet article, mais les mêmes principes s'appliquent aux autres obus.

Parce que les coquilles restreintes ne sont qu'une autre façon d'utiliser votre coquille standard, elles sont faciles à installer. Il n'y a rien à installer et ils sont disponibles partout où Linux est.

Les coques restreintes peuvent également être appliquées aux scripts. Cela garantit que tout dommage qu'ils puissent causer s'ils ont été écrits de manière incorrecte se limitent aux limites de leur monde restreint et qu'ils n'ont pas accès à votre ordinateur.

Sachez cependant que les coquilles restreintes ne sont pas complètement éprouvées. Quelqu'un avec suffisamment de connaissances peut échapper à une coquille restreinte. Ils sont parfaits pour mettre en place des limites en toute sécurité sur un utilisateur occasionnel, mais ne comptez pas sur des coquilles restreintes pour une sécurité réelle sur un système de production.

EN RELATION: Quelle est la différence entre Bash, Zsh et d'autres obus de Linux?

Bash restreint

Lorsque vous exécutez BASH en tant que shell restreint, l'utilisateur dispose de certaines capacités qui leur sont retirées. Plus précisément, l'utilisateur ne peut pas :

  • Utilisation CD Pour changer le répertoire de travail.
  • Changer les valeurs du $ Chemin , $ Shell , $ Bash_env , ou $ Env variables environnementales (mais elles peuvent lire les valeurs actuelles).
  • Lire ou changer $ Shellopts Options environnementales de Shell.
  • Rediriger la sortie d'une commande.
  • Invoquer des commandes qui nécessitent un chemin pour les localiser. C'est-à-dire que vous ne pouvez pas émettre une commande qui a une ou plusieurs barres obliques " / "En cela.
  • Invoquer exécuté substituer un processus différent pour la coquille.
  • Utilisez n'importe laquelle des fonctionnalités restreintes dans un script.

Vous pouvez invoquer une coquille bash restreinte en utilisant le -R option (restreinte). Essayer de faire une tâche simple comme la modification du répertoire de travail est interdite. Un message TERSE vous dit que CD est restreint.

 Bash -r 
 Documents CD 

La coque Bash peut également détecter quand elle a été invoquée à l'aide de "rbash" au lieu de "Bash". Cela lui permet de commencer comme une coquille restreinte. Cela donne un moyen pratique de définir la coque par défaut pour un utilisateur particulier que nous allons utiliser bientôt.

Si nous utilisons le où se trouve commande sur ubuntu à chercher le rbash Fichiers, nous verrons que l'exécutable se trouve dans le répertoire "USR / bin". La page Man est dans le répertoire "/ USR / Share / Man / Man1".

En utilisant le ls commander avec le à (longue) option révèle que rbash est en fait un lien symbolique à frapper .

 Où est rbash 
 LS -L / USR / BIN / RBASH 

Sur Manjaro et Fedora, le rbash Le lien symbolique devait être créé. Cela fonctionne sur les deux distributions:

 Où est rbash 
 sudo ln -s / bin / bash / bin / rbash 
 Où est rbash 

La deuxième fois que nous utilisons le où se trouve commande, il trouve rbash dans le répertoire "/ usr / bin".

Restreindre un utilisateur

Allongons Créer un nouveau compte utilisateur nommé "Minnie". Nous allons mettre leur coquille pour être la coquille restreinte en utilisant le dossier (Shell) Option du useraddd commander. Et bien, aussi Définir le mot de passe du compte en utilisant le passionné commande, et nous allons créer un dossier à domicile pour eux.

Les -p (parents) Drapeau dans le mkdir commande raconte mkdir Pour créer le répertoire cible et tous les annuaires parents nécessaires à la création. Donc, en créant le répertoire "/ home / minnie / bin", nous créons le répertoire "/ home / minnie" en même temps.

 sudo userAdadd Minnie -s / bin / rbash 
 sudo passwd minnie 
 sudo mkdir -p / home / minnie / bin 

Quand Minnie se connecte, elle fonctionnera dans une coquille restreinte.

 CD 

Elle ne peut pas invoquer des commandes qui doivent inclure une barre oblique " / ":

 / usr / bin / ping 

Cependant, elle peut toujours exécuter des commandes trouvées sur le chemin.

 Ping 

Ce n'est pas le comportement que vous auriez pu attendre et ce n'est certainement pas ce que nous voulons. Pour resserrer les restrictions plus loin, nous devons changer le chemin que Shell de Minnie utilisera pour rechercher des commandes.

Serrer les restrictions

Lorsque nous avons créé le répertoire de base de Minnie "/ Accueil / Minnie", nous avons également créé un répertoire "/ home / minnie / bin". C'est là que ce répertoire entre en jeu.

Nous allons éditer le fichier ".bash_profile "de Minnie et définir sa voie à signaler à ce répertoire. Nous limiterons également le fichier ".bash_profile "de Minnie afin que seule la racine puisse la modifier. Cela signifie qu'aucun autre utilisateur ne peut modifier ce fichier et changer son chemin.

 sudo gedit /home/minnie/.bash_profile

Éditez le "chemin =" existant ou ajoutez la ligne suivante:

 PATH = $ HOME / BIN 

Enregistrez le fichier. Bien Changer le propriétaire du fichier Pour racine en utilisant le chower commandement et Modifier les autorisations de fichier en utilisant le chmod commander. Seul l'utilisateur racine sera capable de modifier le fichier.

 Sudo Chown root: root /home/minnie/.bash_profile
 sudo chmod 755 /home/minnie/.bash_profile
 LS -L /Home/minnie/.bash_profile

Le prochain utilisateur Minnie se connecte, son chemin pointe sur un seul dossier.

Notre utilisateur restreint Minnie ne peut utiliser que des commandes intégrées Bash écho , alias , et Se déconnecter . Elle ne peut même pas utiliser ls !

 LS 

Nous aurons besoin de relâcher notre étranger un peu si nous voulons qu'ils puissent faire tout ce qui est utile. Nous allons créer des liens symboliques du répertoire "bin" de Minnie aux commandes que nous voulons que Minnie puisse utiliser.

 sudo ln -s / bin / ls / home / minnie / bin 
 sudo ln -s / bin / haut / home / minnie / bin 
 sudo ln -s / bin / disponibilité / home / minnie / bin 
 sudo ln -s / bin / pinky / home / minnie / bin 

Lorsque Minnie se connecte ensuite, elle constatera qu'elle peut utiliser les commandes intégrées Bash, ainsi que ces commandes liées à.

 LS 
 Pinky Dave 
 Uptime 

Restreindre les utilisateurs existants

Nous avons créé Minnie comme nouvel utilisateur. À changer la coquille d'un existant utilisateur, nous pouvons utiliser le dossier (Shell) Option du usermod commander.

 sudo usermod -s / bin / rbash mary 

Vous pouvez utiliser le moins Commande sur le fichier "/ etc / passwd" pour voir rapidement ce que Shell est défini comme coquille par défaut de l'utilisateur.

 Moins / etc / passwd 

Nous pouvons voir que l'utilisateur Marie utilisera la coquille restreinte lorsqu'elle se connecte ensuite.

N'oubliez pas d'appliquer les autres modifications pour limiter leur $ Chemin Variable d'environnement et pour définir les commandes que vous souhaitez que l'utilisateur Marie puisse exécuter.

Restreindre les scripts

Un utilisateur régulier et sans restriction peut lancer des scripts exécutés dans une coquille restreinte. Copiez les lignes suivantes et collez-les dans un éditeur. Enregistrez le fichier comme «restreint.sh» et fermez l'éditeur.

 #! / Bin / bash

# script commence dans une coque de bash normale
echo "## en mode sans restriction! ##"

écho
ECHO "Annuaire actuel:` pwd` "
echo "changer de répertoire"
CD / USR / Share
Echo "maintenant dans le répertoire:` pwd` "
echo "Changer de répertoire à domicile"
CD ~
Echo "maintenant dans le répertoire:` pwd` "

# Fixer le mode restreint
set -r

écho
echo "## en mode restreint! ##"

écho
ECHO "Annuaire actuel:` pwd` "
echo "Changer de répertoire sur / home /"
cd / home
ECHO "Toujours dans l'annuaire:` pwd` "

écho
echo "essayer de démarrer une autre coquille"
/ bin / bash

écho
echo "essayer de rediriger la sortie de commande"
ls -l $ home & gt; my_files.txt
chat my_files.txt
écho

Sortie 0 

Nous devons utiliser le chmod commander avec le + x (Exécuter) Drapeau pour rendre le script exécutable.

 chmod + x restreint.sh 

La première partie du script fonctionne dans une coque normale.

 ./ restreint.sh 

La deuxième partie du script - le bit après la ligne de ligne "SET -R" est exécutée dans une coque restreinte.

Aucune des tentatives d'actions ne parvient dans la partie restreinte du script.

Un script entier peut être fait pour fonctionner dans une coquille restreinte en ajoutant -R à la première ligne:

! # / Bin / bash -r 

Souviens-toi de Houdini

Les coquilles restreintes sont utiles, mais pas complètement infaillibles. Un utilisateur suffisamment qualifié peut peut-être leur échapper. Mais lorsqu'il est utilisé judicieusement, ils constituent un moyen utile d'établir un ensemble de limitations pour un compte particulier.


Linux - Most Popular Articles

Comment choisir entre Ubuntu, Kubuntu, Xubuntu et Lubuntu

Linux Mar 19, 2025

tomeqs / shutterstock.com [dix] Il y a plus d'un Ubuntu. Vous pouvez télécharger Ubuntu, Kubuntu, Xubuntu ou Lubuntu: mais quelle est la différence et que..


Docker pour les débutants: tout ce que vous devez savoir

Linux Jun 15, 2025

Docker crée des applications emballées appelé conteneurs. Chaque conteneur fournit un environnement isolé similaire à un machine virtuelle (Vm). Contrai..


Comment mettre à jour Arch Linux

Linux Jul 30, 2025

Projet Ubuntu [dix] Le temps est-il venu de mettre à jour votre système d'arche Linux? Que vous soyez sur une arche pure ou une distribution basée à u..


Quoi de neuf dans Debian 11 "Bullseye"

Linux Jul 22, 2025

Debian , le progéniteur de nombreuses autres distributions Linux, a effectué la libération 11 disponible dans la phase de test. Pesez-vous les vertus de la mise à niveau ou ..


Comment configurer ou désactiver les notifications de mise à jour de la menthe Linux

Linux Jul 9, 2025

Vous avez eu assez de notifications de mise à jour gênantes de Linux Mint? Ou peut-être que vous êtes si inquiet de rester à jour, vous voulez les voir encore plus? De toute façon, a..


Qu'est-ce que "root" sur Linux?

Linux Jul 7, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com [dix] L'utilisateur racine est l'entité la plus puissante de l'univers Linux avec des pouvoirs sans limites, ..


Le jeu indigène sur Linux peut être en train de mourir, et c'est bon

Linux Sep 27, 2025

DC Studio / Shutterstock.com [dix] Les Terrasse à vapeur , annoncé en août 2021, a des cercles de jeu Linux parlant de l'avenir du jeu sur ..


Comment installer Linux sur un Mac avec M1 d'Apple Silicon

Linux Nov 11, 2024

Prise en charge de Linux natif pour la nouvelle architecture Bras d'Apple n'est pas encore prête, mais vous pouvez exécuter Linux sur un M1 , M1 pro, ou m1 max à l'aide d'un ..


Catégories