Un shell restreint limite ce qu'un compte utilisateur peut faire sur Linux. Un utilisateur restreint ne peut pas changer son répertoire et vous contrôlez les commandes auxquelles il a accès. Ensuite, explique comment configurer un shell restreint sur Linux.
Coquilles restreintes
Un shell restreint n'est pas un shell distinct. C'est un mode différent d'un shell standard. Les A essayé, Korn, Pez, et d'autres shells peuvent être démarrés en mode shell restreint. Nous utiliserons Bash dans ce post, mais les mêmes principes s'appliquent aux autres coquilles.
Parce que les shells restreints ne sont qu'une autre façon d'utiliser votre shell standard, ils sont faciles à configurer. Il n'y a rien à installer et ils sont disponibles partout où Linux est.
Les shells restreints peuvent également être appliqués aux scripts. Cela garantit que tout dommage qu'ils peuvent causer s'ils sont mal orthographiés est confiné aux confins de leur monde restreint et qu'ils n'ont pas accès à l'intégralité de votre ordinateur..
Malgré cela, notez que les projectiles restreints ne sont pas entièrement étanches. Quelqu'un avec suffisamment de connaissances peut échapper à un shell restreint. Ils sont parfaits pour définir des limites de sécurité pour un utilisateur occasionnel, mais ne comptez pas sur des shells restreints pour la sécurité du monde réel sur un système de production.
EN RELATION: Quelle est la différence entre Bash, Zsh et autres shells Linux?
Coup restreint
Lorsque vous exécutez Bash en tant que shell restreint, l'utilisateur a certaines capacités supprimées. Spécifiquement, utilisateur ne pas pouvoir:
- Utilisation
cd
pour changer le répertoire de travail. - Changer les valeurs du
$PATH
,$SHELL
,$BASH_ENV
, O$ENV
variables environnementales (mais ils peuvent lire les valeurs actuelles). - Lire ou modifier
$SHELLOPTS
Shell options environnementales. - Rediriger la sortie d'une commande.
- Invoquer des commandes qui nécessitent un chemin pour les localiser. Autrement dit, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “
/
” En cela. - Invoquer
exec
remplacer la coque par une procédure différente. - Utiliser l'une des fonctions restreintes dans un script.
Vous pouvez appeler un shell bash restreint en utilisant le -r
option (limité). Essayer d'effectuer une tâche simple telle que changer le répertoire de travail est interdit. Un message laconique vous dit que cd
il est restreint.
bash -r
CD Documents
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “rbash” au lieu de “frapper”. Cela le fait également commencer comme un shell restreint. Cela fournit un moyen pratique de configurer le shell par défaut pour un utilisateur particulier, que nous utiliserons bientôt.
Si nous utilisons le whereis
commande dans Ubuntu pour rechercher le rbash
des dossiers, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “usr / poubelle”. La page de manuel se trouve dans le répertoire "/usr / partager / homme / homme1".
En utilisant le ls
commande avec le -l
L'option (longue) révèle que rbash
est en fait un lien symbolique vers bash
.
où est rbash
ls -l /usr/bin/rbash
A Manjaro et Fedora, les rbash
Vous deviez créer un lien symbolique. 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 whereis
commander, trouve rbash
dans le répertoire "/usr / poubelle".
Restreindre un utilisateur
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques”. Nous allons configurer votre shell pour qu'il soit le shell contraint en utilisant le -s
(coquille) option de la useradd
commander. Nous allons également configurer le mot de passe du compte en utilisant lepasswd
commander, et nous allons créer un dossier personnel pour eux.
Les -p
(parents) drapeau dans le mkdir
la commande dit mkdir
pour créer le répertoire cible et tout répertoire parent que vous devez créer en plus. Ensuite, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie / poubelle”, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie” en même temps.
sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin
Quand minnie se connecte, fonctionnera dans un shell restreint.
CD
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/
":
/usr/bin/ping
Malgré cela, vous pouvez toujours exécuter les commandes trouvées dans le chemin.
ping
Ce n'est pas le comportement auquel j'aurais pu m'attendre, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques. vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques.
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie”, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie / poubelle”. vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques.
vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “.vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques” vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques. Nous limiterons également le fichier « .bash_profile » de minnie afin que seule la racine puisse l’éditer. Cela signifie qu’aucun autre utilisateur ne peut modifier ce fichier et modifier son chemin..
sudo gedit /home/minnie/.bash_profile
Modifier le “CHEMIN =” existant ou ajouter la ligne suivante:
CHEMIN=$HOME/bin
Enregistrer le fichier. Bien modifier le propriétaire du fichier root à l’aide de l’icône chown
commande et modifier les autorisations de fichier en utilisant le chmod
commander. Seul l’utilisateur root pourra modifier le fichier.
racine chown sudo:racine /home/minnie/.bash_profile
sudo chmod 755 /accueil/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
La prochaine fois que l’utilisateur minnie se connecte, son chemin d’accès pointe vers un seul dossier.
Notre utilisateur restreint minnie ne peut utiliser que des commandes Bash intégrées comme echo
, alias
, Oui logout
. Elle ne peut même pas utiliser ls
!
ls
Tendremos que aflojar un poco nuestro dominio si queremos que puedan hacer algo útil. Crearemos algunos links simbólicos desde el directorio “poubelle” de minnie a los comandos que queremos que minnie pueda utilizar.
sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin
La prochaine fois que minnie se connectera, Vous constaterez que vous pouvez utiliser les commandes Bash intégrées, en même temps des commandes auxquelles ils ont été liés.
ls
dave rose
disponibilité
Restreindre les utilisateurs existants
Nous créons minnie en tant que nouvel utilisateur. Pour changer la coque d'un existant Nom d'utilisateur, nous pouvons utiliser le -s
(coquille) option de la usermod
commander.
sudo usermod -s /bin/rbash mary
Vous pouvez utiliser le less
commande dans le fichier "/etc / passwd "pour voir rapidement quel shell est défini comme shell par défaut de l'utilisateur.
moins /etc/passwd
Nous pouvons voir que l'utilisateur Mary utilisera un shell restreint lors de sa prochaine connexion.
N'oubliez pas d'appliquer les autres modifications pour restreindre votre $PATH
variable d'environnement et pour définir les commandes que vous voulez que l'utilisateur Mary puisse exécuter.
Restriction de script
Un utilisateur normal et non restreint peut démarrer des scripts qui s'exécutent dans un shell restreint. Copiez les lignes suivantes et collez-les dans un éditeur. Enregistrez le fichier sous “restricto.sh” y cierre el editor.
#!/poubelle/bash # script starts in normal Bash shell echo "## En mode UNrestricted! ##" echo echo "Répertoire actuel: 'pwd'" écho "Changement de répertoire" cd /usr/share echo "Maintenant dans le répertoire: 'pwd'" écho "Passage au répertoire de base" cd ~ echo "Maintenant dans le répertoire: 'pwd'" # Setting restricted mode set -r echo echo "## En mode restreint! ##" echo echo "Répertoire actuel: 'pwd'" écho "Changement de répertoire en /home/" cd /home echo "Toujours dans le répertoire: 'pwd'" echo echo "Essayer de démarrer un autre shell" /bin/bash echo echo "Tentative de redirection de la sortie de la commande" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0
Nous devons utiliser le chmod
commande avec le +x
(Cours) drapeau pour rendre le script exécutable.
drapeau pour rendre le script exécutable
La première partie du script s'exécute dans un shell normal.
./restreint.sh
La deuxième partie du scénario, drapeau pour rendre le script exécutable “drapeau pour rendre le script exécutable”, fonctionne dans un shell restreint.
Aucune des actions tentées n'a abouti dans la partie restreinte du script.
Un script complet peut être exécuté dans un shell restreint en ajoutant -r
à la première ligne:
!#/bin/bash -r
Souviens-toi de Houdini
Les projectiles restreints sont utiles, mais pas totalement infaillible. Un utilisateur suffisamment formé peut y échapper. Mais lorsqu'il est utilisé à bon escient, sont un moyen utile de déterminer un ensemble de limitations pour un compte particulier.
setTimeout(fonction(){
!fonction(F,b,e,v,m,t,s)
{si(f.fbq)revenir;n=f.fbq=fonction(){n.callMethod?
n.callMethod.apply(m,arguments):n.queue.push(arguments)};
si(!f._fbq)f._fbq=n;n.push=n;n.chargé=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertAvant(t,s) } (window, document,'scénario',
'https://connect.facebook.net/en_US/fbevents.js’);
fbq('init', « 335401813750447 »);
fbq('Piste', « Page View »);
},3000);