一、用户与组概述
与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此可见,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往较多关注用户与用户组。
在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GID,UID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。
1、用户类型
-
root用户
root用户时UID和GID都等于0的用户,是Linux系统中的“上帝”,拥有最大的权限。如果深入了解Linux系统,会发现root用户真的拥有很多特权,比如:无视Linux对权限的设置而强行读、写、执行文件,切换其他用户登录不需要密码,可以强行切换到已经存在的用户,只有root可以为普通用户修改密码等等。
-
系统用户 (程序用户)
系统用户通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。在CentOS6系统中,系统用户的UID范围是1-499,在CentOS7系统中,系统用户的ID是1-999。
-
普通用户
普通用户只能由root用户创建,该用户拥有家目录,并且可以登录,该用户的权限由root分配。普通用户拥有指定的shell环境。
2、用户和用户组关系
在Linux系统中,每个用户必定属于一个主组(基本组),默认情况下属于与其同名的用户组,最多可以有31个附属组(附加组),从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
3、用户和用户组配置文件
1、存储用户信息
/etc/passwd
tail -1 /etc/passwd
user10:x:1014:1014::/home/user10:/bin/bash
#用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
2、该配置文件保存了用户的密码信息
/etc/shadow
tail -1 /etc/shadow
user2:!!:19522:0:99999:7:::
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
3、该文件保存了用户组的信息
/etc/group
tail -1 /etc/group
nginx:x:982:
#组名:占位符:组ID:非基本组的组成员
4、该文件保存了用户组的密码
/etc/gshadow
5、该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息
/etc/login.defs
6、用户创建时默认文件的模版目录
/etc/skel目录
[root@c2407 skel]# ls -a
. .. .bash_logout .bash_profile .bashrc .mozilla
二、用户管理
1、useradd命令
语法
useradd [选项] 用户名
选项
选项 | 作用 |
---|---|
-u | 指定用户的UID。 |
-d | 指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录。 |
-s | 指定用户的登录shell |
-M | 创建用户时不创建家目录 |
-g | 创建用户时指定基本组,不会创建用户的同名组 |
-G | 创建用户时指定附加组,依然会创建同名组 |
-e | 创建用户时,指定用户的失效时间。 |
案例
1、指定用户的UID -u
(1)查看是否有重复的用户
cat /etc/passwd | cut -d: -f3 | grep 1001
(2)创建指定用户的UID
useradd -u 1001 user1
2、指定用户家目录 -d
useradd -d /user2 user2
3、指定用户的登录shell -s
useradd -s /sbin/nologin user5
4、创建用户时不创建家目录 -M
useradd -M user4
5、创建程序用户 -M -s
useradd -M -s /sbin/nologin user5
6、创建用户时指定基本组 -g
useradd -g wq user2
7、创建用户时指定附加组 -G
useradd -G wq user3
8、创建用户时,指定用户的失效时间 -e
useradd -e YYYY-mm-ee user6
2、userdel命令
语法
userdel [选项] 用户名
选项
选项 | 作用 |
---|---|
-r, --remove | 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。 |
案例
删除用户的同时删除在创建时产生的文件
userdel -r user7
3、passwd命令
语法
passwd [选项] 用户名
选项
选项 | 作用 |
---|---|
-l(小写L), --lock | 锁定用户密码。 |
-S | 查看密码的锁定状态 |
-u,--unlock | 解除用户密码的锁定状态 |
-d, --delete | 将用户密码清空 |
-e,--expire | 直接让密码失效,下次登录时必须更改。 |
--stdin | 非交互式修改密码。 |
案例
1、设置用户密码
用户输入passwd命令后直接回车,表示更改本身的密码。
passwd user9
2、锁定用户密码
passwd -l user6
锁定用户 user6 的密码 。
passwd: 操作成功
3、查看密码的锁定状态
passwd -S user9
4、解除密码的锁定状态
passwd -u user9
解锁用户 user9 的密码。
passwd: 操作成功
5、清空用户密码
passwd -d user9
清除用户的密码 user9。
passwd: 操作成功
6、强制密码失效
passwd -e user9
正在终止用户 user9 的密码。
passwd: 操作成功
7、非交互式修改用户密码
echo 1 | passwd --stdin user9
4、usermod命令
语法
usermod [选项] 用户名
选项
选项 | 作用 |
---|---|
-u | 修改用户的UID。 |
-d | 修改用户的家目录,而不采用默认创建在/home中的目录。 |
-s | 修改用户的登录shell |
-g | 修改用户基本组,不会创建用户的同名组 |
-G | 修改用户附加组,依然会创建同名组 |
-e | 修改用户的失效时间。 |
-a, --append | 追加用户到一个附加组 |
-L, --lock | 锁定用户 |
-U, --unlock | 解锁用户 |
案例
1、-a -G
2、锁定用户
usermod -L user1
3、解锁账户
usermod -U user1
5、chpasswd命令
语法
chpasswd [选项]
案例
批量修改用户密码
(1)创建用户密码的文本文件
vim chpasswd.txt
user1:123.com
user2:1234.com
user3:12345.com
(2)修改密码
cat chpasswd.txt | chpasswd
6、chage命令
语法
chage [选项] 用户名
选项
选项 | 作用 |
---|---|
-l, --list | 显示账户年龄信息 |
-m, --mindays | 修改密码的最短使用期限 |
-M, --maxdays | 修改密码的最长使用期限 |
-W, --warndays | 修改密码过期的提示时间 |
案例
1、查看用户的密码信息
2、修改密码最短使用期限