Linux 用户管理

用户管理

概念

用户(账户)

文件、进程、任务,给每个用户提供特定的工作环境

  1. 超级用户:root

  2. 系统用户:伪账户

  3. 普通用户

组(账户)

具有相同特征的用户的集合体

一个组可有多个用户,一个用户可属于不同的组

创建组的目的是可以成批的管理同类的用户,从而简化管理工作

当用户属于多个组时,登录的组称为主组,其他组称为附加组

  1. 私有组

  2. 标准组

用户相关配置文件

passwd 文件

  • 位置:/etc/passwd
  • 作用:保存各个用户的账户信息(密码除外)
  • passwd 文件格式:每行定义一个用户账号,一行中又划分为多个字段,定 义用户账号的不同属性,各字段间用“:”分隔
1
用户名:密码:用户ID:组群ID:用户全名:用户主目录:使用的shell

C:\Users\chenx\AppData\Roaming\Typora\typora-user-images\image-20231212141159676.png

  • 所有用户都可以查看该文件的内容,但是口令密码使用×填充,不使用明文保存
  • 用户 ID(UID)范围
    • root:0
    • 系统用户:1~999
    • 普通用户:1000 开始
  • 组 ID(GID): 用来表示用户所属的组
  • 部分字段可以为空,但是必须用 : 分隔

shadow 文件

  • 位置: /etc/shadow

  • 作用:保存各用户账户的密码等信息

  • 文件格式:每行定义一个用户账号,一行中又划分为多个字段定义 用户账号的不同属性,各字段间用“:”分隔

1
用户名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间v不活动时间:失效时间:标志

http://markdown-1303167219.cos.ap-shanghai.myqcloud.com/image-20210620205030155.png

C:\Users\chenx\AppData\Roaming\Typora\typora-user-images\image-20231212141546841.png

  • 只有 root 有权限查看 shadow 文件
    • 密文:若为 *!!,表示账户未设置密码

组相关配置文件

组群账号信息文件 group

  • 位置:/etc/group
  • 作用:保存各用户账户的分组信息。
  • 文件格式
1
组名:组口令:组GID:组成员

C:\Users\chenx\AppData\Roaming\Typora\typora-user-images\image-20231212143618387.png

  • root 组:GID 为 0;

  • 系统组:安装 Linux 以及部分服务性程序时系统自动设置的组,GID 取值为 1 到 999.

  • 私有组:由超级用户新建的组,GID>=1000

组群口令信息文件 gshadow

  • 位置: /etc/gshadow

  • 作用:用于定义用户组口令、组管理员等信息。

  • 文件格式

1
组名:组口令:组管理员账号:组成员列表

C:\Users\chenx\AppData\Roaming\Typora\typora-user-images\image-20231212143803877.png

  • 其中组口令字段以 ! 占位。

用户操作

useradd 命令

  • 功能:新建用户账号

  • 格式

1
useradd [选项] 用户名
  • 选项

    • -d home-dir:设置用户的宿主目录,默认为/home/username
    • -e date:设置账号的过期日期,格式如:2020-10-30
    • -g group-name:设定用户的所属组名
    • -s shell-path:设定用户使用的 shell,默认/bin/bash
    • -u uid:设定用户的 UID ,唯一且大于 1000
    • -D username:用于显示用户所使用的默认值
1
2
# 按照默认值新建用户 tom
useradd tom

passwd 命令

  • 功能:设置或修改用户的口令,修改口令的属性

  • 格式:passwd [选项] 用户名

  • 选项

    • -S username 用于查询指定用户的口令状态,仅 root 可用
    • -l username 用于锁定指定用户的口令,仅 root 可用
    • -u username 用于解锁指定用户的口令,仅 root 可用
    • -d username 用于删除指定用户的口令,仅 root 可用
1
2
3
4
5
# 为 tom 用户设置初始口令 
passwd tom

# 查看 tom 用户的口令状态
passwd –S tom

usermod 命令

  • 功能:修改用户的属性 ,与 useradd 参数相同

  • 格式:usermod [选项] 用户名

  • 选项

    • -c 全名:指定用户的全称
    • -d 主目录:指定用户的主目录
    • -e 有效期限:指定用户账号的有效期限
    • -f 缓冲天数:指定口令过期后多久将关闭此账号
    • -g 组群 ID 或组群名:指定用户所属的主要组群
    • -G 组群 ID 或组群名:指定用户所属的附加组群
    • -u 用户 ID:指定用户的 UID
    • -l newusername username:改变已有用户名
    • -L username:用于锁定指定的用户账户
    • -U username:对已锁定的用户账号进行解锁
1
2
3
4
5
# 修改 tom 账户的属性: 用户名的全称改为 tommy; 指定它的主目录为/home/tommy; uid 设置为 1010
usermod –c tommy –d /home/tommy -u 1010 tom

# 将名为 tom 的用户改名为 tommy
usermod –l tommy tom

id 命令

  • 功能:查看用户的 UID GID 和用户所属组群的信息。

    • 如不指定,则显示当前用户的相关信息
  • 格式

1
id [用户名] 

userdel 命令

  • 功能:删除指定的用户账号
    • 使用 r 参数,删除用户的同时删除用户所有相关的文件,包括宿主目录及用户的邮件池等。
  • 格式
1
userdel [-r] 用户名 
1
userdel –r tom

组群操作

groupadd 命令

  • 功能:新建组群
  • 格式
1
groupadd [选项] 组名
  • 选项

    • -g GID 指定新建组的 GID(>1000)
1
2
3
4
5
6
7
8
# 新建一个组,组名为 mygroup
groupadd mygroup

# 新建一个组,并指定其 GID 为 1010,组名为 studentgroup
groupadd –g 1010 studentgroup

# 新建用户 zhuang1 ,将它加入到刚刚建立的为 studentgroup 组
useradd –g studentgroup zhuang1 

groupmod 命令

  • 功能:修改指定组群的属性

  • 格式

1
groupmod [选项] 组名
  • 选项

    • -g GID:指定新建组的 GID (>=1000)
    • -n 新组名 原组名:指定组群的新名字
    • -G 组群名 用户名:将用户添加到组群中
1
2
# 将刚刚建立的 mygroup 组,改名为 newmygroup
 groupmod –n newmygroup mygroup

groupdel 命令

  • 功能:删除指定的组群

  • 格式:groupdel [选项] 组名

    • 被删组群不是任何用户的主组群
    • 要删除的组账户必须存在并且不能作为私有组被用户账号引用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 删除私有组:tom 组 
groupdel tom # 将提醒你不能移除私有组 

# 删除空组:将刚刚建立 newmygroup 
groupdel newmygroup

# 删除有用户的组: studentgroup 组,先删除用户再删除组 
userdel -r zhuang1 
userdel -r zhuang2 
userdel -r zhuang3 
groupdel studentgroup

gpasswd 命令

gpasswd 的全称是 “group password”,即组密码。这个命令用于管理 Linux 系统上的用户组密码,包括添加和删除组成员,设置组密码等操作。

  • 功能:用于将指定用户添加到指定用户组或从组内删除

  • 格式:gpasswd [选项] 用户名 组名

  • 选项

    • -a username groupname 将指定用户添加到指定用户组中
    • -d username groupname 从组内删除用户
    • -A username groupname 设指定用户为指定组的管理员

1
2
3
4
5
6
7
8
9
# 创建几个普通用户,将其加入到指定的组
useradd tom1 
useradd tom2 
groupadd mygroup1 
gpasswd -a tom1 mygroup1 
gpasswd -a tom2 mygroup1

# 从组内删除用户 tom1
gpasswd –d tom1 mygroup1

groups 命令

  • 功能:查看一个用户的所属的所有组群

  • 格式

1
groups 用户名