这个理由,我觉得可以这么解释:
那么展开说说这两个话题。
首先,为什么需要让用户平时处于普通权限下呢?
因为,实际上没有办法保证使用电脑的时候发生的所有事情都是用户主观知情的。
这里边的第一个例子,就是恶意软件。——我们显然不可能要求每个用户都通读了自己运行的软件的全部源代码,并且吃透,才能运行一个软件。——如果所有用户都常态在管理员权限下使用电脑,那么用户的应用程序就会习惯于使用全部的权限,从而可以任意的执行恶意代码,不被用户知道。
为了对恶意软件进行限制,设计操作系统的时候,设计为普通用户在普通权限下使用操作系统。仅仅当运行某些需要特殊权限的应用时,才会需要root权限。
对于Linux这样的系统来说,需要特殊权限的软件,需要能够说服专业用户他们为什么需要更高的权限,不然这些软件的设计就存在问题,会被社区批判。
现在的事实就是:使用Linux桌面应用的时候,绝大多数情况下,你根本不需要root权限。因为Linux应用就是为这样的环境开发的。
只有一个操作系统一开始的设计就贯彻了应用程序必须在普通用户权限下正常运行,这个操作系统的权限体系才会是完善的。
也就是说:这个机制保证了应用程序不会偷偷使用高权限功能。当他们需要使用高权限功能的时候,必须显式的告诉用户,让用户主动决定临时提权。
然而Windows系统在这个问题上则积重难返,因为当初的Windows是不限制权限的,而为了保证兼容,也就必须让这些应用程序都能够正常运行。大量的应用根本无法在没有最高权限的环境中运行。
比方说,我一直不理解原神这种软件,纯粹只是一款游戏,为什么需要管理员权限才能运行。——有些人问它为什么不上steam,我就乐了,steam上绝大多数游戏是不需要管理员权限的。
Windows不用sudo,直接用管理员账号,于是,Windows的软件生态就自然会形成:非常多的软件被设计为没有管理员权限不让使用。并且他们会习以为常。这对用户的权益是很大的侵害。
现在来说说第二个理由。sudo用于保护与维持当前用户的用户环境。
Linux与Windows不同,它一开始就被设计为「多人使用」,它是一个多用户多任务操作系统。
多人使用的一个重要特点,那就是允许多个用户以不同用户名登录并且保持自己的运行环境。
这种运行环境可以是什么呢?比方说我用双拼输入法你用五笔输入法,比方说我的电子邮件跟你不同,系统默认打开的邮箱不同。比方说我用的vim是白色配色,你用的vim编辑器是黑色。我用的vim装了十个插件,你用的vim装了另外8个与我不一样的插件。比方说我用bash你用zsh命令行,我们每个人的命令行提示符都不同,比方说我用xterm你用konsole,我们用的终端仿真软件不同。比方说我跟你的桌面图标不同,桌面壁纸不同。等等等等。
每个人有不同的使用习惯,每个人有不同的配置以及环境。
使用 sudo vim 编辑的时候,会使用我的当前用户的 vim 环境,以及实现我当前配置的语法着色。
但如果换用 root 用户,那么就没有办法做到了。——我需要将我的配置在root用户下重新配置一遍,才会有我熟悉的环境。
root 用户只有一个,假如 Linux 需要多人使用,它应该被配置为谁的环境呢?
一个Linux电脑允许多个用户以多个不同的用户名使用。当使用root的时候,每个人使用它,都可能会把 root 修改为不同的环境 。不同的桌面,不同的输入法,不同的浏览器,不同的邮件,不同的搜索引擎,不同的xp。。。
多用户这个设计思路一开始就根植于 Linux 操作系统的设计中,那么这个root究竟怎么使用?——回答就是root用户本来就是被设计为仅用于临时维护,比方说当用户自己的用户账号出问题的时候,本机用root用户登录去解决。甚至某些系统会禁用root用户账号。
Linux 系统从设计之时就是多用户操作系统,当你理解这个设计思路的时候,就会发现,让所有用户同时使用 root 是一个不可接受的方案,你没法让多个用户共享同一个用户名同时相安无事,根本没有办法让多个用户具有好的体验,用户自己的账号+sudo机制显然会比直接用 root 用户的方案更好。
以上就是,我个人理解的,比较明显的两个理由。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有