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

发布时间:2026/7/9 11:52:40
Linux用户管理与文件权限完全指南:用户/组管理、权限解读、chmod/chown实战 前言Linux是一个多用户、多任务的操作系统其安全性的核心就是用户账户和文件权限机制。每个用户登录系统时都会被分配唯一的用户IDUID系统通过UID和GID组ID来控制用户对文件、目录和设备的访问权限。本文将系统讲解Linux安全机制、用户和组的管理命令、文件权限的解读与修改并通过完整的练习题带你从零实战。所有知识点均配有Xshell实操命令截图清单精简后列在文末。一、理解Linux的安全性1.1 用户账户与UIDLinux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录时用的账户。用户权限通过用户IDUID来跟踪root用户UID为0是系统管理员拥有最高权限系统用户UID为1-499或1-999供后台服务使用并非真实用户普通用户UID从500或1000开始分配bash查看用户的UIDid或id username1.2 /etc/passwd —— 用户账户文件Linux使用/etc/passwd文件将登录名匹配到对应的UID值。每行以:分隔为7个字段字段 含义1 用户名2 密码占位符x表示密码存储在/etc/shadow中3 UID用户ID4 GID组ID5 描述性信息备注字段6 HOME目录位置7 默认Shellbash查看/etc/passwd文件cat /etc/passwd查看特定用户信息grep “username” /etc/passwd1.3 /etc/shadow —— 密码文件只有root用户才能访问/etc/shadow文件它存储着加密后的用户密码和密码管理信息。bash查看shadow文件需root权限sudo cat /etc/shadow9个字段的含义用户名加密后的密码上次修改密码后过去的天数自1970年1月1日算起多少天后才能更改密码多少天后必须更改密码密码过期前提前多少天提醒密码过期后多少天禁用账户账户被禁用的日期预留字段1.4 如何登录root用户bash切换到root用户su root或su -退出rootexit修改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目录、无密码、无Shelluseradd常用参数参数 含义-m 创建用户的HOME目录-d 目录 指定HOME目录路径-s Shell 指定默认Shell如/bin/bash-g 组名 指定主组-c “描述” 添加备注信息-e 日期 设置账户过期日期YYYY-MM-DDadduser命令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修改当前用户密码passwdroot修改指定用户密码sudo passwd username强制用户下次登录时修改密码sudo passwd -e username批量修改密码echo “username:newpassword” | sudo chpasswd其他专用工具命令 功能chsh 修改默认登录Shell需用完整路径chfn 修改备注字段信息chage 管理用户账户有效期bash修改Shellsudo 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 组密码通常为x3 GID组ID4 属于该组的用户列表3.2 创建和修改组bash创建新组sudo groupadd groupname修改组GIDsudo groupmod -g 新GID oldGID修改组名sudo groupmod -n 新组名 旧组名将用户添加到组附加组sudo usermod -G groupname username将用户设为主组sudo usermod -g groupname username 注意-G是追加到附加组原有组仍在-g是更改主组替换。四、理解文件权限4.1 ls -l 输出解读bashls -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字符 其他用户的权限rwxr读w写x执行-无权限示例解读-rw-r–r–-这是一个普通文件rw-所有者有读和写权限无执行r–所属组只有读权限r–其他用户只有读权限4.2 八进制权限表示法权限 二进制 八进制— 000 0–x 001 1-w- 010 2-wx 011 3r-- 100 4r-x 101 5rw- 110 6rwx 111 7bash三种权限合在一起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当umask022时文件权限 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-xchmod 755 filename递归修改目录及所有子文件chmod -R 755 directory/使用通配符批量修改chmod 644 *.txt符号模式格式chmod [u/g/o/a][/-/][rwx] filename符号 含义u 所有者userg 所属组groupo 其他用户othersa 所有用户all增加权限移除权限 设置权限bash给所有者增加执行权限chmod ux file给所属组增加读写权限chmod grw file移除其他用户的执行权限chmod o-x file设置所有用户为读写权限chmod arw file递归给所有用户增加读写权限chmod -R ugorw 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系统上共享文件的方法创建组将用户加入组使组内所有成员享有同等的文件权限。实现步骤bash1. 创建共享组sudo groupadd shared_group2. 将用户加入组sudo usermod -G shared_group user1sudo usermod -G shared_group user23. 创建共享目录设置组权限mkdir /home/shared_dirsudo chgrp -R shared_group /home/shared_dir4. 设置目录权限让组内成员可读写sudo chmod -R 770 /home/shared_dir或使用符号模式sudo chmod -R grwx /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/group4个字段├── 添加组│ └── 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 urwx,grx,orx file│ └── chmod -R → 递归修改├── 修改所有者│ ├── chown username:group file│ └── chgrp groupname file└── 共享目录├── 创建组 → 添加用户 → 设置组权限└── chmod 770 directory第八部分练习题必做以下练习来自PPT要求请按步骤完成。练习题完整流程Step 1创建新用户并设置密码bashsudo useradd -m -s /bin/bash testusersudo passwd testuser查看用户是否存在grep testuser /etc/passwdStep 2修改备注字段bashsudo usermod -c “测试用户-张三” testuser验证grep testuser /etc/passwdStep 3创建新组并加入用户bash创建组sudo groupadd team_group将用户加入组sudo usermod -G team_group testuser验证grep testuser /etc/group修改组名sudo groupmod -n new_team_group team_groupStep 4创建文件并查看权限bash切换到testusersu - testuser创建测试文件和目录touch test.txtmkdir test_dir查看权限ls -lStep 5修改权限实现组内共享bash退出testuser回到root或有sudo权限的用户exit修改文件和目录的组及权限sudo chgrp -R new_team_group /home/testuser/test.txt /home/testuser/test_dirsudo chmod -R grwx /home/testuser/test.txt /home/testuser/test_dir查看结果ls -l /home/testuser/Step 6删除用户可选保留bash如要彻底删除sudo userdel -r testuser或保留用户不执行删除第九部分截图清单