用户管理——配置文件和命令
- 在 Linux 系统中各种会存多个用户。我们的使用者靠用户名来区分各自登陆的账号。
- 如果我们的用户想要使用系统资源,就必须在系统中拥有合法的账号。在系统多个文件中都保存了用户身份相关信息
一、用户相关配置文件
1./etc/passwd
在/etc/passwd 文件中用:当做分隔符,一共有 7 列。每列的内容分别是:
第一列:用户名
第二列:密码占位符(如果为空则不能进行远程连接登录)
第三列:用户ID(UID)(1-999是系统用户范围,1000-65535是普通用户范围)
第四列:初始组ID(GID)(初始组只能有一个)
第五列:用户描述信息(类似注释)
第六列:用户家目录
第七列:用户的shell类型(/bin/bash可以正常登录系统,/sbin/nologin不能登录系统,可以使用系统资源)
2./etc/shadow
第一列:用户名
第二列:经过加密的密码,$6$开头是sha-512加密(!!或*表示没密码,!表示锁定用户,使之不能登录系统)
第三列:密码最近更改时间(时间戳转日期:date -d "1970-01-01 时间戳 days")
第四列:密码不可被更改的天数(0表示随时可以被修改)
第五列:密码最长有效期
第六列:密码到期前的警告天数
第七列:密码过期后的宽限天数(-1代表密码永不失效)
第八列:账号失效日期(时间戳,超过后无法使用)
第九列:保留
3./etc/group
第一列: 组名称(默认组成员)
第二列:组密码占位符
第三列:组ID号(GID)
第四列:组内成员列表(临时:root用户设置组密码,其他用户通过newgrp切换到组内;永久:root用户将其他用户添加到组内【gpasswd -a 用户 组名】,添加后会在/etc/group最后一列记录)
4./etc/gshadow
第一列:组名称
第二列:经过加密的组密码(空或!表示没有密码)
第三列:组管理员(多个管理员用,分隔)
第四列:组成员(多个成员用,分隔)
5./etc/login.defs
当用户创建时,同时在目录/var/spool/mail 中创建一个用户 mail 文件
用户权限默认掩码值
新建用户默认家目录权限,如果 HOME_MODE 未设置则使用 UMASK 值权限创建用户家目录
- 指定密码保持有效最大天数
- 表示修改密码的间隔时间
- 表示密码到期前多少天系统提示用户密码到期
- 指定 UID 最小为 1000,也就是说创建新用户时用户的 UID 从 1000 开始。
- 指定最大 UID 为 60000。
- 系统用户最小 201
- 系统用户最大 999
- 最小 GID 为 1000。
- 最大 GID 为 60000。
- 系统组 ID 最小 201
- 系统组 ID 最大 999
- 可 使 用 的 额 外 UID/GID 范 围 , 当 前 RockyLinux 中 可 指 定 UID 大 于 65535 甚 至 超 出600100000 范围的 ID 都能成功设置,在创建用户 UID 大于 60000 时就会有警告信息。
表示 userdel 删除用户时,如果该用户组没有成员存在,则会删除用户组
指定是否创建用户家目录,yes 为创建,no 表示不创建
创建用户时默认创建用户家目录
使用 SHA512 加密方式
6./etc/default/useradd
- 创建用户的默认文件
- 新创建用户时默认初始组的 GID 号(公共组),现在使用的都是私有组机制(根据创建用户名称创建组)
- /home 表示用户家目录的位置
- 表示是否启用账号过期禁用,-1 表示不启用
- 表示账号过期,不设置表示不启用
- 指定了新建用户的默认 shell 类型
- 指定用户家目录中默认文件的来源,新建用户家目录下的文件都是从这个目录中复制的
- 表示是否创建邮箱缓存 yes 表示创建
7./etc/skel
定义了新建用户在主目录下默认的配置文件
二、用户管理相关命令
1.useradd [选项] 用户名
- -u:uid用户标识号,此标识必须唯一
- -g:group指定新用户登录时所属的初始组
- -G:指定新用户的附加组(必须已存在)
- -d:home指定新建用户的家目录
- -s:shell指定新建用户默认的shell类型
- -c:comment对新建用户添加说明信息
- -f:inactive指定账号过期多长时间后会被永久停用
- -M:创建时不生成用户家目录
- -r:自动将用户uid和gid指定到1000以内,不在/home下创建家目录
例:创建服务用户(nginx)给服务(nginx)使用
1.WINSCP传输安装包
2.安装好nginx之后启动nginx,监听端口
3.nginx服务已经启动,现在查看进程
4.发现当前启动nginx进程的是nobody用户,进去/etc/passwd查看nobody
5.我们改一下启动这个服务的服务用户,改成自己设置的,自己设置一个nginx服务用户
6.重新卸载安装nginx服务,将nginx服务用户添加进去
7.再次启动nginx服务,打开pstree,可以看到现在我们启动nginx服务进程的就是nginx服务用户
2.usermod [选项] 用户名
- -u UID:修改用户的指定UID
- -g 组名:修改用户的指定初始组
- -G 组名:修改用户的附加组
- -c 说明:修改用户的描述信息
- -d 目录:结合-m选项直接对源家目录进行改名实现修改家目录
- -s shell类型:修改用户的登录shell类型
- -L 用户名:锁定用户的密码
- -U 用户名:解锁用户的密码
- -l 新用户名 旧用户名:修改用户名
3.userdel [选项] 用户名
- -r :删除用户时,连家目录一起删除
4.passwd [选项] 用户名
- -l 用户名:锁定用户的密码,使之无法登录系统
- -u 用户名:解锁用户密码
- -S 用户名:查看用户账号状态
注:第一次对一个用户使用时是为了创建密码,第二次使用时为了修改密码。当普通用户没有密码时,自己也修改不了密码
非交互式密码设置:echo "123" | passwd --stdin user1
5.groupadd [选项] GID 组名
- -g:指定新建用户的GID,该GID必须唯一
- -r:创建系统组(1000以内)
6.gpasswd [选项] 用户名 组名
- -A:指定组管理员
- -a:向指定组内添加一个成员
- -d:把指定用户从组内删除
- -M:定义组内成员列表,用户之间用,分隔(覆盖式)
7.newgrp 组名
- 多个用户组之间切换,可以使用exit退出
8.groupdel 组名
- 删除用户组
9.groups
- 查询用户所属哪些组
三、其他相关命令
1.id 用户名
- 显示用户的UID,初始组、附加组列表
2.su 用户名
- 切换用户身份(su - 用户名:完全切换)