1.. 为什么我们都建议不要用 root 账号登录?
> ROOT means system manager
> 有操作系统及控制系统运作的一切权限
没错,root 的权限太大了,如果 root 造成了问题,例如触发了病毒、执行了木马程式、错误删除档案、…等等,都可能是无法挽救而且是致命的~~
所以,除非迫不得己,不要用 root 来登录系统。当真需要的时候,请用 su 或 sudo 来做。
2.. 为什么不要把 . 加到 $PATH 中?
现 在如果你把 . 加到$PATH
假如有人在tmp底下放一个叫做ls的shell script
#! /bin/sh
/bin/rm -rf /
然后root跑到/tmp底下 下个ls…
了解到会发生什么状况了吧~
3.. 为什么用 root 执行命令最好用绝对路径?
这道理和前面一个其实是很类似的
假设你的$PATH是这样
/bin:/usr/bin:….
你要执行的命令放在/usr/bin
如果有某个有心人士设法把相同名称的指令放进了/bin
你执行到的是哪个指令 呢?…
上两题前面有朋友回答过了,说得非常好,请参考。
补充一点:
由于可能会被 root 执行的 shell script,通常也会重新定义 PATH 变数,以限制命令的读入范围,
当然,最好还是用绝对路径了~~(如果连命令本身都已经 成了木马程式,或被修改过,那就另当别论。)
4.. 为什么我们要设定 umask ?
> 控制档案产生后的预设权限
‘ 效果’是设定预设权限,‘目的’就是确定档案只能被授权的账号执行或修改或读取。比方说,在 redhat 系统上,root 的 umask 是 022 ;而普通账号则是 002 ,您会发现 root 被 umask 拿掉的权限更多。而钗h程式在建立新档案的时候,也会调整 umask 之后才进行。
5.. 为什么谨慎使用 chown 和 chmod ?
> chown是改变群组和持有人
> chmod是改变档案 r w x 三权限
不小心使用,会让有些本来不应该获得权限的人‘意外’的获得了权限,当然也会让本来应该获 得权限的人失去了权限。如果觉得 permission 还不足以保护,那么,再利用 attribute (chattr)来作进一步的保护。
为 什么我们要在系统上面设定档案权限?请好好思考一下~~!我们要知道:
“设定权限不是目的,而是手段而已。”
6.. 为什么不要谨慎使用 SGID 和 SUIG?
> 就等于别人利用你的模样做坏事
准 确来说,主要是针对 root 权限来设定的,这往往是程式设计者或管理员要花心思好好设定才对,绝对不能贪图方便,而大开 root 的 SGID 和 SUID 。(后面我提到的 sendmail ,有些动作就必须以 root 来执行,所以也让 sendmail 成了入侵者的最爱~~)
当 然,好的 SGID 和 SUID 还能限制程式只能由某些权限低的账号来执行。您应该会明白为什么 apache 所 fork 出来的 children ,都是 nobody 身份了吧?
7.. 为什么我们会使用 sudo 来限制普通使用者执行 root 的动作?
> 如果没有sudo的话
> 要执行只能靠su之后,再动作
> 那就需要知道root’s passwd
不是那么简单:
首先,root 的密码不宜对太多人公开。其次,如果一个人成为 su 之后,可以用 root 身份做任何事情,但用 sudo 的话,您可以限制一个人用 root 身份做特定的事情。
8.. 为什么 ftp 和 telnet 会拒绝 root 连线?
> root 最大最有影响力
对,也是老生常谈的问题啦。再陪搭 PAM、tcpwrapper、ipfilter 这些机制,来限制服务和程式的执行对象,也在很大程度上避免了高权限服务程式的危险性。
9.. 为什么要随时留意安全资讯,并及时修补程式漏洞?
> 因为病毒的日新月异
> 和漏洞的发现都可能发生在每一个今天
因 为任何程式有可能获得 root 的权限,例如前不久的 wu-ftp 漏洞,bind 漏洞,rpc 漏洞,等等…如果不及时修补,后果非常危险。如果那些程式漏洞不能获得 root 的权限,那么入侵者也不愿意花大量时间去破解,毕竟要考虑“投入/回报”比率的。
10.. 为什么 sendmail 后来加入了 restricted shell ?
> 不清楚………没玩sendmail server
前面谈 SUID/SGID 和程式漏洞的时候,知道有些程式会获得 root 的权限,而 sendmail 在过往之所以最被入侵者喜爱,也最为人不满之处,就是破解 sendmail 很容易获得 root 权限,其因之一,就是 sendmail 允阴z呼叫其它命令,或将结果 pipe 到 shell 中执行,而这样的 shell 有可能是一个 root shell ,所以非常危险。
后 来,sendmail 在编译的时候,允许加入 restricted shell 只有那些被置于(或 link 至) rsh 底下的命令才能被 sendmail 执行,
这样在一定程度上,限制了 sendmail 的活动范围。
同样的,人们在编译 bind 的时候,也是使之以 named 的身份来执行,同时也用 chroot 来限制 named 的活动范围,其目的,也是防范入侵者活动 root 权限而损害系统的安全性。
回到我们前面讨论的,以病毒为例也一样:如果这个病毒是 root 执行的,那它就可以为所欲为了;但如果病毒以权限较低的身份来执行,那它的影响也是有限的。所以,为什么 linux 下面没有人乐意写病毒?或是比较少听到 linux 有病毒发作呢?因为真要病毒发挥威力,是有一定条件的。而不像是 windows 系统,任何一个人(或 script)执行病毒,效果都一样的。
既然这样,您愿意花大力气在 linux 系统上发展病毒、然后等那些无知的 root 来执行吗?难度显然高多了!~~当然,也不是没有人会在 linux 上发展病毒,只是,其“投入/回报”比率的多寡,和愿意投入度的取舍而已~~