为什么Linux用户用sudo命令而不直接使用root用户?

2022-01-20 14:36发布

首先我们平常接触最多的肯定就是 windows。其实 windows 是支持多用户的,但在 windows 时代,pirate横行,各种一键安装都是默认使用 administrator 帐号,这就是所谓的超级管理员帐号。

因为是超级管理员帐号,所以在这个帐号下用户运行的所有程序都具备了超级管理员权限,也就是可以修改系统内的所有信息。

我们对sudo的误解应该是比较大,常规理解它只是一个获取命令root执行权限的途径,并没有关注到它的其它用法。sudo是一个用于基于UNIX和Linux的系统的实用程序,它提供了一种有效的方法,允许特定用户在系统的root(最高权限)级别上使用特定的系统命令。

sudo还会记录所有命令和参数。基于sudo管理的多用户操作系统,最高权限管理员(root)可以做到:

控制让某些用户(或用户组)能够在系统的root权限级别运行某些(或所有)命令

控制用户可以在每个主机上使用哪些命令,从日志中清楚地看到哪些用户使用了哪些命令

使用时间戳文件,控制用户在输入password并被授予适当特权后输入命令的时间

就这样,整个生态都被绑到了超级管理员身上。从刚开始的偶然使用,到后面的不得不使用。安全风险很高。

其实,我们正常使用电脑,无非就是办公、聊天、浏览网页、下载、看片,这些功能完全不依赖也不应该依赖所谓超级管理员权限。如果用不到,就不用额外授权。因为授权越多,风险就越大!

现在我们回到 linux。Linux 下的超级管理员帐号叫 root,拥有无限权力。

一般来说,安装 linux 的时候会要求创建一个普通帐号。如果需要执行特权操作的时候可以运行 su 切换到 root 或者直接使用 sudo。初学者觉得会很麻烦,认为直接用 root 登录最方便。

但 linux 中有句名言With great power comes great responsibility,中文就是能力越大责任越大。linux/unix 系统无条件相信使用者,它假设使用者知道自己在做什么。所以当你运行 rm 的时候,linux/unix 一般不会要求二次确认,一般也不会有回收站的功能。主人要我删除文件,系统一定严格执行命令。如果你用的是 root 帐号,你就可以操作所有文件。如果你还是初学者,那大概率会出现误操作,出了问题大都比较严重。

所以说,一般要尽量避免直接使用 root 帐号。像 ssh 默认都不允许使用 root 帐号登录,好多工具在运行的时候也会检测当前是不是 root 帐号,如果是则主动退出,防止出现不可挽回的悲剧。

另一方面,在 linux/unix 下,绝大多数功能都可以使用普通帐号完成,根本不需要 root 帐号。那问题来了,哪些功能需要 root 帐号呢?比如对硬盘进行分区和格式化、设置网卡IP、更新网络路由配置、管理系统帐号、安装系统级的软件等等。这一类操作都需要修改系统分区上的文件,所以需要 root 权限。但这一类操作也都很低频,没有必要为了这些事而背负那么大的风险。

所以日常使用普通帐号,只在必要的时候使用 sudo 做一些特权操作是一种非常安全的使用习惯