目录
一、用户和组概述
与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此可见,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往较多关注用户与用户组。在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GID,UID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。
1、用户类型
1)root 用户
root用户是UID和GID都等于0的用户,拥有最大的权限,只有root用户可以为普通用户修改密码
2)系统用户(程序用户)
程序用户没有家目录,也不能用于登录系统,在CentOS6系统中,系统用户的UID是1-499,在CentOS7系统中,系统用户是1-999
3)普通用户
普通用户只能由root用户创建,该用户拥有家目录,该用户的权限由root分配。普通用户
2、用户和用户组关系
在Linux系统中,每个用户必定属于一个主组(基本组),默认情况下属于与其同名的用组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
3、用户和用户组配置文件
Linux系统下用户和用户组相关的配置文件主要有以下几个:
1) /etc/passwd
存储用户信息
#用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
2) /etc/shadow
该配置文件保存了用户的密码信息 。
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
注意: !! 表示该用户没有设置密码。
! 表示用户密码被锁定,该用户无法登录操作系统。
3) /etc/group
该文件保存了用户组的信息 。
#组名:占位符:组ID:非基本组的组成员
4)/etc/gshadow
该文件保存了用户组的密码。
5) /etc/login.defs
该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。
6) /etc/skel 目录
作用: 用户创建时默认文件的模版目录
二、用户管理
1、 useradd 命令
创建一个新用户或更新默认新用户信息
语法:useradd 【选项】用户名
-u 指定用户的UID
-d 指定用户的家目录
-s 指定用户的登录shell
-M 创建用户时不创建家目录
-g 创建用户时指定用户组
-G 创建用户时指定附加组,依然会创建同名组
-e 创建用户时,指定用户的失效时间
2、userdel 命令
删除用户账户和相关文件
语法: userdel 【选项】用户名
-r 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
3、passwd 命令
更改用户的密码。root用户使用时,可以更改所有用户的密码。普通用户使用时,只能更改本身的密码。
语法:passwd 【选项】用户名
-l 锁定用户密码
-S 查看密码的锁定状态
-u 接触用户的锁定状态
-d 将用户密码清空
-e 直接让密码失效,下次登录时必须更改
--stdin 非交互式修改密码
4、usermod 命令
修改一个用户账户的属性。
语法:usermod 【选项】用户名
5、chpasswd 命令
批量更新密码
语法:chpasswd 【选项】
6、chage 命令
更改用户密码过期信息,影响的是现有的用户
语法:chage 【选项】用户名
-l 显示账户年龄信息
-m 修改密码的最短使用期限
-M 修改密码的最长使用期限
-W 修改密码过期的提升时间
三、组管理
1、groupadd 命令
创建新组
语法:groupadd 【选项】组名
-g 指定GID
2、groupdel 命令、
删除组
语法:groupdel 【选项】组名
-f 强制删除, 但不建议
3、groupmod 命令
语法:groupmod 【选项】组名
-g 修改GID
4、gpasswd 命令
向组内添加成员
语法:gpasswd 【选项】组名
-a 添加单个成员
gpasswd -a 用户 组
-M 添加多个成员,覆盖原有成员
四、用户切换与sudo提权
1、su 命令
切换用户,从root用户切换到普通用户不需要密码。普通用户之间切换需要密码。
语法:su 【-】用户名
- 切换目录用户的登录shell
-s 指定shell切换
#su 不会切换目标用户的登录shell
#su - 会切换到目标用户的登录shell
2、sudo命令
sudo 用来进行普通用户提升权限
语法:sudo 【选项】参数
-i 切换到指定用户shell。采用本身的密码提供验证
注意:sudo -i root,切换到root,必须存在于sudoers文件中的普通用户才有权限。
五、用户登录信息查看
1、id 命令
查看用户的基本属性,用户UID,基本组及附加组
语法:id 【用户】
2、w 命令
查看当前系统登录详情
语法:w 【选项】
-h 不显示表头
3、who命令
显示当前登录系统的摘要信息
-b 上次系统启动时间
-u 列出已登录的用户
4、whoami 命令
显示当前登录用户的名称
5、last命令
last命令可以查看登录成功用户列表,last命令实际上从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表。此命令普通用户也可以执行。
语法:last
6、lastb 命令
astb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录用于发现系统登录异常。此命令要求root用户才可以执行,lastb可用参数与last命令参数相同。
7、lastlog 命令
统计当前系统中存在用户的登录情况