有什么理由不以 root 身份运行 bash?

有什么理由不以 root 身份运行 bash?

我刚刚注意到在 OS X 10.6.4 上 root 的 shell 设置为/bin/sh。运行 Bash 是否存在安全问题或其他问题?

答案1

我认为出于 Unix 兼容性原因,默认的 root shell 是 /bin/sh。

http://en.wikipedia.org/wiki/Bourne_shell

我相信,/bin/sh 曾经是一个 zsh shell。Apple 将其更改为 bash,因为 zsh 不符合 POSIX 或类似要求。

编辑:

Makefile 源代码,显示 /bin/sh 是从 bash 源构建的。

编辑#2:

无聊,我检查了一下。看来 Mac OS X 10.1.5 是最后一个使用 zsh 执行 /bin/sh。 它是改为 bash在 10.2 中。

答案2

Ubuntu 为了速度,使用 dash 作为默认系统 shell,而不是 sh。我猜如果确实是 sh,那么原因可能是一样的。

这里有充分的理由说明为什么 bash 并不是作为默认系统 shell 的最佳选择:https://wiki.ubuntu.com/DashAsBinSh

答案3

/bin/sh 不是 Bash 吗?

在 /bin 中执行“ls -lisa”。然后在目录中执行“./sh -version”,sh 将自身标识为 GNU bash。

答案4

将 root 的登录/交互式 shell 设置为/bin/bash不会影响具有#!/bin/sh作为其 shebang 行的 shell 脚本。对于这些脚本,无论文件充当什么角色(/bin/sh无论是独立可执行文件还是符号链接或硬链接)都将用于解释该脚本。对于以这种方式从命令行运行的脚本也是如此:sh script

将 root 用户的交互式 shell 设置为 /bin/bash 是完全没有问题的。

相关内容