1. 用户管理是Linux系统安全的第一道防线
1.1 一台服务器三条命令引发的连锁事故
有次给一家小公司做运维巡检,发现他们的生产服务器上所有业务都用root账号跑着,数据库、Web服务、定时任务脚本,清一色root。问负责人为什么这样搞,他说"方便,省得权限出问题"。我当时就劝他赶紧把用户权限拆分,但对方没太当回事。结果三个月后,一个刚入职的实习生想手动清理日志文件,一条 rm -rf /var/log/ 因为路径写错,差点把整个系统文件都删了,还好当时Web服务进程占用着部分文件才没崩彻底,但日志全没了,排障的时候连报错记录都查不到。
这件事特别典型。Linux的用户管理看似基础,却是整台机器安全模型的地基。谁可以登录、谁能执行什么命令、谁能读写哪些文件,全部由用户和权限体系决定。如果这层没做好,后续什么防火墙、安全组、入侵检测都是白搭,因为攻击者只要拿到一个高权限账号,就能绕过大部分外围防护。
1.2 用户、组、权限三者如何映射到文件系统
很多初学者容易把用户管理理解成"建账号、设密码"这么简单,但实际上它背后是一整套围绕文件系统设计的权限逻辑。Linux里每个文件都有三个维度的归属:属主(owner)、属组(group)、其他用户(others)。每个维度又分别有读(r=4)、写(w=2)、执行(x=1)三种权限,数字表示法就是这三者相加的结果。
举个例子,你执行 ls -l 看到类似 -rw-r--r-- 1 nginx nginx 2048 Mar 15 10:32 config.conf,其中第一个 nginx 是该文件的属主用户,第二个 nginx 是属组,权限位 rw-r--r-- 表示属主可读写、属组成员可读、其他用户只读。
这套机制决定了用户管理从来不是孤立的。你建一个用户,实际上是在为"谁能以什么身份访问哪些资源"划边界。建用户只是第一步,接下来还要考虑他属于哪些组、能访问哪些目录、能不能用sudo、需不需要配置SSH密钥登录。这些动作组合起来,才算完成了一个用户的完整生命周期管理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从创建到删除:用户管理命令的实操细节
2.1 useradd和adduser到底用哪个
Linux里新建用户有两个常见的命令入口:useradd 和 adduser。很多新手会以为它们是一样的,其实区别挺大。
useradd 是系统原生的底层命令,参数多、功能细,但不会自动帮你创建家目录、设置密码、生成邮件文件,属于"半成品"操作。比如你直接执行:
bash复制useradd zhangsan
系统只会创建用户,不会创建 /home/zhangsan 目录,也不会让你设置密码,你还得手动执行 passwd zhangsan 才能设置登录密码。
adduser 在Debian/Ubuntu系发行版中是一个更友好封装脚本,它会交互式地引导你完成设置密码、填写用户信息等步骤,并且自动创建家目录。但CentOS/RHEL系的 adduser 其实只是 useradd 的符号链接,并没有那些交互能力。
我的建议是:脚本自动化场景用 useradd,手动维护单台服务器用 adduser。但无论用哪个,创建用户时一定要把需要的参数一次性想清楚,避免后期反复修改。
以 useradd 为例,我最常用的参数组合是:
bash复制useradd -m -d /home/zhangsan -s /bin/bash -G wheel zhangsan
参数含义如下:
-m:自动创建家目录-d:指定家目录路径-s:指定登录Shell-G:指定附加组,多个组用逗号分隔-u:指定UID,适合需要固定UID做数据迁移的场景-e:指定账号过期日期,格式YYYY-MM-DD,适合临时账号
如果创建过程中漏了某些参数,不用删掉重建,用 usermod 补就行。
2.2 密码策略与chage命令的搭配使用
用户创建完,第一件事就是设置密码。但"设置密码"这个操作里有很多细节:
bash复制passwd zhangsan
这个命令会交互式地让你输入两次新密码。如果你需要非交互式设置,可以用:
bash复制echo "NewPassword123" | passwd --stdin zhangsan
--stdin 参数在CentOS/RHEL系中可用,Ubuntu系部分版本不支持,那种情况下可以用 chpasswd:
bash复制echo "zhangsan:NewPassword123" | chpasswd
但更关键的问题是密码策略。很多公司吃过弱口令的亏,服务器被暴力破解后成为肉鸡。Linux自带的 chage 命令就是用来管理密码生命周期的,它能控制密码多久必须改一次、过期后多久锁定账号等:
bash复制chage -M 90 -m 7 -W 7 zhangsan
含义分别是:密码最长使用90天、最短使用7天(防止改了又立刻改回去)、过期前7天开始警告。
查看用户当前的密码过期信息:
bash复制chag
