为什么Linux用户用sudo命令而不直接使用root用户？
因为sudo相对于你直接使用root，更加兼顾了"Safe"和"Security"两个方面。 首先就是Safe（安全），这个安全是指生产操作上的安全性，比如电力行业的“绝缘”，比如建筑行业的安全帽等，而对于计算机来说sudo可以让你的操作更加Safe，相比于直接使用root，sudo可以让你平时处于非特权用户的状态，避免你误操作对系统的损坏。 举个简单的例子，一个Linux系统的使用者或者系统维护人员，每天可能要在终端上敲成百上千甚至上万条命令。比如你写了一个脚本，里面想写"rm -rf  ./*"，但是你不小心少写了一个点"."，写成了"rm -rf /*"，如果你登录的直接就是root用户，那么后果可想而知，但是如果你是一个普通用户，那这行基本上就会给你报很多错误告诉你权限不够。 这只是一个例子而已，实际工作中我们很可能会敲错一些字符什么的，导致操作出现失误。那么如果你绝大部分情况都使用的非特权用户，则可以避免很多误操作的扩大性影响。而sudo也会提醒你输入密码，同时顺便提醒你当前在执行特权操作，如果你本身没有想申请特权操作，那么这样就可以提示你检查下面操作的安全性。 我和很多入行的新人都说过，除非你登录的是一台测试机，否则不要养成直接使用root登录系统的习惯。现在的很多Linux发行版都注意在安装系统的时候不让用户使能root用户的登录，甚至连ssh登录root有时都不默认打开。这在多年前是还没有引起重视的，我以前就有同事喜欢直接使用root登录自己的工作机，他们就是觉得反正电脑是我自己的，我拥有最大权限无可厚非。直到某一天有一个同事找到我，问我“我不小心执行了rm -rf /lib，我大概5秒钟发现了不对劲赶紧cut了，现在如果把你的/lib给我拷一份还能救一下吗？”。。。 相比于Safe所表示的安全，这个安全偏向于指信息安全，比如防止黑客攻击，安全系统权限等。从Security的角度来说，sudo也是有帮助的。你登录一个普通用户，你当前的进程就是一个非特权进程，那么你后面的很多操作产生的子进程，如果没有特殊条件（这里就先不讲Capabilities等内容了），基本也都是没有特权的子进程。比如你不小心触发执行了某个带病毒的程序，或者某个恶意程序进入了你的系统。因为你处于非特权运行的状态下，那么这些恶意程序需要做的第一件事往往是想办法“越权”获得高级别的权限，好能做更多事情。它们能不能找到漏洞越权成功那是另一个问题，但是如果你本身就是root登录的，那么恶意程序起来后基本不用越权，舒舒服服的就得到了超级用户权限，美滋滋。 除了权限问题以外，Security还包含其它很多方面。比如“审计”。审计也是系统安全的重要组成部分，谁在什么时间执行了什么操作，需要有据可寻。我经常和新人说，你们要时刻提醒自己，Linux是一个多用户的操作系统（当然很多别的系统也是），要摆脱你们以前用自己的电脑打游戏上网的那种习惯，当你登录到一台Linux的主机后，你要时刻提醒自己当前在这台机器上的可能还有很多人，你不能想干嘛就干嘛。这一点听起来很容易，但是实际上很多新人一上机就经常不注意。我记得以前我就经常在一台远程的测试机上调试着半截程序呢，被其它人莫名其妙的就关机了（有些人重启自己电脑重启习惯了）。给你关机还是小的，给你卸载重做文件系统，给你删东西的比比皆是。 言归正传，因为一台Linux主机上经常有很多用户，所以“审计”是必要的。比如我登录了我的普通用户，比如叫zuiwo。那么当我通过sudo打开nfs服务的时候，审计会记录： 我们可以看到是zuiwo这个用户通过sudo获得了权限然后打开了nfs服务。如果这不是一个预期的操作，那么管理员在检查审计日志后会询问zuiwo这个用户“你为什么要在这台机器上打开nfs服务以及其端口，目的是什么？”这就是审计。而如果你直接用的就是root，那么你只会得到： 那么你只能知道是root用户做了打开nfs服务的操作，但是是谁使用的root用户你就不知道了（当然你可以通过登录日志查看哪个ip在哪个时间登陆了root用户，但是ip是谁你就不一定能查的到了，况且如果是很多内部正常的ip地址登录的root，你更无从知道是谁干的了。) 所以sudo还是有其设计的初衷的，并且有其重要的“安全”和“安全”的意义。当然sudo的好处不只限于以上说的，我不想展开更多了，就到这里吧。最后还是推荐入坑Linux的用户，日常尽量不要直接使用root用户登录你的工作机，除非这系统你毁了不心疼。