当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux入门

关于root用户最好使用sh的解释和变通

关于root用户最好使用sh的解释和变通--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
原写:linuwa

很多系统的默认shell是sh,root用户尤其如此,为什么不用更舒服的bash或其他shell呢?

你肯定能想到是只可能是为了安全起见,但到底是什么理由呢?

我们来玩一玩。

一个基本的原则是:系统必须在严重故障的时候还能够运行最基础的程序。假如你的shell都无法启动了,那就差不多没救了。

大家试试这两个命令 ldd /bin/sh 与 ldd /bin/bash (注意,sh和bash的默认安装目录随系统不同而不同),看看有什么区别:

不同的系统会得到不同答案,但有一个共同点,sh依赖的东西比bash的少,甚至不依赖(fedora用户的结果可能是sh与bash依赖的一样,因为fedora默认把sh链接到了bash),在10版以前的Solaris上你还会看到sh是一个静态连接的程序,不依赖任何东西:

$ ldd /sbin/sh
ldd: /sbin/sh: file is not a dynamic executable or shared object

静态链接的程序包含了所有的代码,不需要依赖其他东西. 他们的文件大小比动态链接的文件要大.

如果被依赖的东西被删除了或损坏了,或者被依赖的东西所在的文件系统损坏了或者没有被mount上,/bin/sh仍然可以执行。

所以推荐大家使用/bin/sh (或许是/sbin/sh)作为缺省的root shell

但是,对于新版本的系统,用bash也安全,这些系统中bash一般只依赖/lib下的东西,而/lib存在于/ 文件系统,所以还是比较安全的

而且对于像Solaris这样的系统,用bash也可以高枕无忧,因为在bash等失败的时候它会自动切换到sh。

还有些我没理解的,大家多交流学习,谢谢。
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有