5、用户管理
00 分钟
2024-6-25
Created
Jun 19, 2024 01:29 PM
Tags
用户管理
在Linux系统中,会存有各种多个用户。我们使用者靠用户名来区分各自登录的账号。
添加用户:useradd [用户名]、修改密码:passwd [用户名]、查看进程:[ps -aux]
一、用户相关配置文件
(一)/etc/passwd文件
内容举例(一行):root:x:0:0:root:/root:/bin/bash
→ 文件中用:当做分隔符,一共有7列。
每列的内容分别为↓
用户名
第二列 密码占位符(真正的密码文件在/etc/shadow
很多程序的运行都和权限与UID/GID有关。因此各程序要读取/etc/passwd来了解不同账号的权限。但是如果取消密码占位符,就可以实现本地免密码登录(第二列如果为空则不能进行远程登录)
第三列 用户ID(UID)
① 超级用户
0是超级用户的ID。只要UID是0,就是超级用户。
② 系统用户和服务用户
1-999为系统自行创建的系统账号UID和为服务使用的账号UID。(nfsnobody是例外,UID=65534)。
③ 普通用户
1000-65535为普通用户UID,最大为60000 [# /etc/login.defs配置文件限制]
# 操作系统本身是靠UID来辨别身份,且每个用户都有自己独立的UID
第四列 初始组ID(GID)
  • 用户创建时先创建用户组,再把用户放入用户组,用户的初始组有且只有一个;
  • 有效组(附加组)是后续添加的组,每个用户可以有多个有效组(附加组)。
第五列 用户描述信息
  • 类似于“注释”,现在已经不常用
第六列 用户家目录
第七列 用户的shell类型
  • 用户会取得一个shell与系统的内核通信以进行用户的操作任务。
  • 常见的有:
① /bin/bash:shell类型为bash,bash shell是最常用的一种shell(能正常登录系统)
(2)/sbin/nologin:不能登录系统,可以使用系统资源
(二)/etc/shadow文件
→ 文件中用:当做分隔符,一共有9列。
每列的内容分别为↓
第一列 用户名
第二列 经过加密编码的密码
$6$开头的表明是使用SHA-512加密。
(1)如果是“!!”或“*”代表没有密码,不能登录
(2)可以在密码前加一个!或*,加入后不能登录
(3)新建用户时,如果不设置密码,那么第二列为“!!”
第三列 密码最近的更改时间
此段记录了改动密码的日期,是由1970-01-01作为标准时间来计算的。
—·拓展———————————————————————
·时间戳转日期
date -d "1970-01-01 17182 days" → 2017年01月16日 星期一 00:00:00 CST
·日期转时间戳
echo $(($(date --date="2022/04/21"+%s)86400+1))
———————————————————————————
第四列 密码不可被更改的天数
(0随时都可以被更改;5表示5天后才可以更改密码)
第五列 密码最长有效期限
(默认99999(273年),表示永久)
第六列 密码到期前的警告天数
第七列 密码过期后的宽限天数
(0表示过期后马上失效;5表示过期后五天失效;-1表示永不失效)
第八列 账号失效日期
第九列 保留
(三)/etc/group文件
内容举例(一行):root:x:0:
→ 文件中用:当做分隔符,一共有4列。
每列的内容分别为↓
第一列 用户组名称(默认组成员)
第二列 组密码占位符
第三列 组ID号(GID)
第四列 组成员列表
把用户添加到组内的方式有两种:临时、永久
·临时
root用户设置组密码 → gpasswd [组名];
用户使用组密码,切换到组内 → 通过newgrp命令。
# 重新登录之后就会失效。
·永久
写入/etc/group文件中。
① gpasswd -a [用户名] [组名] 添加祖成员
② gpasswd -A [管理员] [组员] 添加组管理员
(四)/etc/gshadow文件
内容举例(一行):root:::
→ 文件中用:当做分隔符,一共有4列。
每列的内容分别为↓
第一列 用户组
第二列 用户组密码
# 可以为空或!,表示没有密码
第三列 用户管理者
第四列 组成员
(五)/etc/login.defs文件
配置文件
→用户mail文件路径设置;→密码的四个时间;→配置UID、GID的范围;→配置是否创建用户家目录;……
(六)/etc/default/useradd文件
创建用户的默认文件
(七)/etc/skel/文件
定义了新建用户在主目录下默认的配置文件,即家目录模板位置
二、用户管理相关命令
(一)useradd命令
格式:useradd [-选项] [用户名]
选项:-u UID用户标识号,必须唯一
  • g group,制定新建用户登录时所属的默认组(初始组)
-G 指定新建用户的附加组 # 必须是已存在的组
  • d home,指定新建用户的默认家目录
  • s shell,指定新建用户默认shell类型
  • c comment,说明信息
  • f 指定过期后停用的时间期限
  • M 创建时不生成家目录
举例:
为Nginx建立服务用户:useradd -u 666 -s /sbin/nologin -M nginx
验证查看创建内容:tail -n 3 /etc/passwd
(二)usermod命令
格式:usermod [-选项] [用户名] [修改信息]
# 轻易一般不会去改用户信息,更倾向于新建
(三)userdel命令
格式:userdel [-选项] [用户名]
选项:-r 删除用户时,连带家目录一起删去
(四)passwd命令
格式:passwd [-选项] [用户名]
选项:-l 锁定用户密码,使之无法登陆
  • u 解锁用户密码
  • S 查看用户账号状态
# 第一次对一个用户使用时是为此用户创建密码
第二次使用是修改密码。普通用户没有密码时,是无法修改密码的。
·非交互式密码设置
echo “123123” | passwd --stdin user1
  • **以命令的方式直接执行有风险,在历史命令中会以明文的方式查看到
(五)group命令
格式:groupadd [-选项] [GID] [组名]
选项:-g 组的GID # GID必须唯一
  • o GID可以与已有的用户组的GID相同
(六)gpasswd命令
格式:gpasswd [-选项] [用户名[ [组名]
选项:-a 添加组员
-d 删除组员
  • M 定义组内成员列表 # ①用逗号分隔 ②覆盖式
(七)newgrp命令
格式:newgrp [组名]
作用:在用户组之间切换,输入exit退出组切换
(八)groupdel命令
格式:groupdel [组名]
作用:删除用户组
(九)group命令
作用:查询用户所属哪些组
三、其他相关命令
(一)id命令
格式:id [用户名]
作用:显示用户的UID、初始组、附加组列表
(二)su命令
格式:su [用户名]
作用:切换用户身份
————————————注——————————————
·su [root] 与 su - [root] 两者间区别
  • 前者只是切换了 用户身份 ,但 shell环境× 仍然是普通用户;
  • 后者连同 用户 和 shell环境 都切换成root身份。
# 用命令 echo $PATH 可查看两者方式切换后的环境变量
———————————————————————————
(三)finger命令
格式:finger [用户名]
作用:查看用户详细信息
yum search finger
yum -y install finger
上一篇
Linux 基础知识 往期汇总
下一篇
<K8S> vol. 01 - kubernetes 组件