Linux用户管理与文件权限完全指南:用户/组管理、权限解读、chmod/chown实战

📅 2026/7/9 12:04:20 👁️ 阅读次数 📝 编程学习
Linux用户管理与文件权限完全指南:用户/组管理、权限解读、chmod/chown实战

前言
Linux是一个多用户、多任务的操作系统,其安全性的核心就是用户账户和文件权限机制。每个用户登录系统时都会被分配唯一的用户ID(UID),系统通过UID和GID(组ID)来控制用户对文件、目录和设备的访问权限。

本文将系统讲解Linux安全机制、用户和组的管理命令、文件权限的解读与修改,并通过完整的练习题带你从零实战。所有知识点均配有Xshell实操命令,截图清单精简后列在文末。

一、理解Linux的安全性
1.1 用户账户与UID
Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录时用的账户。

用户权限通过用户ID(UID)来跟踪:

root用户:UID为0,是系统管理员,拥有最高权限

系统用户:UID为1-499(或1-999),供后台服务使用,并非真实用户

普通用户:UID从500(或1000)开始分配

bash

查看用户的UID

id

id username
1.2 /etc/passwd —— 用户账户文件
Linux使用/etc/passwd文件将登录名匹配到对应的UID值。每行以:分隔为7个字段:

字段 含义
1 用户名
2 密码占位符(x表示密码存储在/etc/shadow中)
3 UID(用户ID)
4 GID(组ID)
5 描述性信息(备注字段)
6 HOME目录位置
7 默认Shell
bash

查看/etc/passwd文件

cat /etc/passwd

查看特定用户信息

grep “username” /etc/passwd
1.3 /etc/shadow —— 密码文件
只有root用户才能访问/etc/shadow文件,它存储着加密后的用户密码和密码管理信息。

bash

查看shadow文件(需root权限)

sudo cat /etc/shadow
9个字段的含义:

用户名

加密后的密码

上次修改密码后过去的天数(自1970年1月1日算起)

多少天后才能更改密码

多少天后必须更改密码

密码过期前提前多少天提醒

密码过期后多少天禁用账户

账户被禁用的日期

预留字段

1.4 如何登录root用户
bash

切换到root用户

su root

su -

退出root

exit

修改root密码(也可以修改其他用户密码)

sudo passwd

或修改指定用户密码

sudo passwd username
二、管理用户
2.1 添加新用户
Linux中添加用户主要有两种命令:useradd 和 adduser。

useradd命令
useradd使用系统默认值及命令行参数来设置用户账户。

bash

查看默认配置

cat /etc/default/useradd

最常用:创建用户并生成HOME目录

sudo useradd -m username

设置HOME目录、Shell和组

sudo useradd -m -d /home/username -s /bin/bash -g groupname username

不添加任何参数(创建"三无"用户)

sudo useradd test

这样创建的用户:无HOME目录、无密码、无Shell

useradd常用参数:

参数 含义
-m 创建用户的HOME目录
-d 目录 指定HOME目录路径
-s Shell 指定默认Shell(如/bin/bash)
-g 组名 指定主组
-c “描述” 添加备注信息
-e 日期 设置账户过期日期(YYYY-MM-DD)
adduser命令
adduser以人机对话方式创建用户,会提示输入密码等信息,更加友好。

bash

交互式创建用户

sudo adduser username
💡 区别:useradd是底层命令,adduser是交互式脚本,两者都能完成用户创建。实际使用中任选其一即可。

2.2 删除用户
bash

仅删除用户信息(保留HOME目录和文件)

sudo userdel username

删除用户及其HOME目录和邮件目录

sudo userdel -r username
⚠️ 注意:删除用户的HOME目录前一定要检查有无重要文件!

2.3 修改用户信息
usermod命令可以在创建完新用户后修改用户信息。

bash

修改备注字段

sudo usermod -c “新的描述信息” username

修改登录名

sudo usermod -l newname oldname

修改主组

sudo usermod -g groupname username

锁定账户(用户无法登录)

sudo usermod -L username

解锁账户

sudo usermod -U username

修改用户HOME目录

sudo usermod -d /new/home username
密码管理相关命令:

bash

修改当前用户密码

passwd

root修改指定用户密码

sudo passwd username

强制用户下次登录时修改密码

sudo passwd -e username

批量修改密码

echo “username:newpassword” | sudo chpasswd
其他专用工具:

命令 功能
chsh 修改默认登录Shell(需用完整路径)
chfn 修改备注字段信息
chage 管理用户账户有效期
bash

修改Shell

sudo chsh -s /bin/bash username

修改备注信息

sudo chfn username

修改账户过期日期

sudo chage -e 2025-12-31 username
三、管理用户组
3.1 理解用户组
组(Group)是为了方便管理用户——同一组内不同用户之间的文件可能互相同享。

在Ubuntu等发行版中,系统为每个用户单独创建一个组(组名与用户名相同),这种方案更加安全。

bash

查看用户组信息

cat /etc/group

或查看特定用户

grep username /etc/group
/etc/group文件的4个字段:

字段 含义
1 组名
2 组密码(通常为x)
3 GID(组ID)
4 属于该组的用户列表
3.2 创建和修改组
bash

创建新组

sudo groupadd groupname

修改组GID

sudo groupmod -g 新GID oldGID

修改组名

sudo groupmod -n 新组名 旧组名

将用户添加到组(附加组)

sudo usermod -G groupname username

将用户设为主组

sudo usermod -g groupname username
💡 注意:-G是追加到附加组(原有组仍在);-g是更改主组(替换)。

四、理解文件权限
4.1 ls -l 输出解读
bash
ls -l

输出示例:-rw-r–r-- 1 owner group 1024 Jan 1 10:00 filename

第一个字段(10个字符) 的含义:

位置 含义
第1字符 文件类型:-文件,d目录,l链接,c字符设备,b块设备
第2-4字符 文件所有者的权限(rwx)
第5-7字符 文件所属组的权限(rwx)
第8-10字符 其他用户的权限(rwx)
r=读,w=写,x=执行,-=无权限

示例解读:-rw-r–r–

-:这是一个普通文件

rw-:所有者有读和写权限(无执行)

r–:所属组只有读权限

r–:其他用户只有读权限

4.2 八进制权限表示法
权限 二进制 八进制
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
bash

三种权限合在一起

chmod 755 file # 所有者rwx(7),所属组r-x(5),其他r-x(5)
chmod 644 file # 所有者rw-(6),所属组r–(4),其他r–(4)
4.3 umask —— 默认权限掩码
umask定义了新建文件和目录的默认权限。

bash

查看当前umask值

umask

输出示例:0022

文件默认权限 = 666 - umask

目录默认权限 = 777 - umask

当umask=022时:

文件权限 = 666 - 022 = 644 (rw-r–r–)

目录权限 = 777 - 022 = 755 (rwxr-xr-x)

bash

设置新的umask值(临时)

umask 027

永久设置:写入 ~/.bashrc 或 /etc/profile

五、更改文件权限和所属关系
5.1 chmod —— 更改文件权限
八进制模式:

bash

设置文件权限为755(所有者rwx,组r-x,其他r-x)

chmod 755 filename

递归修改目录及所有子文件

chmod -R 755 directory/

使用通配符批量修改

chmod 644 *.txt
符号模式:

格式:chmod [u/g/o/a][+/-/=][rwx] filename

符号 含义
u 所有者(user)
g 所属组(group)
o 其他用户(others)
a 所有用户(all)

  • 增加权限
  • 移除权限
    = 设置权限
    bash

给所有者增加执行权限

chmod u+x file

给所属组增加读写权限

chmod g+rw file

移除其他用户的执行权限

chmod o-x file

设置所有用户为读写权限

chmod a=rw file

递归给所有用户增加读写权限

chmod -R ugo+rw directory/
5.2 chown —— 更改文件所有者
bash

更改文件所有者

sudo chown username filename

只更改所属组(带冒号)

sudo chown :groupname filename

同时更改所有者和所属组

sudo chown username:groupname filename

递归更改目录及所有子文件

sudo chown -R username:groupname directory/
⚠️ 注意:只有root用户才能改变文件所有者。文件所有者可以改变文件的所属组,但前提是所有者必须是原所属组和目标所属组的成员。

5.3 chgrp —— 更改文件所属组
bash

只更改文件的所属组

sudo chgrp groupname filename

递归更改

sudo chgrp -R groupname directory/
六、实现共享文件
Linux系统上共享文件的方法:创建组,将用户加入组,使组内所有成员享有同等的文件权限。

实现步骤:

bash

1. 创建共享组

sudo groupadd shared_group

2. 将用户加入组

sudo usermod -G shared_group user1
sudo usermod -G shared_group user2

3. 创建共享目录,设置组权限

mkdir /home/shared_dir
sudo chgrp -R shared_group /home/shared_dir

4. 设置目录权限,让组内成员可读写

sudo chmod -R 770 /home/shared_dir

或使用符号模式

sudo chmod -R g+rwx /home/shared_dir
💡 小贴士:在Linux中,目录底色为绿色通常表示该目录对其他用户可访问(权限为777),是系统的一种颜色标记提醒。

七、知识框架体系
📚 用户管理框架
text
用户管理
├── 用户信息文件
│ ├── /etc/passwd → 用户账户信息(7个字段)
│ └── /etc/shadow → 加密密码(9个字段,仅root可见)
├── 添加用户
│ ├── useradd(命令行参数)
│ │ └── -m -d -s -g -c -e
│ └── adduser(交互式)
├── 删除用户
│ ├── userdel username(保留HOME)
│ └── userdel -r username(删除HOME)
├── 修改用户
│ ├── usermod → 修改用户信息
│ ├── passwd → 修改密码
│ ├── chsh → 修改Shell
│ ├── chfn → 修改备注
│ └── chage → 管理有效期
└── 切换用户
├── su username → 切换用户
└── exit → 退出
📚 组管理框架
text
组管理
├── 组信息文件
│ └── /etc/group(4个字段)
├── 添加组
│ └── groupadd groupname
├── 修改组
│ ├── groupmod -g GID 组名 → 修改GID
│ └── groupmod -n 新名 旧名 → 修改组名
└── 用户加组
├── usermod -g 组名 → 改主组
└── usermod -G 组名 → 加附加组
📚 文件权限框架
text
文件权限
├── 权限类型:r(读),w(写),x(执行)
├── 三级安全:所有者(u),所属组(g),其他用户(o)
├── 查看:ls -l
│ └── -rwxr-xr-x → 10个字符解析
├── 权限值:八进制(0-7)
├── 默认权限:umask
│ ├── 文件 = 666 - umask
│ └── 目录 = 777 - umask
├── 修改权限
│ ├── chmod(八进制/符号模式)
│ │ ├── 八进制:chmod 755 file
│ │ └── 符号:chmod u+rwx,g+rx,o+rx file
│ └── chmod -R → 递归修改
├── 修改所有者
│ ├── chown username:group file
│ └── chgrp groupname file
└── 共享目录
├── 创建组 → 添加用户 → 设置组权限
└── chmod 770 directory
第八部分:练习题(必做)
以下练习来自PPT要求,请按步骤完成。

练习题完整流程
Step 1:创建新用户并设置密码

bash
sudo useradd -m -s /bin/bash testuser
sudo passwd testuser

查看用户是否存在

grep testuser /etc/passwd
Step 2:修改备注字段

bash
sudo usermod -c “测试用户-张三” testuser

验证

grep testuser /etc/passwd
Step 3:创建新组并加入用户

bash

创建组

sudo groupadd team_group

将用户加入组

sudo usermod -G team_group testuser

验证

grep testuser /etc/group

修改组名

sudo groupmod -n new_team_group team_group
Step 4:创建文件并查看权限

bash

切换到testuser

su - testuser

创建测试文件和目录

touch test.txt
mkdir test_dir

查看权限

ls -l
Step 5:修改权限实现组内共享

bash

退出testuser,回到root或有sudo权限的用户

exit

修改文件和目录的组及权限

sudo chgrp -R new_team_group /home/testuser/test.txt /home/testuser/test_dir
sudo chmod -R g+rwx /home/testuser/test.txt /home/testuser/test_dir

查看结果

ls -l /home/testuser/
Step 6:删除用户(可选保留)

bash

如要彻底删除

sudo userdel -r testuser

或保留用户

不执行删除

第九部分:截图清单