Linux 用户和组管理:第六章复习笔记

📅 2026/7/26 6:44:49
Linux 用户和组管理:第六章复习笔记
Linux 用户和组管理第六章复习笔记开头这两周 Linux 课开始讲用户和组管理了。说实话刚听的时候觉得有点绕——什么主组补充组、su和sudo的区别、/etc/passwd里那么多冒号分隔的字段……加上老师一边讲一边在黑板上画图我在底下照着敲命令总是敲错。我的环境是在笔记本上装的 VMware Workstation Pro跑的是 CentOS 7为了保险还打了快照。毕竟之前已经踩过好几次坑了——什么rm -rf多打了个斜杠、chmod把系统搞崩过——再也不敢莽了。这篇就是学完第六章之后自己梳理的笔记按知识点记的也把踩过的坑写进来了。三个核心文件passwd、shadow、group老师一上来就说 Linux 管理用户和组靠三个文件我当时心想文件不应该是数据库吗后来发现 Linux 就是这么设计的——一切皆文件。文件作用字段数/etc/passwd用户账户信息7 段/etc/shadow用户密码安全信息9 段/etc/group组信息4 段一开始我直接cat /etc/passwd看到一大堆不认识的用户吓了一跳。后来才知道很多是系统服务账号不是真人用户。用户名:密码占位符:UID:GID:注释:家目录:登录shell这里有个坑第一次看到x占位符的时候我以为密码就是 x心想这密码也太弱了。后来才知道真正的加密密码在/etc/shadow里passwd文件里只是占个位。# 看看自己账户的信息cat/etc/passwd|grep$(whoami)/etc/shadow里面有密码期限相关的字段这个在后面单独讲。组的概念为什么要有组刚学的时候觉得组这个机制挺多余的——我直接给每个用户设权限不行吗后来做实验的时候理解了假如服务器上有 10 个人都需要访问同一个项目目录没有组的话就要一个一个给权限10 个人还算好要是一百个人呢组就是给用户打个标签然后给标签设权限方便管理。主要组 vs 补充组这个点我一开始搞混了主要组用户创建文件时文件默认属于这个组。一个用户只有一个主组。补充组用户额外加入的组用来获取更多权限。一个用户可以加多个补充组。实验验证一下# 查看当前用户所属的组idgroups# 创建文件看看默认所属组touchtest.txtls-ltest.txt我之前的错误理解是主组和补充组是平级的都是用户属于的组。实际上主组决定了新建文件的默认属组这个区别很关键。su 和 sudo切换用户那点事这块的坑特别多我一个个说。su user vs su - user第一次在终端里试su的时候没加-切过去之后发现当前目录没变环境变量也没变我还以为命令没生效。# 不完全切换——环境变量沿用当前用户suzhangsanecho$HOME# 还是原来用户的 home# 完整登录切换——加载目标用户环境su- zhangsanecho$HOME# /home/zhangsan记忆方法加了-就是彻底换人不加就是换个马甲继续用su vs sudo vs sudo -i这三个的区别考试肯定会考我列了个表命令干什么需要谁的密码切换程度su root切换到 rootroot 密码不加载环境sudo 命令临时用 root 执行单条命令自己的密码仅单条命令sudo -i切换到 root 登录环境自己的密码完整登录第一次用sudo的时候报了这个错zhangsan is not in the sudoers file. This incident will be reported.我当时心想啥我还要被报告后来才知道需要把用户加到/etc/sudoers里才行。# 用 root 身份编辑 sudoers 文件建议用 visudo语法错了会报错visudo# 添加一行zhangsanALL(ALL)ALL踩坑千万不要手抖去直接vim /etc/sudoers然后写错语法会锁掉 sudo 权限。visudo命令会在你保存的时候检查语法这点很友好。添加和删除用户useradd 和 userdeluseradd的操作比较直观但userdel的-r选项值得注意。# 添加用户useraddzhangsanpasswdzhangsan# 删除用户不删家目录userdelzhangsan# 删除用户连带家目录和邮件一起删userdel-rzhangsan如果不加-r用户账号虽然删了但/home/zhangsan目录还在邮件文件/var/spool/mail/zhangsan也还在。时间长了会留下一堆僵尸目录。管理组成员# 把 zhangsan 加到 dev 组usermod-aGdev zhangsan注意-a必须和-G一起用。如果只写usermod -G不加-a会把用户从其他所有补充组里踢出去只剩下你指定的组。这个坑我在实验课上看旁边同学踩过他把自己从 wheel 组踢出去了结果 sudo 都用不了。能不能删除主组不能。如果一个组是某个用户的主组直接删会报错groupdel: cannot remove the primary group of user zhangsan要先改用户的主组再删usermod-gnewgroup zhangsangroupdeloldgroup密码期限chage 和 login.defs密码有效期这个点我之前完全没概念——我以为密码设了就永远不变了。后来学才知道企业里通常会要求定期改密码。两种配法方法作用范围命令/文件chage单个用户chage -M 90 zhangsan/etc/login.defs全局默认修改 PASS_MAX_DAYS 等参数# 查看用户密码期限chage-lzhangsan# 设置 90 天后密码过期chage-M90zhangsan# 强制用户下次登录改密码chage-d0zhangsannologin给系统账号用的禁入证看到/sbin/nologin的时候我疑惑了一下——为什么要有这种 shell后来老师解释像 nginx、mysql 这样的服务账号只需要在后台运行程序不需要登录终端。如果给它们设置/sbin/nologin即使有人尝试用这些账号 SSH 登录也会被直接拒绝。# 查看某个账号的 shellgrepnginx /etc/passwd# 输出类似nginx:x:998:996::/var/lib/nginx:/sbin/nologin这个设计挺巧妙的——不用额外配什么防火墙规则光从 shell 层面就堵死了系统账号的登录渠道。我踩过的坑合集坑情况su忘记加-切完发现环境没变以为自己没切成功sudo报 not in sudoers没配/etc/sudoers还以为 Linux 针对我看/etc/passwd以为密码是x不知道真正的密码在 shadow 里主组删除失败忘了主组不能直接删要先改用户的主组usermod -G忘记加-a把一个用户从其他组全踢出去了userdel不加-r以为用户删干净了留下一堆僵尸家目录最后说两句用户和组管理这块知识点不算多但容易混淆尤其是su/sudo/sudo -i这三兄弟的区别还有/etc/passwd和/etc/shadow的分工逻辑。第六章学完之后感觉对多用户系统有了更具体的理解——Linux 从一开始就是为多人同时使用设计的所以权限隔离做得特别细。不过命令真的容易忘usermod -aG的参数顺序我到现在有时还要--help查一下。下一章要学存储管理了听说要讲 LVM 和分区不知道又要踩多少坑。2026年7月 · 写于期末复习期间 · VMware 里的 CentOS 7 还开着上一条命令是chage -l $(whoami)