用户、权限与系统保护

现代操作系统大多是“多用户、多任务”系统:同一台电脑可能被多人使用,同一台服务器也可能同时承载多个服务。为了保证系统稳定与数据安全,操作系统必须回答三个关键问题:谁可以登录?谁能读取或修改哪些文件?程序被允许执行哪些操作?

身份验证与授权

在计算机安全体系中,权限控制通常由两个彼此独立、但缺一不可的环节组成:

  1. 身份验证(Authentication,常缩写为 AuthN):证明“你是谁”。 例如,用户输入账号密码、扫描指纹、进行人脸识别,或使用硬件密钥登录。系统首先要确认当前操作者是不是声称的那个身份。

  2. 授权(Authorization,常缩写为 AuthZ):判定“你能做什么”。 当身份确认后,系统会按照预先设定的规则,判断这个用户是否有权打开某个文档、运行某个软件、修改系统设置或访问某台资源。

简而言之: 身份验证负责确认身份,授权负责决定范围。

应用程序启动时,通常会继承启动它的用户身份和权限上下文。也就是说,程序以谁的身份运行,它一般就只能拥有那个身份允许的操作范围。例如:

  • 如果你用普通用户账号登录系统,然后打开记事本,那么记事本进程也只能访问该普通用户有权限读取或修改的文件;
  • 即使一个程序没有主动请求管理员权限,只要它以你的用户身份运行,就可能拥有读取、修改甚至删除你个人目录下照片、文档和其他私人数据的权限。

这也是为什么随意运行来源不明的程序非常危险:程序一旦启动,就可能借用了当前用户的权限边界。

读取、写入与执行权限

在操作系统层面,文件权限通常可以拆分为三类基本操作:读取、写入、执行。它们彼此独立,不能混为一谈。

权限含义典型表现
读取(Read,r)允许查看文件内容,或在一定条件下列出目录中的条目能打开文件阅读,能看到目录里有哪些文件
写入(Write,w)允许修改文件内容,或在目录中新增、删除、重命名条目能保存修改,能新建文件,能删除文件
执行(Execute,x)允许将文件作为程序或脚本运行;对目录而言,通常表示允许访问该目录路径能运行 .exe、脚本,或进入指定目录

需要特别注意:能读取一个文件,并不等于能写入一个文件。

例如,你只有某个共享文件的“读取”权限。你可以用编辑器正常打开它、阅读内容,也可以在编辑器窗口里临时修改文字。可是,当你点击“保存”,试图把修改写回原文件时,操作系统会拦截这次写操作,并返回类似“拒绝访问(Access Denied / Permission Denied)”或“权限不足”的提示。

这里的关键在于:

  • 打开文件,对应的是读取权限;
  • 在编辑器里改动内容,只是修改了当前内存中的缓冲区;
  • 保存回原文件,才真正涉及写入权限。

因此,修改成功与否,不能只看编辑器窗口里的文字有没有变化,而要看系统是否允许程序把结果写回磁盘。

能打开,为什么保存失败

练习

共享文件允许账号 crow 读取,但不允许该账号写入。crow 用编辑器打开了文件,在窗口里修改一行,保存回原路径时收到“拒绝访问”。

哪一项最符合这些条件?

  • A. 成功打开文件就已经获得写入权限,错误提示可以忽略。
  • B. 窗口里的文字变了,原文件必然已经被覆盖。
  • C. 可以读取并在编辑区修改内容,但没有成功写回这个受保护的文件。
  • D. 只需把文件扩展名改为 .txt 就能获得写入权限。

提交选项字母。

提交答案

题解 Hint

权限由谁裁决

前面曾提到一个反面教材:某些系统仅仅因为客户端在网页请求中自称 role=admin,就直接放行管理员权限。这是非常危险的做法。

真实的操作系统不会让程序“自己宣布”自己拥有更高权限。访问控制必须由操作系统内核或底层安全机制严格裁决。用户态程序即使声称“我是管理员”,如果没有真正获得相应权限上下文,也无法绕过系统的安全检查。

不同系统、不同环境中的身份也是彼此独立的。你在自己个人电脑上拥有管理员账号,并不意味着你自动拥有学校网站服务器、企业系统或远程 Lab 环境的管理权限。权限边界必须被明确划分,不能凭主观身份互相套用。

最小权限与纵深防御

在实际安全设计中,有两个基本原则非常重要:最小权限原则和多层纵深防御。

最小权限原则

最小权限原则(Principle of Least Privilege)要求:任何用户、程序或服务,都只应被赋予完成当前任务所必需的最小权限。

例如:

  • 日常办公时,应使用普通用户账号,而不是长期以管理员身份操作;
  • 安装软件、修改系统设置或管理用户时,再临时提升到管理员权限;
  • 服务程序只应访问自己运行所需的目录、端口和数据,而不应该拥有整台机器的全部权限。

这样做的核心好处是降低破坏范围:即使用户误操作,或某个程序被恶意利用,攻击者也无法轻易获得整个系统的完全控制权。

多层纵深防御

单一防护措施很少能解决所有安全问题,因此系统通常需要叠加多层防御:

  • 锁屏密码:防止他人趁你离开电脑时直接在本地操作你的会话;
  • 全盘加密:例如 BitLocker、LUKS、FileVault。其作用是,当电脑或硬盘丢失时,攻击者即使拆下硬盘,也难以直接读取其中的原始数据;
  • 系统更新与安全补丁:修复操作系统和软件中已知的高危漏洞,降低被提权、远程代码执行或恶意软件利用的风险;
  • 离线备份:在勒索软件、硬件损坏或误删除发生之前,保留可恢复的数据副本。

每一项安全措施都有自己守护的边界: 锁屏防止即时物理访问,全盘加密防止存储介质失窃后的数据泄露,更新修补防止已知漏洞被利用,备份则提供最后的数据恢复能力。

理解这些边界,才能建立正确、稳定的系统安全观:权限不是默认信任,而是基于身份、角色与操作范围的严格控制。