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

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

文章图片

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

首先我们平常接触最多的肯定就是 windows 。 其实 windows 是支持多用户的 , 但在 windows 时代 , 盗版横行 , 各种一键安装都是默认使用 administrator 账号 , 这就是所谓的超级管理员账号 。
因为是超级管理员账号 , 所以在这个账号下用户运行的所有程序都具备了超级管理员权限 , 也就是可以修改系统内的所有信息 。

我们对sudo的误解应该是比较大 , 常规理解它只是一个获取命令root执行权限的途径 , 并没有关注到它的其它用法 。 sudo是一个用于基于UNIX和Linux的系统的实用程序 , 它提供了一种有效的方法 , 允许特定用户在系统的root(最高权限)级别上使用特定的系统命令 。
sudo还会记录所有命令和参数 。 基于sudo管理的多用户操作系统 , 最高权限管理员(root)可以做到:
控制让某些用户(或用户组)能够在系统的root权限级别运行某些(或所有)命令
控制用户可以在每个主机上使用哪些命令 , 从日志中清楚地看到哪些用户使用了哪些命令
使用时间戳文件 , 控制用户在输入密码并被授予适当特权后输入命令的时间
就这样 , 整个生态都被绑到了超级管理员身上 。 从刚开始的偶然使用 , 到后面的不得不使用 。 安全风险很高 。
其实 , 我们正常使用电脑 , 无非就是办公、聊天、浏览网页、下载、看片 , 这些功能完全不依赖也不应该依赖所谓超级管理员权限 。 如果用不到 , 就不用额外授权 。 因为授权越多 , 风险就越大!

现在我们回到 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 权限 。 但这一类操作也都很低频 , 没有必要为了这些事而背负那么大的风险 。
【Linux|为什么Linux用户用sudo命令而不直接使用root用户?】所以日常使用普通账号 , 只在必要的时候使用 sudo 做一些特权操作是一种非常安全的使用习惯