五、Linux用户和用户组
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
1 Linux系统用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1.1 添加新的用户账号使用useradd命令,其语法如下:
useradd 选项 用户名
1.1.1 实例1
useradd -d /home/sam -m sam
1.1.2 实例2
1.1.3 实例3
用户和用户组是用来划分权限的抽象概念,用户除了作为权限的抽象之外。我们通常还需要借助用户名和密码来登录系统。
用户和用户组是多对多的关系,即一个用户可以对应多个用户组,一个用户组也可以包含多个用户。
1 创建用户
useradd:通常用于在脚本中创建用户
adduser:交互式地创建用户,手动设置密码,自动创建家目录
用户信息文件保存在 /etc/passwd
中(注意:/sbin/nologin 即为不可登录)
用户密码信息文件是 /etc/shadow
(注意:密码被通过加密后存储)
yangquan:$y$j9T$ME67uWWootVd.9QiNjZXu0$sa/9OU9vQN/lvw0TtXwrti8IW/bFMtPl2AT9/7DZIm.:19780:0:99999:7:::
- 第一字段:用户名
- 第二字段:加密后的密码 如果为 * 或 !!无法登录
- 第三字段:上一次修改密码时间,数字的含义为 从1970-1-1 到改密码的时间 一共经历多少天
- 第四字段:最小修改密码间隔时间 如果是0 可以随意修改, 7代表7 天后才可以修改
- 第五字段: 密码有效期 默认99999天 273年,设置为 7 代表7天要求你重新设置密码
- 第六字段:密码到期提醒时间 设置为7 代表密码到期前7天会提示你
- 第七字段:密码过期后的宽限天数 设置为10 表示密码到期后还可以使用10天
- 第八字段:用户失效时间 同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间 到期后无法登录
- 第九字段:保留字段
1.1 useradd自定义创建
用法:useradd [选项] 用户名
选项:
-u 指定uid
-g 指定基本组(组名和gid都可以)
-G 指定附加组(组名和gid都可以)
-d 指定家目录
-M 不建立家目录
-s 指定默认登录shell
-e 指定用户失效时间 可使用 YYYY-MM-DD 的日期格式。
-r 建立系统用户
不加选项默认按顺序使用uid号;建立同名基本组,按顺序使用gid;在/home下建立同名家目录;将用户信息保存在/etc/passwd下
示例:
# 创建用户组
groupadd yangquangroup
# 创建用户,并把用户添加到用户组
sudo useradd -m -d /home/yangquan -s /bin/bash -g yangquangroup yangquan
# 为 yangquan 用户设置密码
password=$(cat /proc/sys/kernel/random/uuid);echo -e "$password\n$password" | sudo passwd yangquan
# 获取刚刚为 yangquan 用户设置的密码
echo $password
1.2 adduser交互式创建
2 管理用户
usermod:修改用户信息
userdel:删除用户
# 切换用户
su yangquan123
# 重置密码
sudo passwd yangquan123
# 修改用户名
usermod -l 新用户名 旧用户名
# 修改用户家目录
usermod -d 新家目录 用户名
# 锁定用户不能登陆
usermod -L 用户名
# 解除用户锁定
usermod -U 用户名
# 查看用户状态
passwd -S 用户名
# 删除用户的同时删除家目录
usermod -r 用户名
# 删除用户
userdel 用户名
# 删除用户名和用户的家目录
userdel -r 用户名
3 用户组
# /etc/group存储用户组信息文件
sudo gedit /etc/group
3.1 新建用户组
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
3.2 查看某个用户有哪些用户组
groups lieryang
3.3 添加到用户组
sudo usermod -aG docker lieryang
3.4 示例
1.创建和使用docker组
在Docker安装过程中,通常会自动创建docker用户组。如果出于某种原因该组不存在,可以手动创建它:
sudo groupadd docker
2.将用户添加到docker组
要将一个用户添加到docker组中,使用以下命令,将username替换为实际的用户名:
sudo usermod -aG docker lieryang
这个命令会将用户添加到docker组,并保留用户在其他组中的成员资格。
3.5 删除用户组
groupdel yangquangroup