我正在学习常见的shell程序。
当我运行时cat /etc/shells
,它显示:
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
这是什么/bin/rbash
?它在脚本中使用吗?
答案1
rbash 是 bash 的一个受限(功能减少)版本。请参阅此文章:https://en.wikipedia.org/wiki/Restricted_shell
摘自本文:
在受限 shell 中不允许执行以下操作:
changing directory specifying absolute pathnames or names containing a slash setting the PATH or SHELL variable redirection of output
bash 增加了进一步的限制,包括:
limitations on function definitions limitations on the use of slash-ed filenames in bash builtins
受限 Korn shell 中的限制与受限 Bourne shell 中的限制大致相同。
答案2
从维基百科
受限 shell 是一种 Unix shell,它限制了交互式用户会话或其中运行的 shell 脚本的某些功能。它旨在提供额外的安全层,但不足以允许执行完全不受信任的软件。在原始 Bourne shell[1] 及其后来的对应 bash[2] 和 Korn shell[3] 中都可以找到受限模式操作。在某些情况下,受限 shell 与 chroot jail 结合使用,以进一步尝试限制对整个系统的访问。
看Soren A 的回答针对受限 shell 的限制。
您可以bash
在受限模式下运行
bash -r
bash --restricted
在我的系统上:
$ file /bin/rbash
/bin/rbash: symbolic link to bash
所以如果我跑步/bin/rbash
,我就跑步bash
但
创建一个名为 rbash 的链接直接指向 bash 就足够了。虽然这会直接调用 bash,而不需要
-r
或--restricted
选项,但 bash 确实会识别出它是通过 rbash 调用的,并且它会以受限 shell 的形式出现。
您可以轻松测试:
zanna@monster:~$ rbash
zanna@monster:~$ cd playground
rbash: cd: restricted