引言:为什么要学账号与权限管理?

多用户操作系统,就是Linux 账号控制用户访问资格,权限控制资源管理范围—— 比如限制普通用户修改系统文件、分配 FTP 用户仅访问指定目录、团队共享目录按组授权等,都是服务器安全与高效管理的核心。本文整理 16 个高频命令,按「用户→组→权限→查询」逻辑分类,附场景化用法和避坑技巧,新手可直接套用。


一、前置基础概念(先搞懂再动手)

在学命令前,先明确 3 个核心概念,避免踩坑:

  1. UID/GID:用户 / 组的唯一标识(0=root,1-999 = 架构账号,1000+= 普通账号);
  1. 核心组 vs 附加组:用户默认归属 1 个基本组(创建用户时自动生成或指定),可加入多个附加组(公共组);
  1. 权限三要素
    • 属主(u):文档 / 目录的创建者;
    • 属组(g):文件 / 目录所属的组;
    • 其他用户(o):非属主、非属组成员;
    • 权限符号:r(读 = 4)、w(写 = 2)、x(执行 = 1),数字组合 = 权限总和(如 7=4+2+1)。

二、用户账号管理(4 个核心命令)

1. useradd:创建用户(基础中的基础)

功能说明:

新建 Linux 用户,可指定家目录、登录 Shell、所属组等属性,避免默认配置不符合需求。

命令格式:

useradd [选项] 用户名

关键选项(新手必记):

选项

作用

注意事项

-u

指定 UID(如 1001)

避免与已有 UID 冲突

-d

指定家目录(如 /ftphome/mike)

需确保目录路径存在

-g

指定基本组(必须已存在)

不指定则自动创建同名组

-G

指定附加组(多个用逗号分隔)

扩展用户权限范围

-s

指定登录 Shell(/bin/bash = 允许登录,/sbin/nologin = 禁止登录)

禁止登录用于 FTP / 邮件账号

-M

不自动创建家目录

仅需账号记录时使用

场景化实战:
  • 需求 1:创建 FTP 用户(禁止登录系统,仅访问 /ftphome/mike)

useradd -d /ftphome/mike -g ftpuser -G ftp -s /sbin/nologin mike

  • 需求 2:创建普通登录用户(指定 UID,不自动建家目录)

useradd -u 1002 -M testuser

2. passwd:设置 / 管理用户密码

功能说明:

修改用户密码、锁定账号、查看密码状态,是用户登录系统的核心验证。

命令格式:

passwd [选项] 用户名(不写用户名 = 修改当前用户密码)

关键选项:

选项

作用

风险提示

-l

锁定账号(禁止登录)

仅 root 可操作

-u

解锁账号

需与锁定成对应用

-d

清空密码(无需密码登录)

极高风险,生产环境禁用

-S

查看密码状态(锁定 / 密码类型)

快速排查账号困难

场景化实战:
  • 修改当前用户密码(安全输入,密码不显示):passwd
  • 锁定员工账号(离职时):passwd -l zhangsan
  • 验证账号是否锁定:passwd -S zhangsan(输出 L = 锁定,P = 正常)

3. usermod:修改用户属性(账号创建后调整)

功能说明:

修改用户名、UID、家目录、所属组等,相当于「用户信息编辑应用」。

命令格式:

usermod [选项] 用户名

关键选项(复用 useradd 核心选项):
  • -l:修改用户名(如把 zhangsan 改为 zhang);
  • -u/-d/-g/-G/-s:同 useradd,用于调整对应属性;
  • -L/-U:锁定 / 解锁账号(与 passwd 功能一致)。
场景化实战:
  • 员工改名后,修改用户名 + 调整附加组:

usermod -l zhang -G tech,admin zhangsan

  • 禁止用户登录(修改 Shell):usermod -s /sbin/nologin testuser

4. userdel:删除用户(谨慎处理!)

功能说明:

删除用户账号,默认仅删账号记录,需加选项才删除家目录。

命令格式:

userdel [-r] 用户名

关键选项:

选项

作用

注意事项

-r

递归删除用户 + 家目录 + 所有材料

彻底清理,无法恢复

无选项

仅删除账号记录(保留家目录)

需手动清理残留文件

场景化实战:
  • 彻底删除离职员工账号(含工作文件):userdel -r zhangsan
  • 临时删除账号(保留家目录,后续可能恢复):userdel testuser

三、组账号管理(3 个核心命令)

1. groupadd:创建组(用户的「组织单位」)

功能说明:

创建组账号,用于批量管理用户权限(如 tech 组用户可访问技术部共享目录)。

命令格式:

groupadd [-g GID] 组名

关键选项:
  • -g:指定 GID(如 1003),不指定则架构自动分配(从 1000 开始)。
场景化实战:
  • 创建技术部组(指定 GID):groupadd -g 1003 tech
  • 创建市场部组(默认 GID):groupadd market

2. gpasswd:管理组成员(添加 / 删除 / 批量设置)

功能说明:

维护组的成员列表,比直接编辑 /etc/group 文件更安全高效。

命令格式:

gpasswd [选项] 组名

关键选项:

选项

作用

特点

-a

向组添加单个用户

增量添加(不覆盖原有成员)

-d

从组删除单个用户

精准移除

-M

批量设置成员(多个用户用逗号分隔)

覆盖原有成员,谨慎使用

场景化实战:
  • 把 mike 加入 tech 组:gpasswd -a mike tech
  • 批量设置 market 组成员(张三、李四、王五):gpasswd -M zhangsan,lisi,wangwu market
  • 把 lisi 移出 market 组:gpasswd -d lisi market

3. groupdel:删除组(前提:组内无成员)

功能说明:

删除空组,若组内有用户,需先移除成员再删除。

命令格式:

groupdel 组名

避坑提示:
  • 某个用户的基本组,需先修改用户的基本组(usermod -g 其他组 用户名),再删除。就是报错「cannot remove the primary group of user」:说明该组
场景化实战:
  • 删除空组 market:groupdel market

四、权限与归属管理(3 个核心命令)

1. chmod:设置文件 / 目录权限(最常用!)

功能说明:

控制谁能读、写、执行文件 / 目录,是权限管理的核心命令。

两种格式(新手推荐数字模式,灵活用符号模式):

模式

格式示例

适用场景

数字模式

chmod 754 文件名

批量设置,简单高效

符号模式

chmod u+x 文件名

精准调整某类用户权限

关键参数:
  • 数字模式:3 位八进制数(属主 + 属组 + 其他用户),如 754=u=rwx(7)、g=rx(5)、o=r(4);
  • 符号模式:u/g/o/a(用户类型)+ +/~/=(权限操作)+ r/w/x(权限类型);
  • -R:递归修改目录及所有子文件 / 子目录(目录必须加,否则仅改目录本身)。
场景化实战:
  • 让脚本可执行(属主 + 属组 + 其他用户均有执行权限):chmod +xtest.sh(等价于 chmod a+x)
  • 设置共享目录(属主读写执行,属组读写执行,其他用户只读):chmod -R 775 /data/public
  • 禁止其他用户修改文件:chmod o-w test.txt(仅去除其他用户的写权限)
避坑提示:
  • 不要轻易设 777 权限(所有用户可读写执行),会导致记录被篡改风险;
  • 目录必须有 x 权限(执行)才能进入,文件一般不要求 x 权限(脚本除外)。

2. chown:修改材料 / 目录归属(谁是主人)

功能说明:

调整文件 / 目录的属主(所有者)或属组,比如把员工创建的文件转给团队组。

命令格式:

需求

格式示例

仅改属主

chown 用户名 目标

仅改属组

chown :组名 目标

同时改属主 + 属组

chown 用户名:组名 目标

关键选项:
  • -R:递归修改目录及子项(必须加,否则仅改目录本身)。
场景化实战:
  • 把材料转给 mike:chown mike report.txt
  • 把技术部目录归属 tech 组:chown -R :tech /data/tech
  • 同时改属主和属组:chown -R mike:tech /home/mike

3. umask:设置默认权限(新建文件 / 目录自动生效)

功能说明:

控制新建文件 / 目录的默认权限,通过「默认最大值 - 掩码」计算得出:

  • 新建文件默认最大值:666(无执行权限,避免误执行脚本);
  • 新建目录默认最大值:777(需执行权限才能进入);
  • 计算示例:umask 022 → 文件默认 666-022=644,目录默认 777-022=755。
命令格式:

umask [掩码值](无参数 = 查看当前掩码)

场景化实战:
  • 查看当前默认掩码:umask(默认一般是 002 或 022);
  • 设置严格默认权限(仅属主可读写,其他人只读):umask 022;
  • 团队共享服务器(组内可读写):umask 002(档案 664,目录 775)。

五、账号信息查询命令(6 个实用工具)

1. groups:查询用户所属组

  • 格式:groups [用户名](无用户名 = 查当前用户);
  • 示例:groups mike → 输出:mike : mike ftpuser tech(mike 是基本组,后两个是附加组)。

2. id:查询用户 UID/GID

  • 格式:id [用户名];
  • 示例:id mike → 输出:uid=1001(mike) gid=1001(mike) groups=1001(mike),1002(ftpuser),1003(tech)。

3. finger:查询用户详细信息(需安装)

  • 作用:显示用户名、家目录、登录 Shell、登录时间等;
  • 安装:yum install finger -y(CentOS)/ apt install finger -y(Ubuntu);
  • 示例:finger mike。

4. 已登录用户查询(w/who/users)

命令

功能特点

适用场景

w

显示登录用户 + 终端 + 登录时间 + 当前处理(最详细)

排查谁在操作服务器

who

显示登录用户 + 终端 + 登录时间(简洁)

高效查看登录用户

users

仅显现登录用户名(最简洁)

统计当前在线人数

  • 示例:快速查看谁在登录:users → 输出:root mike。

六、总结与实战建议

  1. 核心原则:最小权限原则(给用户 / 组分配刚好够用的权限,避免超额授权);
  1. 高频场景组合
    • 创建团队用户 + 组:groupadd tech → useradd -g tech -s /bin/bash zhangsan → passwd zhangsan;
    • 共享目录授权:mkdir /data/tech → chown -R :tech /data/tech → chmod -R 775 /data/tech;
  1. 避坑清单
    • 否有重要文件(用ls /home/用户名检查);就是删除用户前先确认
    • 锁定账号优先用passwd -l,而非删除(便于后续恢复);
    • 避免给系统文件设 777 权限(如/etc/passwd),会导致系统漏洞。

建议新手先在测试机(如虚拟机)练习,熟悉后再操作生产服务器。如果遇到具体场景(如 FTP 权限配置、sudo 授权),可针对性扩展命令用法!