Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

1 Linux系统用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

1.1 添加新的用户账号使用useradd命令,其语法如下:

useradd 选项 用户名

alt text

1.1.1 实例1

useradd -d /home/sam -m sam

1.1.2 实例2

1.1.3 实例3

用户和用户组是用来划分权限的抽象概念,用户除了作为权限的抽象之外。我们通常还需要借助用户名和密码来登录系统。

用户和用户组是多对多的关系,即一个用户可以对应多个用户组,一个用户组也可以包含多个用户。

alt text

1 创建用户

useradd:通常用于在脚本中创建用户

adduser:交互式地创建用户,手动设置密码,自动创建家目录

用户信息文件保存在 /etc/passwd 中(注意:/sbin/nologin 即为不可登录)

alt text

用户密码信息文件是 /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交互式创建

alt text

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

alt text

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

alt text

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