sudo是一个非常好用、非常普及的程序,广泛存在于许多Linux教程中,但是在FreeBSD的基本系统(BASE)中,却没有使用这个OpenBSD的小工具,比较令人费解。
针对网上的一些资料,以及几个关于sudo的讨论,总结了一下sudo的优缺点:
一、使用sudo的理由:
1、使用sudo,没有必要知道root密码,甚至可以给root设置一个非常长的密码,甚至有的人说可以不让root登录,从某一角度来说,会使系统更安全;
2、sudo可以记录“一切”命令,给系统的追查带来便利;
3、sudo可以限制某些程序,相当于给系统多了一层保障;
4、sudo可以在某些情况下,自动执行运行指定的命令,给脚本系统带来便利;
5、如果一个系统中有多个人使用root权限,如果某一位离职,只重置这位员工的密码即可。反观使用su的情况,如果修改root密码,必须同时告知所有使用root权限的员工新密码,并且su的模式中,多一个人知道,就多一份被窃的危险;
6、用户在输入sudo这几个字符的时候,会在潜意识中提醒这是在执行root权限,从而给系统带来一些安全感;
7、(FreeBSD中不存在这条)使用root登录,会被黑客暴力破解密码,因为root是一个都众所周知的帐号。
二、不使用sudo的理由
1、sudo使用了suid标志,这个标志将使sudo运行的所有程序都有root权限,会带来很大的安全隐患;
2、sudo穿透日志系统和审计系统,不会在系统的日志里面记录什么时候使用了root权限,也会穿过审计系统;
3、因为sudo使用的是用户自己的密码,跟正常的登录密码相同,所以一旦用户的密码被窃取,那就等于少了一道屏障;而su使用的是root密码,即使普通密码被窃,也不会获得root密码;
4、如果一个系统中有大量用户,那么编写一个合适的sudo规则,是一件非常困难的事情,稍不注意,就会留下安全的漏洞;
5、sudo只能执行单一命令,对于需要cd等多条命令来说,就不是很方便;
6、sudo sh会带来很大的隐患,起码会绕过sudo的日志系统;
7、这条稍微有点洁癖:为什么要以张三的身份来做李四的事情?
8、证书登录的用户,使用sudo时仍然需要输入密码,这有背于证书的本义(虽然可以通过其他手段解决掉);
三、总结
比较一致的观点是:对于系统中有多个管理员需要root权限,最好使用sudo。
四、本人观点:
1、什么样的场合需要多人共用root密码?我认为这种情况是工作分工出了问题。
2、有能力sudo的时候,会不会有能力删除掉sudo的日志?
3、把su禁用,仅使用sudo会是什么样子?