公司新到一台服务器,部门 50 个人都要用。如果装的是 Linux,管理员敲几条命令建好账号,50 个人各自 SSH 登录,同时干活,互不干扰,一分钱额外费用没有。如果装的是 Windows,想让 50 个人同时远程登录,得上 Windows Server,装远程桌面服务,还得按人头购买 CAL 授权,一套下来价格不菲。
同样是"多用户",为什么差别这么大?答案藏在两个系统的出身里。这篇文章讲清楚 Linux 和 Windows 多用户机制的历史渊源、设计哲学差异,顺便把 SAM 数据库、AD 域、UAC 这些让人头大的概念一次说明白。
Unix:多用户是出生证明,不是功能
先说 Linux 的祖师爷 Unix。
上世纪六十年代,计算机是稀罕物,一台机器比一栋楼还贵。让一台机器只伺候一个人,就像包下整架波音 747 只为送一封信——太奢侈了。于是"分时系统"应运而生:机器的算力切成小片,轮流分给几十个坐在终端前的人,每个人都感觉机器在专门为自己服务。
1969 年,贝尔实验室的 Ken Thompson 在一台落灰的 PDP-7 小型机上写出了 Unix 的雏形。它继承的正是分时系统的血统:多个人同时用一台机器,是这个系统存在的前提,而不是后来添加的功能。
所以 Unix 从第一天起就要回答三个问题:你是谁(账户)、你能动什么(权限)、你和别人怎么互不打扰(隔离)。UID、文件的 rwx 权限位、每人一个家目录,这套设计在七十年代就定型了,一直沿用到今天的 Linux。打开任何一台 Linux 机器的 /etc/passwd,看到的仍然是那个时代的设计——朴素的文本文件,一行一个用户,谁都能看懂。
冷知识:微软曾是全球最大的 Unix 厂商
这里插一段很多人不知道的历史。
1978 年,微软从 AT&T 买下了 Unix 授权,1980 年推出自己的 Unix 发行版,取名 XENIX。当时比尔·盖茨的判断是:等个人电脑性能够强了,Unix 就是未来的操作系统。到八十年代中后期,XENIX 成了装机量最大的 Unix 版本,盖茨后来自己都说,微软长期持有 AT&T 出货量最大的 Unix 授权。
也就是说,微软不是不懂多用户系统,它一度是这个领域的头号玩家。只是后来 MS-DOS 和 Windows 在个人电脑市场太赚钱,微软掉头押注"一人一机",把 XENIX 卖给了 SCO。
这个选择决定了 Windows 之后三十年的技术路线:个人电脑不需要多用户,先跑起来再说。 DOS 和 Windows 95/98 连"登录"这个概念都是装饰性的——按下取消照样进桌面,所谓密码形同虚设。用过那个年代电脑的人应该还有印象。
Windows 的补课之路:从 NT 到 Vista
单用户的底子终究撑不起企业市场。微软的补课从 1993 年开始,断断续续补了十几年。
第一课:1993 年,Windows NT。 微软从 DEC 挖来了传奇工程师 Dave Cutler——VMS 操作系统的缔造者——从零打造了 NT 内核。NT 从设计上就是完整的多用户系统:有真正的账户体系、安全标识符(SID)、精细的访问控制列表。今天的 Windows 10/11,内核都是 NT 的后代。可以说,现代 Windows 的多用户能力,是一个 VMS 老兵带队补上的。
第二课:2000 年,Active Directory 登场。 解决了单机多用户,企业里成百上千台机器的账户怎么管?Windows 2000 给出了答案:AD。
第三课:2001 年,Windows XP 的"快速用户切换"。 家里一台电脑,爸爸一个账号、孩子一个账号,可以不注销直接切换。听起来很多用户?注意关键词是"切换"——同一时刻,屏幕前只有一个活跃会话,另一个人的会话被冻结在后台。这和 Unix 那种 50 个人同时在线干活,是两码事。
第四课:2006 年,Vista 引入 UAC。 这是 Windows 在权限管理上最重要、也最挨骂的一次补课,同样留到后面细讲。
一边是 1969 年出生就会走路,一边是 1993 年开始学、2006 年才补完最后一课。
SAM 数据库——Windows 的"户口本"
Linux 存用户信息的方式,前面提过:/etc/passwd 存账户,/etc/shadow 存密码哈希,纯文本,vim 打开就能看。透明得像贴在村口的花名册。
Windows 走的是另一条路。本地账户信息存在 SAM(Security Accounts Manager,安全账户管理器)数据库里,它是注册表的一部分,位于 C:\Windows\System32\config\SAM,二进制格式,系统运行时被内核锁死,连管理员都无法直接打开。相当于户口本锁在保险柜里,还灌了水泥。
设计初衷是安全:看不见就偷不走。但现实给了微软一记耳光——安全研究员 Benjamin Delpy 开发的 Mimikatz 工具,能从内存中直接抓取账户凭据,多年来一直是渗透测试和黑客攻击的标配武器。这个故事告诉我们一个朴素的道理:把门锁得厚,不代表窗户关得严。
Linux 的户口本是明文的花名册,Windows 的户口本是保险柜里的加密档案——但保险柜也有被撬的时候。
AD 域——把一千台电脑管成一台
现在想象一个 500 人的公司,每人一台电脑。如果每台电脑各管各的账户,员工小王入职,IT 得跑 500 台机器建账号?小王离职,再跑 500 台删一遍?IT 部门当场辞职。
Active Directory(活动目录,简称 AD) 就是治这个病的药。它的核心思路是:账户不再存在每台电脑本地的 SAM 里,而是集中存在一台(或几台)叫域控制器的服务器上。所有加入这个体系的电脑,组成一个"域"。
打个比方:域就像一栋写字楼的门禁系统。员工的工牌信息(账户)统一登记在物业中心(域控制器),而不是每扇门自己记一份名单。小王入职,物业录入一次工牌,全楼的门都认;小王离职,物业注销一次,全楼的门同时失效。想限制他只能进三楼?改一条策略就行。
技术上,AD 的底层用的是 Kerberos 认证协议和 LDAP 目录协议——有意思的是,这两样都源自 Unix 世界的开放标准。微软拿来之后做了深度的产品化包装,反而做成了企业账户管理的事实标准。今天国内大厂的"域账号"“内网统一登录”,背后十有八九站着 AD 或它的模仿者。
这也是 Windows 多用户故事里最戏剧性的反转:单机多用户上补课的学生,在"跨机器管理多用户"这门课上,考了全班第一。 Linux 阵营虽有 FreeIPA、OpenLDAP 等对应方案,但论开箱即用和管理体验,至今仍在追赶。
UAC——那个总弹窗问"是否允许"的家伙
用 Windows 时都见过这个场景:装软件,屏幕一暗,弹出一个框——“你要允许此应用对你的设备进行更改吗?”
这就是 UAC(User Account Control,用户账户控制),2006 年随 Vista 登场。
它解决的是一个历史遗留病:Vista 之前,绝大多数 Windows 用户天天用管理员账户干所有事——上网、收邮件、打游戏,全程顶着最高权限。病毒木马自然乐开了花:感染了你,就等于拿到了整台机器。
UAC 的思路,其实是向 Unix 的 sudo 机制致敬:平时用低权限干活,需要高权限时临时申请,用完即收。 开启 UAC 后,即使登录的是管理员账户,日常也以降权状态运行,碰到敏感操作才弹窗确认。
区别在于交互方式。Linux 的 sudo 要求输入密码、在命令行里明确请求,用户清楚自己在干什么;早期 UAC 则是见缝插针地弹窗,装个软件弹三次,改个设置又弹一次。用户被弹到麻木,最后养成了闭眼点"是"的肌肉记忆——安全机制沦为了"点击确认"体操。苹果当年还专门拍了一支广告挖苦这件事,广告里 Vista 的"保安"每句话都要问一遍"Cancel or Allow?",一时传为笑谈。后来微软在 Win7 里大幅减少了弹窗频率,UAC 才算真正立住。
顺带纠正一个常见误解:Windows 的 Administrator 并不等于 Linux 的 root。root 在系统里几乎不受限制;而 Administrator 头上还有 SYSTEM、TrustedInstaller 这些更高的权限主体——管理员死活删不掉某个系统文件,原因就在这。Windows 的权力金字塔,比很多人想
# Linux 和 Windows 多用户机制对比:一个生而多用户,一个补课三十年
公司新到一台服务器,部门 50 个人都要用。如果装的是 Linux,管理员敲几条命令建好账号,50 个人各自 SSH 登录,同时干活,互不干扰,一分钱额外费用没有。如果装的是 Windows,想让 50 个人同时远程登录,得上 Windows Server,装远程桌面服务,还得按人头购买 CAL 授权,一套下来价格不菲。
同样是"多用户",为什么差别这么大?答案藏在两个系统的出身里。这篇文章讲清楚 Linux 和 Windows 多用户机制的历史渊源、设计哲学差异,顺便把 SAM 数据库、AD 域、UAC 这些让人头大的概念一次说明白。
## Unix:多用户是出生证明,不是功能
先说 Linux 的祖师爷 Unix。
上世纪六十年代,计算机是稀罕物,一台机器比一栋楼还贵。让一台机器只伺候一个人,就像包下整架波音 747 只为送一封信——太奢侈了。于是"分时系统"应运而生:机器的算力切成小片,轮流分给几十个坐在终端前的人,每个人都感觉机器在专门为自己服务。
1969 年,贝尔实验室的 Ken Thompson 在一台落灰的 PDP-7 小型机上写出了 Unix 的雏形。它继承的正是分时系统的血统:**多个人同时用一台机器,是这个系统存在的前提,而不是后来添加的功能。**
所以 Unix 从第一天起就要回答三个问题:你是谁(账户)、你能动什么(权限)、你和别人怎么互不打扰(隔离)。UID、文件的 rwx 权限位、每人一个家目录,这套设计在七十年代就定型了,一直沿用到今天的 Linux。打开任何一台 Linux 机器的 /etc/passwd,看到的仍然是那个时代的设计——朴素的文本文件,一行一个用户,谁都能看懂。
## 冷知识:微软曾是全球最大的 Unix 厂商
这里插一段很多人不知道的历史。
1978 年,微软从 AT&T 买下了 Unix 授权,1980 年推出自己的 Unix 发行版,取名 XENIX。当时比尔·盖茨的判断是:等个人电脑性能够强了,Unix 就是未来的操作系统。到八十年代中后期,XENIX 成了装机量最大的 Unix 版本,盖茨后来自己都说,微软长期持有 AT&T 出货量最大的 Unix 授权。
也就是说,微软不是不懂多用户系统,它一度是这个领域的头号玩家。只是后来 MS-DOS 和 Windows 在个人电脑市场太赚钱,微软掉头押注"一人一机",把 XENIX 卖给了 SCO。
这个选择决定了 Windows 之后三十年的技术路线:**个人电脑不需要多用户,先跑起来再说。** DOS 和 Windows 95/98 连"登录"这个概念都是装饰性的——按下取消照样进桌面,所谓密码形同虚设。用过那个年代电脑的人应该还有印象。
## Windows 的补课之路:从 NT 到 Vista
单用户的底子终究撑不起企业市场。微软的补课从 1993 年开始,断断续续补了十几年。
**第一课:1993 年,Windows NT。** 微软从 DEC 挖来了传奇工程师 Dave Cutler——VMS 操作系统的缔造者——从零打造了 NT 内核。NT 从设计上就是完整的多用户系统:有真正的账户体系、安全标识符(SID)、精细的访问控制列表。今天的 Windows 10/11,内核都是 NT 的后代。可以说,现代 Windows 的多用户能力,是一个 VMS 老兵带队补上的。
**第二课:2000 年,Active Directory 登场。** 解决了单机多用户,企业里成百上千台机器的账户怎么管?Windows 2000 给出了答案:AD。
**第三课:2001 年,Windows XP 的"快速用户切换"。** 家里一台电脑,爸爸一个账号、孩子一个账号,可以不注销直接切换。听起来很多用户?注意关键词是"切换"——同一时刻,屏幕前只有一个活跃会话,另一个人的会话被冻结在后台。这和 Unix 那种 50 个人同时在线干活,是两码事。
**第四课:2006 年,Vista 引入 UAC。** 这是 Windows 在权限管理上最重要、也最挨骂的一次补课,同样留到后面细讲。
一边是 1969 年出生就会走路,一边是 1993 年开始学、2006 年才补完最后一课。
## SAM 数据库——Windows 的"户口本"
Linux 存用户信息的方式,前面提过:/etc/passwd 存账户,/etc/shadow 存密码哈希,纯文本,vim 打开就能看。透明得像贴在村口的花名册。
Windows 走的是另一条路。本地账户信息存在 **SAM(Security Accounts Manager,安全账户管理器)数据库**里,它是注册表的一部分,位于 C:\Windows\System32\config\SAM,二进制格式,系统运行时被内核锁死,连管理员都无法直接打开。相当于户口本锁在保险柜里,还灌了水泥。
设计初衷是安全:看不见就偷不走。但现实给了微软一记耳光——安全研究员 Benjamin Delpy 开发的 Mimikatz 工具,能从内存中直接抓取账户凭据,多年来一直是渗透测试和黑客攻击的标配武器。这个故事告诉我们一个朴素的道理:把门锁得厚,不代表窗户关得严。
**Linux 的户口本是明文的花名册,Windows 的户口本是保险柜里的加密档案——但保险柜也有被撬的时候。**
## AD 域——把一千台电脑管成一台
现在想象一个 500 人的公司,每人一台电脑。如果每台电脑各管各的账户,员工小王入职,IT 得跑 500 台机器建账号?小王离职,再跑 500 台删一遍?IT 部门当场辞职。
**Active Directory(活动目录,简称 AD)** 就是治这个病的药。它的核心思路是:账户不再存在每台电脑本地的 SAM 里,而是集中存在一台(或几台)叫**域控制器**的服务器上。所有加入这个体系的电脑,组成一个"**域**"。
打个比方:域就像一栋写字楼的门禁系统。员工的工牌信息(账户)统一登记在物业中心(域控制器),而不是每扇门自己记一份名单。小王入职,物业录入一次工牌,全楼的门都认;小王离职,物业注销一次,全楼的门同时失效。想限制他只能进三楼?改一条策略就行。
技术上,AD 的底层用的是 Kerberos 认证协议和 LDAP 目录协议——有意思的是,这两样都源自 Unix 世界的开放标准。微软拿来之后做了深度的产品化包装,反而做成了企业账户管理的事实标准。今天国内大厂的"域账号""内网统一登录",背后十有八九站着 AD 或它的模仿者。
这也是 Windows 多用户故事里最戏剧性的反转:**单机多用户上补课的学生,在"跨机器管理多用户"这门课上,考了全班第一。** Linux 阵营虽有 FreeIPA、OpenLDAP 等对应方案,但论开箱即用和管理体验,至今仍在追赶。
## UAC——那个总弹窗问"是否允许"的家伙
用 Windows 时都见过这个场景:装软件,屏幕一暗,弹出一个框——"你要允许此应用对你的设备进行更改吗?"
这就是 **UAC(User Account Control,用户账户控制)**,2006 年随 Vista 登场。
它解决的是一个历史遗留病:Vista 之前,绝大多数 Windows 用户天天用管理员账户干所有事——上网、收邮件、打游戏,全程顶着最高权限。病毒木马自然乐开了花:感染了你,就等于拿到了整台机器。
UAC 的思路,其实是向 Unix 的 sudo 机制致敬:**平时用低权限干活,需要高权限时临时申请,用完即收。** 开启 UAC 后,即使登录的是管理员账户,日常也以降权状态运行,碰到敏感操作才弹窗确认。
区别在于交互方式。Linux 的 sudo 要求输入密码、在命令行里明确请求,用户清楚自己在干什么;早期 UAC 则是见缝插针地弹窗,装个软件弹三次,改个设置又弹一次。用户被弹到麻木,最后养成了闭眼点"是"的肌肉记忆——安全机制沦为了"点击确认"体操。苹果当年还专门拍了一支广告挖苦这件事,广告里 Vista 的"保安"每句话都要问一遍"Cancel or Allow?",一时传为笑谈。后来微软在 Win7 里大幅减少了弹窗频率,UAC 才算真正立住。
顺带纠正一个常见误解:Windows 的 Administrator 并不等于 Linux 的 root。root 在系统里几乎不受限制;而 Administrator 头上还有 SYSTEM、TrustedInstaller 这些更高的权限主体——管理员死活删不掉某个系统文件,原因就在这。Windows 的权力金字塔,比很多人想的要高好几层。
## 回到那台服务器:设计哲学的最终对决
把镜头拉回开头那台 50 人要用的服务器,现在可以看懂差价从哪来了。
**Linux 的多用户是"并发"哲学**:50 个人 SSH 同时在线,各跑各的进程,就像一栋每户独立门锁的公寓楼,大家同时住在里面,天经地义,不另收钱。字符界面轻量,一台普通配置的机器扛上百个终端会话不在话下。
**Windows 的多用户是"排队"哲学**:桌面版本质是快速切换,同一时刻一人独占;真要并发,得升级 Windows Server + 远程桌面服务 + 按用户数买 CAL 授权。就像一间豪华套房,装修确实精致,但同时只能住一位客人,想加床位,请加钱。
权限模型也是同一套哲学的延伸。Linux 用 owner/group/others 乘以 rwx 的九宫格,简洁到一行 `ls -l` 输出就能看全,覆盖九成场景,剩下的交给 ACL 补充。Windows 则是每个文件、注册表键、服务都挂一张详细的 ACL 清单,能对任意用户精确到"允许读取但拒绝删除",精细,但也复杂到多数用户一辈子没打开过那个"高级安全设置"对话框。
没有绝对的优劣,只有基因的不同。做服务器、多人共享环境、云上多租户,Linux 的并发基因如鱼得水;做企业桌面的统一管控,Windows + AD 域这套组合拳至今无人能出其右。
---
最后留一个问题:AI 时代,服务器上"同时干活"的不再只是人,还有一群 Agent——每个智能体要不要一个自己的账号、自己的权限边界?按这个趋势,1969 年那套为"人"设计的多用户体系,可能马上要为"机器用户"再进化一次了。过去五十年,多用户系统管理的是"人";未来五十年,它管理的可能是数百万个 AI Agent。
的要高好几层。
回到那台服务器:设计哲学的最终对决
把镜头拉回开头那台 50 人要用的服务器,现在可以看懂差价从哪来了。
Linux 的多用户是"并发"哲学:50 个人 SSH 同时在线,各跑各的进程,就像一栋每户独立门锁的公寓楼,大家同时住在里面,天经地义,不另收钱。字符界面轻量,一台普通配置的机器扛上百个终端会话不在话下。
Windows 的多用户是"排队"哲学:桌面版本质是快速切换,同一时刻一人独占;真要并发,得升级 Windows Server + 远程桌面服务 + 按用户数买 CAL 授权。就像一间豪华套房,装修确实精致,但同时只能住一位客人,想加床位,请加钱。
权限模型也是同一套哲学的延伸。Linux 用 owner/group/others 乘以 rwx 的九宫格,简洁到一行 ls -l 输出就能看全,覆盖九成场景,剩下的交给 ACL 补充。Windows 则是每个文件、注册表键、服务都挂一张详细的 ACL 清单,能对任意用户精确到"允许读取但拒绝删除",精细,但也复杂到多数用户一辈子没打开过那个"高级安全设置"对话框。
没有绝对的优劣,只有基因的不同。做服务器、多人共享环境、云上多租户,Linux 的并发基因如鱼得水;做企业桌面的统一管控,Windows + AD 域这套组合拳至今无人能出其右。
最后留一个问题:AI 时代,服务器上"同时干活"的不再只是人,还有一群 Agent——每个智能体要不要一个自己的账号、自己的权限边界?按这个趋势,1969 年那套为"人"设计的多用户体系,可能马上要为"机器用户"再进化一次了。过去五十年,多用户系统管理的是"人";未来五十年,它管理的可能是数百万个 AI Agent。