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
CDPour changer le répertoire de travail. -
Changer les valeurs du
$ Chemin,$ Shell,$ Bash_env, ou$ Envvariables environnementales (mais elles peuvent lire les valeurs actuelles). -
Lire ou changer
$ ShelloptsOptions 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.