rbash représente le shell bash restreint. Sous UNIX, comme lorsqu'un utilisateur est créé, un shell par défaut (/bin/bash) est attribué. Ainsi, un utilisateur peut se déplacer vers les répertoires de n'importe qui, donc pour éviter cette situation, nous pouvons attribuer le shell restreint à un utilisateur, le shell restreint est comme un environnement de type prison ou un environnement chroot.
Pourquoi rbash ?
Si bash est démarré avec le nom rbash, ou si l'option -r est fournie à l'invocation, le shell devient restreint. Un shell restreint est utilisé pour mettre en place un environnement plus contrôlé que le shell standard. Il se comporte de la même manière que bash, à l'exception que les éléments suivants sont interdits ou non exécutés :
- changer de répertoire avec cd
- définir ou supprimer les valeurs de SHELL, PATH, ENV ou BASH_ENV
- spécifier les noms de commande contenant /
- spécifier un nom de fichier contenant un / comme argument de la commande intégrée
- spécifier un nom de fichier contenant une barre oblique comme argument de l'option -p de la commande intégrée de hachage
- importer des définitions de fonctions depuis l'environnement shell au démarrage
- analyse de la valeur de SHELLOPTS à partir de l'environnement shell au démarrage
- redirection de la sortie à l'aide des opérateurs de redirection>,>|, <>,>&, &> et>>
- en utilisant la commande intégrée exec pour remplacer le shell par une autre commande
- ajouter ou supprimer des commandes intégrées avec les options -f et -d à la commande intégrée enable
- en utilisant la commande intégrée enable pour activer les commandes internes désactivées du shell
- en spécifiant l'option -p à la commande intégrée command.
- désactiver le mode restreint avec set +r ou set +o restreint.
Comment définir un shell restreint
Définissez l'environnement que vous souhaitez pour un utilisateur particulier et placez-le dans le fichier de démarrage :$HOME/.bash_profile, comme indiqué ci-dessous :
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH bash -r
Connectez-vous maintenant avec l'utilisateur et essayez de changer les répertoires.
$ cd /etc/ bash: cd: restricted $ cd /tmp/ bash: cd: restricted
Pour définir un shell restreint pour tous les utilisateurs, créez un lien symbolique de /bin/bash vers /bin/rbash :
# cd /bin # ln -s bash rbash