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