Qu'est-ce que / bin / rbash?

14

J'apprenais des programmes communs shell .

Quand je cours cat /etc/shells, cela montre:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Qu'y a-t-il /bin/rbashici? Est-il utilisé dans les scripts?

Marguerite
la source
6
Quelle partie man rbashn'est pas claire?
Stig Hemmer
1
@StigHemmer. Je ne l'ai pas fait. man rbashme donne également des informations détaillées. Merci.
daisy
3
La lecture de la page de manuel doit toujours être votre première tentative pour comprendre un outil. Vous devez également le lire sur la machine où il apparaît pour vous assurer que vous lisez la bonne version.

Réponses:

16

De wikipedia

Le shell restreint est un shell Unix qui restreint certaines des capacités disponibles à une session utilisateur interactive ou à un script shell s'exécutant à l'intérieur. Il est destiné à fournir une couche de sécurité supplémentaire, mais est insuffisant pour permettre l'exécution de logiciels entièrement non fiables. Une opération en mode restreint se trouve dans le shell Bourne d'origine [1] et son homologue ultérieur bash, [2] et dans le shell Korn. [3] Dans certains cas, un shell restreint est utilisé en conjonction avec une prison chroot, dans une nouvelle tentative de limiter l'accès au système dans son ensemble.

Voir la réponse de Soren A pour les limitations qui s'appliquent aux obus restreints.

Vous pouvez exécuter bashen mode restreint

bash -r
bash --restricted

Sur mon système:

$ file /bin/rbash
/bin/rbash: symbolic link to bash

Donc si je cours /bin/rbash, je coursbash

MAIS

Il suffit de créer un lien nommé rbash pointant directement vers bash. Bien que cela invoque directement bash, sans les options -rou --restricted, bash reconnaît qu'il a été invoqué via rbash et qu'il apparaît comme un shell restreint.

Comme vous pouvez facilement tester:

zanna@monster:~$ rbash
zanna@monster:~$ cd playground
rbash: cd: restricted
Zanna
la source
1
Semble beaucoup de restrictions. Alors, comment est-ce utile? Utilise-t-il dans les scripts?
daisy
3
Il pourrait être défini comme shell par défaut pour un utilisateur que vous souhaitez intercepter dans un répertoire particulier, par exemple @passa
Zanna
2
@passa qui n'est pas du script, et les shells restreints sont singulièrement inutiles pour le script. Puisque vous savez ou pouvez déterminer quelles actions sont effectuées dans un script, il est inutile d'utiliser un shell restreint pour les scripts.
muru
@muru Okay. Donc, cela pourrait être utilisé à des fins que Zanna a dit dans son commentaire.
daisy
1
Cela est utile pour un administrateur système car il peut empêcher d'autres utilisateurs d'effectuer des tâches dangereuses. Il est un peu moins utile à l'utilisateur final.
17

rbash est une version restreinte (capacité réduite) de bash. Voir cet article: https://en.wikipedia.org/wiki/Restricted_shell

De l'article:

Les opérations suivantes ne sont pas autorisées dans un shell restreint:

changing directory
specifying absolute pathnames or names containing a slash
setting the PATH or SHELL variable
redirection of output

bash ajoute d'autres restrictions, notamment:

limitations on function definitions
limitations on the use of slash-ed filenames in bash builtins

Les restrictions dans le shell Korn restreint sont à peu près les mêmes que celles du shell Bourne restreint.

Soren A
la source