本节内容
- useradd
- userdel
- usermod
- groupadd
- groupdel
用户管理
为什么需要有用户?
1. Linux 是一个多用户系统
2. 权限管理 (权限最小化)
用户: 存在的目录是为了对系统中的资源做归属
密码: 存在的目的是为了对用户做身份认证
用户和用户组
用户组, 在用户组中可以包含一个或者多个用户
方便对多个用户进行授权操作
用户管理相关文件
/etc/passwd: 用户基本信息
/etc/shadow: 用户密码信息, 过期时间等
/etc/group: 用户组信息
/etc/gshadow: 用户组密码
/etc/default/useradd: 创建用户的默认配置信息
/etc/skel/: 用户家目录模板
/etc/login.defs: 全局用户设定信息
/etc/passwd: 每行是一个用户, 用来记录用户的基本信息, 每行的格式
account:password:UID:GID:GECOS:directory:shell
accout: 用户名
password: 用户密码, 密码位置默认是 x
UID: 用户身份 id, 用来唯一的标识一个用户
GID: 用户组 id, 用来在系统中唯一的标识一个用户组 (这里指的是其基本组的组 ID)
GECOS: 用户描述信息, 可以空白, 也可以随意写 (useradd -c )
directory: 用户家目录
shell: 用户所使用的 shell 类型
/bin/bash--> 可以登录系统
/sbin/nologin--> 该用户一定无法登录系统
比如
root : x : 0 : 0 : newuser : /root : /bin/bash
用户名 密 码 用户 id 用户所在组的 id 描述信息 家目录 shell 类型
/etc/group
用户组信息
Linux, 用户一定是属于一个组的
在 Linux 中, 创建用户的时候,
会自动创建一个组, 组名和组 id 都和所创建的用户相同
而且, 该用户会自动加入到这个组中
c:x:1007:
组成: groupname:password:GID: [user1, user2.....]
groupname: 组名
password: 组密码
GID: 组 id
[user1, user2.....]: 改组中的用户列表
概念
用户的基本组 (主组): 当前用户具有哪个组的权限
用户的附加组: 用户额外属于的组
zx
主组: gp02
附加组: gp01,gp03
/etc/default/useradd
Linux 中的用户类别
可以登录系统的用户
管理员用户: uid 为 0 的用户
普通用户: 就是可以登录系统, 但是没有管理员权限的用户
不能登录系统的用户:
系统用户: 用来运行一个程序, 而不是用来登录系统
各类用户的 id
管理员用户: 0
系统用户: 1-999
普通用户: 1000-6000
系统用户的特点
1. 因为不需要登录, 所以 shell 类型通常为 / sbin/nologin
2. 系统用户没有家目录
3. 系统用户 id 通常是小于 1000
Useradd 命令
- useradd [options] username
- options:
-d, --home HOME_DIR: 指定用户家目录
-c, --comment COMMENT: 用户说明信息
-e, --expiredate EXPIRE_DATE: 指的账号的过期时间, 时间格式 YYYY-MM-DD
-g, --gid GROUP: 指的用户的基本组的组 id
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 指的用户的附加组列表
-u,--uid UID: 指的用户的 uid
-m, --create-home: 创建用户的时候自动创建用户家目录 (默认就已经使用)
-M: 不自动创建用户家目录
-o, --non-unique: 通常和 - u 一起使用, 用来让两个用使用相同的 uid
-r, --system: 创建一个系统用户
-s, --shell SHELL: 在创建用户的时候, 指定用户的 shell 类型
(/bin/bash/,/sbin/nlogin)
创建一个系统用户
# useradd -s /sbin/nologin -M -r t17
passwd 命令
- passwd [[options] username]
- (如果不指定用户名, 那么就是修改当前用户的密码)
- options:
- --stdin
-l: 锁定用户
-u: 解锁用户
-d: 删除用户密码
-e: 让用户密码过期
echo "123" | passwd --stdin ken
表示给 ken 用户设置密码 123 (ken 用户必须存在)
设置密码的原则
1. 长度要够
2. 密码复杂度 (数字 + 字母 + 特殊符号)
Userdel 命令
删除用户 userdel
- userdel [options] username
- options:
-r: 在删除用户的时候, 连同用户数据一并删除
创建用户组 groupadd
- groupadd [options] groupname
- options:
- -g GID:
- -o:
删除用户组 groupdel
groupdel groupname
Shadow 文件详解
zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
第一段: 用户名:
第二段: 加密后的密码
第三段: 上次修改密码举例元年经过的天数 (如果该字段空, 意味着该用户密码被禁用)
第四段: 密码最短使用时间 (0 表示不限制)
第五段: 密码最长有效期 (99999 表示不限制)(如果第 5 的值小于第四段, 那么用户无法修改自己的密码)
第六段: 密码到期前几天开始发送告警, 提示密码即将过去, 请立即修改
第七段: 非活动期间, 密码到期后的宽限时间 (登录系统的时候必须先修改密码, 才能登录)
第八段: 密码过期时间 (也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)
第九段: 保留字段
Usermod 命令
- usermod [options] username
- options
-g, --gid GROUP: 更 新 使 用 者 新 的 起 始 登 入 群 组 . 群 组 名 须 已 存 在 .
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 定 义 使 用 者 为 一 堆 groups 的 成 员 . 每 个 群 组 使 用 , 区 格 开 来
-u, --uid UID: 用 者 ID 值 . 必 须 为 唯 一 的 ID 值
-s, --shell SHELL: 指 定 新 登 入 shell . 如 此 栏 留 白 , 系 统 将 选 用 系 统 预 设 shell .
-L, --lock: 锁定用户的密码
-U : 解锁用户的密码
-l, --login NEW_LOGIN : 变 更 使 用 者 login 时 的 名 称 为 login_name .
-e, --expiredate EXPIRE_DATE: 加 上 使 用 者 帐 号 停 止 日 期 . 日 期 格 式 为 MM/DD/YY.
-d, --home HOME_DIR: 更 新 使 用 者 新 的 登 入 目 录 .
-m, --move-home: 移动用户家目录至新的位置
练习
1. 创建用户 java,uid 1000 基本组是 gp001 附加组 gp002 gp003
useradd -u 1000 -g gp001 -G gp002,gp003 java
2. 修改用户 java,
将名称修改为 python,
将 uid 修改为 2000,
修改主组是 cats,
shell 类型改为 /sbin/nologin
让该用户在 10 月 1 号到期
#######################
id 命令
作用: 用来查看指定的用户的信息 (或判断用户是否存在)
格式: id [-u|-g|-G] username
选项
-u: 仅仅显示用户 uid
-g: 仅仅显示用户 gid
-G: 仅仅显示用户全部组 id
su 命令 (switch user)
作用: 进行切换用户
格式: su - 目标用户
su 命令和 su - 命令最大的本质区别就是:
前者只是切换了 root 身份, 但 Shell 环境仍然是普通用户的 Shell; 而后者连用户和 Shell 环境一起切换成 root 身份了. 只有切换了 Shell 环境才不会出现 PATH 环境变量错误. su 切换成
root 用户以后, pwd 一下, 发现工作目录仍然是普通用户的工作目录; 而用 su - 命令切换以后, 工作目录变成 root 的工作目录了. 用 echo $PATH 命令看一下 su 和 su - 以后的环境变量有
何不同. 以此类推, 要从当前用户切换到其它用户也一样, 应该使用 su - 命令
来源: https://www.cnblogs.com/kenken2018/p/10267775.html