ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux用户和权限管理详解:从安全模型到ACL实战

Linux用户和权限管理详解:从安全模型到ACL实战

Linux用户和权限管理详解:从安全模型到ACL实战

发布日期:2026-10-16 | 标签:Linux用户管理、权限、chmod、ACL、安全模型


目录导航

  • 一、Linux安全模型
  • 二、用户和组配置文件
  • 三、用户管理命令实战
  • 四、组管理命令实战
  • 五、权限体系详解
  • 六、特殊权限位
  • 七、ACL访问控制列表
  • 八、总结与实战技巧

一、Linux安全模型

1.1 Linux安全三要素

Linux安全模型基于三个核心要素:

  1. 认证(Authentication):验证用户身份(UID/GID)
  2. 授权(Authorization):控制访问权限(rwx)
  3. 审计(Accounting):记录操作日志(日志系统)

1.2 用户分类

类型UID范围说明
超级用户0root,拥有所有权限
系统用户1-999运行系统服务
普通用户1000+日常使用

二、用户和组配置文件

2.1 /etc/passwd — 用户信息文件

每行一个用户,字段以冒号分隔:用户名:密码占位:UID:GID:描述:家目录:Shell

cat/etc/passwd

真实输出(部分):

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin sshd:x:109:65534::/run/sshd:/usr/sbin/nologin

解读:

  • root用户UID=0,Shell是/bin/bash
  • daemon等系统用户Shell是nologin(不允许登录)
  • www-data是Web服务器用户
  • sshd是SSH服务用户

2.2 /etc/group — 组信息文件

格式:组名:密码占位:GID:组成员列表

cat/etc/group

真实输出(部分):

root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog sudo:x:27: www-data:x:33: disk:x:6:

2.3 /etc/shadow — 密码文件

存储加密后的密码,只有root可读:

ls-la/etc/shadow

真实输出:

-rw-r----- 1 root shadow 1021 Jul 21 17:26 /etc/shadow

权限640,仅root可读写,shadow组成员可读。

2.4 三个配置文件对照

文件作用权限
/etc/passwd用户基本信息644(所有人可读)
/etc/shadow用户密码哈希640(仅root可读写)
/etc/group组基本信息644(所有人可读)

三、用户管理命令实战

3.1 useradd — 创建用户

useradd-mtestuseridtestuser

真实输出:

user created uid=1000(testuser) gid=1000(testuser) groups=1000(testuser)

-m选项自动创建家目录。新用户UID自动分配为1000。

3.2 passwd — 设置密码

passwdtestuser

真实输出:

New password: Retype new password: passwd: password updated successfully

3.3 usermod — 修改用户属性

usermod-aGsudo-ntestuser# 加入sudo组idtestuser

常用选项:

  • -aG:追加到附加组(不离开其他组)
  • -s:修改登录Shell
  • -d:修改家目录
  • -L:锁定用户
  • -U:解锁用户

3.4 userdel — 删除用户

userdel-rtestuseridtestuser2>&1

真实输出:

user deleted id: 'testuser': no such user

-r选项同时删除家目录和邮件目录。

3.5 用户管理命令速查

命令作用常用选项
useradd创建用户-m(家目录) -s(Shell) -u(UID)
usermod修改用户-aG(加组) -s(Shell) -L(锁定)
userdel删除用户-r(删家目录)
passwd设密码-l(锁定) -u(解锁) -d(删除密码)
id查身份-u(UID) -g(GID) -G(所有组)

四、组管理命令实战

4.1 groupadd — 创建组

groupaddtestgroupcat/etc/group|greptestgroup

真实输出:

group created testgroup:x:1000:

4.2 groupmod — 修改组

groupmod-nnewtestgroup testgroupcat/etc/group|grepnewtest

真实输出:

newtestgroup:x:1000:

-n选项修改组名。

4.3 groupdel — 删除组

groupdelnewtestgroupcat/etc/group|grepnewtest2>&1

真实输出:

group deleted

4.4 gpasswd — 管理组成员

gpasswd-auser1 testgroup# 将user1加入testgroupgpasswd-duser1 testgroup# 将user1移出testgroupgpasswd-Auser1 testgroup# 设置user1为组管理员

五、权限体系详解

5.1 权限的三组rwx

Linux权限分为三组,分别对应文件属主(u)、属组(g)、其他用户(o):

-rwxr-xr-x | | | 属主 属组 其他
权限对文件对目录
r可读内容可列出内容
w可修改内容可创建/删除文件
x可执行可进入目录

5.2 chmod — 修改权限

数字法:

touch/tmp/perm_test.shls-la/tmp/perm_test.shchmod755/tmp/perm_test.shls-la/tmp/perm_test.sh

真实输出:

-rw-r--r-- 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh -rwxr-xr-x 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh

数字含义:r=4, w=2, x=1,相加得到0-7的数字。

  • 755 = rwxr-xr-x(属主全权限,属组和其他可读可执行)
  • 644 = rw-r–r–(属主可读写,其他只读)
  • 600 = rw-------(仅属主可读写)

符号法:

chmodu+x,g-w,o-r /tmp/perm_test.shls-la/tmp/perm_test.sh

真实输出:

-rwxr-x--x 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh

符号格式:[ugoa][±=][rwx]

  • u=属主, g=属组, o=其他, a=所有
  • +=添加, -=移除, ==设置

5.3 chown — 修改属主属组

chownroot:root /tmp/perm_test.shls-la/tmp/perm_test.sh

真实输出:

-rwxr-x--x 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh

常用格式:

  • chown user file — 只改属主
  • chown :group file — 只改属组
  • chown user:group file — 同时改属主和属组
  • chown -R user:group dir/ — 递归修改

5.4 chgrp — 修改属组

chgrproot /tmp/perm_test.sh

等同于 chown :root file。

5.5 umask — 默认权限掩码

umask# 查看当前umaskumask022# 设置umask

umask决定新建文件的默认权限:

  • 文件默认权限 = 666 - umask
  • 目录默认权限 = 777 - umask
  • umask=022时:文件644,目录755

六、特殊权限位

6.1 SUID (Set UID)

当用户执行一个设置了SUID的程序时,该用户临时获得文件属主的权限。

chmod4755/tmp/perm_test.shls-la/tmp/perm_test.sh

真实输出:

-rwsr-xr-x 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh

属主的x变为s。典型应用:/usr/bin/passwd(普通用户可以修改密码)。

6.2 SGID (Set GID)

对文件:执行时临时获得属组权限。对目录:新建文件继承目录的属组。

chmod6755/tmp/perm_test.shls-la/tmp/perm_test.sh

真实输出:

-rwsr-sr-x 1 root root 0 Oct 16 22:56 /tmp/perm_test.sh

属组的x也变为s。

6.3 Sticky Bit

对目录设置后,只有文件属主和root才能删除该目录中的文件。

chmod1755/tmp/perm_test.shls-la/tmp/perm_test.sh

其他的x变为t。典型应用:/tmp目录。

6.4 特殊权限总结

权限数字前缀显示作用
SUID4xxxs在属主位执行时获得属主权限
SGID2xxxs在属组位执行时获得属组权限/继承属组
Sticky1xxxt在其他位只有属主能删除

七、ACL访问控制列表

7.1 什么是ACL

传统权限只能为属主、属组、其他三组设置权限。ACL(Access Control List)可以为任意指定用户或组设置权限,更灵活。

7.2 setfacl — 设置ACL

touch/tmp/acl_test.txt setfacl-mu:root:rwx /tmp/acl_test.txt getfacl /tmp/acl_test.txt

常用选项:

  • -m:修改ACL规则
  • -x:删除ACL规则
  • -b:清除所有ACL规则

格式:u:用户名:权限 或 g:组名:权限

7.3 getfacl — 查看ACL

getfacl /tmp/acl_test.txt

7.4 ACL实战场景

# 给特定用户读写权限setfacl-mu:alice:rw /shared/project.txt# 给特定组只读权限setfacl-mg:devteam:r /shared/project.txt# 删除特定用户的ACLsetfacl-xu:alice /shared/project.txt# 清除所有ACL,恢复传统权限setfacl-b/shared/project.txt

7.5 ACL vs 传统权限

特性传统权限ACL
粒度属主/属组/其他任意用户/组
灵活性低高
复杂度简单较复杂
适用场景通用需要精细控制

八、总结与实战技巧

核心要点

  1. Linux安全基于认证+授权+审计三要素
  2. 用户信息存储在/etc/passwd,密码在/etc/shadow,组在/etc/group
  3. useradd/usermod/userdel管理用户,groupadd/groupmod/groupdel管理组
  4. 权限分三组rwx,chmod用数字法(755)或符号法(u+x)
  5. SUID/SGID/Sticky是三种特殊权限位
  6. ACL提供更灵活的权限控制

权限数字速查

数字权限常见用途
755rwxr-xr-x可执行文件/目录
644rw-r–r–普通文件
600rw-------私密文件
750rwxr-x—组内可执行
4755rwsr-xr-xSUID程序

实战技巧

  • 生产环境禁用root直接登录,用sudo提权
  • 关键配置文件设为600权限(如密钥文件)
  • 用usermod -aG追加组,不要用-G(会覆盖其他组)
  • chmod -R递归修改要谨慎,特别是对系统目录
  • ACL适合需要给多个不同用户设置不同权限的场景
  • 定期检查/etc/passwd中是否有异常用户

上一篇:文件管理与IO重定向实战


本文所有命令均在 Ubuntu 24.04.4 LTS 服务器(1.94.230.146)上真实执行。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进