马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
操作系统想守住自己的安全边界,通常要回答四个问题。第一,你是谁,系统得能标识用户并确认身份;第二,你能做什么,得按安全策略做访问控制,挡住内部误用和外部入侵;第三,系统做过什么,要留审计;第四,系统本身要保持完整不被篡改。Linux 里直接对应前两项的是三套机制:安全标识符、身份鉴别、访问控制。本文按这三块拆开讲。
一、安全标识符:用 UID 标记你是谁
Linux 用 UID 标识安全主体,它是 0 到 65535 之间的整数,同一个值在同一系统里唯一对应一个用户。按权限大致分三类:
- 超级用户(UID = 0):默认只有 root,拥有最高权限,对整个系统完全控制。
- 内置用户(UID = 1 ~ 499):系统预留,用来运行系统服务或守护进程,普通登录用户不该占用这一段。
- 普通用户(UID = 500 及以上):权限受限。用
usermod -u 0 用户名 可以把普通用户提权,但这只拿到了部分能力,真正等价于 root 还需要其他配置和授权。
查看某个用户的 UID,用 id 用户名;查看系统中哪些账号具备管理员权限,可以 cat /etc/passwd | grep :0:。
这里有个容易被忽略的规则:UID 是单向自增的。就算某个 UID 已经没有被任何账号占用,也不能重复指派给新用户。比如 999 已经被某个系统服务用掉了,就不能再给新账号;而 1002 从未被使用,就可以分配。
二、身份鉴别:账号和密码存在哪里
Linux 的核心哲学是"一切皆文件",用户信息自然也落在文件里。账号信息在 /etc/passwd,加密后的密码在 /etc/shadow。cat /etc/passwd 任何用户都能读,而 /etc/shadow 只有 root 能看。
/etc/passwd 的七个字段
一行一个用户,冒号分隔,从左到右依次是:
- 用户名:由大小写字母或数字组成。
- 密码占位符:这里是
x,真正加密后的密码搬去了 /etc/shadow。
- 用户标识 UID。
- 用户组标识 GID。
- 说明:描述用户用途,常放姓名或备注。
- 主目录:用户登录后默认进入的地方,root 是
/root。
- 登录 shell:比如
/bin/bash。
/etc/shadow 的九个字段
同样以冒号分隔,从左到右:
- 用户名:与
/etc/passwd 一一对应。
- 密码字段:以
$6$ 开头是 SHA-512,$5$ 是 SHA-256,$1$ 是 MD5,$2$ 是 Blowfish。若字段为空,登录不需要密码;* 表示账号被锁定;!! 表示密码过期;$6$ 这类明文开头是正常加密串。
- 最后一次修改时间:距离 1970 年 1 月 1 日的天数。
- 最小时间间隔:两次改密码之间的最少天数,0 表示不限制。
- 最大时间间隔:密码有效期,过期需重设;留空或 99999 表示不限制。
- 警告时间:过期前提前多少天提醒。
- 账号闲置时间:密码过期后仍可用该密码登录的天数,空字段表示不强制过期。
- 失效时间:到点锁定账号,禁止登录。
- 标志:一般不用。
有个小细节值得记住:设置或修改密码时,先用 pwunconv 把加密串写回 /etc/passwd,再由 pwconv 从 /etc/passwd 转换进 /etc/shadow。这两条命令在手工修密码文件时经常遇到。
三、访问控制:UGO 把权限切成九位
Linux 用 UGO 机制做访问控制,UGO 是 User、Group、Other 三个词的首字母。它把文件的操作者分成三类:
- U:文件属主的权限。
- G:文件所属组的权限。
- O:其他用户的权限。
每类又有读(r)、写(w)、执行(x)三种,三类相乘共九位,组成一个文件的完整权限。ls -l 看属性时,左边第二列就是它。以 lrwxr-xr-x 为例,从左到右读:
- 第一位表示文件类型;
- 第二到四位是属主权限,
rwx 表示属主可读可写可执行;
- 第五到七位是属组权限,
r-x 表示属组可读可执行;
- 第八到十位其他用户权限,同样是
r-x。
目录的权限和文件不完全一样:r 是能列出目录内容,w 是能在目录里增删,x 是能进入目录。只看"能不能读文件"去理解目录,就会误判。
四、特殊权限:suid、sgid 与 StickyBit
除了 rwx,还有几个特殊权限位:suid(setuid)、sgid(setgid)、StickyBit(粘滞位)。
典型例子是 passwd 命令。普通用户没有直接改 /etc/shadow 的权限,但 passwd 文件属主的执行位是 s,表示执行这个文件时临时获得属主 root 的权限,于是普通用户也能完成改密。sgid 的道理类似。看下权限签名就明白了:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root /usr/bin/passwd
$ ls -l /etc/shadow
-rw-r----- 1 root shadow /etc/shadow
五、默认权限由 umask 决定
新建文件或目录时的初始权限,由系统掩码 umask 决定。它是一组"要去掉哪些位"的反向掩码,所以 umask 值越大,新建文件权限越紧。排查"为什么新目录别的组进不去",先看 umask 往往比查 ACL 更快。
qidao123.com企服评测-应用市场 编辑提示
本文按安全标识符、身份鉴别、访问控制三条主线,梳理 Linux 标识用户、保存账号密码、分配文件权限的底层机制,并补充 /etc/passwd 与 /etc/shadow 的字段含义、特殊权限的作用和 umask 对默认权限的影响。文中命令仅用于本地学习環境查看与自查,涉及提权、改密码、改权限位的操作请在授权范围内进行,生产环境改动前先备份相关文件。 |