目录
1、前言
1.1用户
在linux中,可以存在多个用户,每个用户拥有不同的权限用来使用系统中的资源,那么我么把每一个系统的使用者定位为用户,用户可以是人,也可以是系统中的某个进程或程序。
分类
根据用户的权限,以及登录方式可将用户如下分类:
用户类别 | UID范围(centos7) | UID范围(centos6) | |
管理员用户 | root | 0 | 0 |
普通用户 | 系统用户 | 1-999 | 1-499 |
登录用户 | 1000-60000 | 500-60000 |
- UID:User ID用来唯一标识该用户的一串数字
- 管理员用户:root用户,拥有操作系统的最高权限
- 普通用户:除管理员之外的任何用户
- 系统用户:系统中某些特定的用户,可能是某些程序创建的,用来满足该程序对系统资源的调用
- 登录用户:可以用来登录系统执行操作的用户(一般我们默认手动天剑的用户都是登录用户)
系统通过/etc/passwd文件来解析用户名和UID的对应关系,当然/etc/passwd文件不仅有用户名和UID的对应关系,还有许多其他信息,我们稍后介绍。
1.2用户组
用户组是一组用户的集合,用户组的概念是为了方便管理用户而产生的。
分类
用户组类别 | GID范围(centos7) | GID范围(centos6) | |
管理员组 | root | 0 | 0 |
普通用户组 | 系统用户组 | 1-999 | 1-499 |
登录用户组 | 1000-60000 | 500-60000 |
- GID:Group ID用来唯一标识该用户组的一串数字
- 管理员用户组:root用户组
- 普通用户组:除管理员之外的任何用户组
- 系统用户:系统中某些特定的用户组
- 登录用户:该组中的用户可以用来登录系统执行操作的用户组
组的其他概念
- 用户基本组:/etc/passwd文件中用户GID列所对应的组,那么该组为该用户的基本组,也称之为该用户的私有组,一般情况下用户基本组的组名同该用户的用户名
- 用户附加组:/etc/group文件中,除了基本组之外,还有其他组的成员也包含该用户,那么久称这个组为该用户的附加组,也称之为为该用户的公共组
系统通过/etc/group文件来解析该用户组的GID和组名的对应关系。
1.3几个重要的配置文件
/etc/passwd
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
结构:
name:password:UID:GID:注释信息:用户家目录:用户默认shell
说明:
password:可以是加密的字符串,也可以是占位符x
GID:为该用户所属的主组的ID号
/etc/passwd文件中不记录用户的密码信息,用户的密码信息记录在/etc/shadow文件中
/etc/shadow
[root@localhost ~]# cat /etc/shadow
root:$6$P0eW9Qzd.hQtpEi2$7ium.ovTkHEX0T7PtwvWy3934U7Ii2MQviJAruckn6AQLoOJbKj1A3PLu9ECPQjpDJiAiXrAdX5gQ9vRxrGuz1::0:99999:7:::
结构:
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
/etc/group
[root@localhost ~]# cat /etc/group
root:x:0:
结构:
组名:组密码(占位符):GID:以该组为附加组的用户列表
2、用户、用户组管理
2.1用户管理
添加用户:useradd
使用格式:useradd [选项] 用户名
常用选项:
- -u:指定UID,默认不带参数创建时时上一个ID号+1
- -g:指定基本组ID(此组得事先存在)
- -G:指明用户所属的附加组,多个组之间用,隔开,例如-G root,group1,group2
- -c:指明注释信息
- -d:以指定的目录为用户的家目录,默认情况下是通过复制/etc/skel目录并重命名的方式创建用户的家目录,但如果这个地方指定的家目录提前存在,则不会复制该目录(该目录下面有隐藏文件,有默认的环境配置文件)
- -s:指定用户的默认shell,系统中可用的shell列表存储在/etc/shells文件中
- -r:创建系统用户
- -D (后面不带任何参数):查看useradd命令创建用户时的默认默认配置
- -D [选项]:修改创建用户时的默认配置,该修改结果将会保存在/etc/default/useradd文件
注意:创建用户时的所有默认设定的配置文件在/etc/login.defs中
修改用户属性:usermod
使用格式:usermod [选项] 用户名
常用选项:
- -u:修改用户的ID为此处指定的ID
- -g:修改用户所属的基本组
- -G:修改用户的附件组(原来的附加组将会被覆盖掉)
- -a:与-g选项一块用,可以为用户追加附加组而不会覆盖掉原来的附加组信息
- -c:修改注释信息
- -d:修改用户的家目录,用户原有的家目录下的文件不会被转移到新修改的位置
- -m:只能与-d选项一块使用,用于将原来的家目录下的文件转移到行修改的位置
- -l:修改用户名
- -s:修改用户的默认shell
- -L:锁定用户,原来密码位置的字符串前面加!
- -U:解锁用户的密码锁定
删除用户:userdel
使用格式:userdel [选项] 用户名
常用选项:
- -r:删除用户时一并删除用户的家目录
2.2用户组管理
添加用户组:groupadd
使用格式:groupadd [选项] 组名
常用选项:
- -g:指定组的GID,默认不带参数创建时时上一个ID号+1
- -r:创建系统组
修改用户组:groupmod
使用格式:group [选项] 组名
常用选项:
- -g:修改GID
- -n:修改组名
删除组:groupdel
使用格式:group [选项] 组名
3、密码相关命令
3.1 passwd
命令用途:用于给用户添加密码
使用格式:
1)passwd 密码 用于给当前登录用户添加密码
2) passwd 用户名 密码 用于给其他用户添加密码(该用法只能root用户使用)
常用选项:
- -l/-u:锁定/解锁用户
- -d:清除用户的密码
- -e:设定密码使用期限(后面跟时间日期)
- -i:设定非活动期限(后面跟天数)
- -n:设定密码最短使用时间(后面跟天数)
- -x:设定密码最长使用时间(后面跟天数)
- -w:设定警告期限(后面跟天数)
- --stdin:用于从标准输入、管道读入新的用户密码;一般用法 echo "passwd" | passwd --stdin 用户名
3.2 gpasswd
命令用途:用于给用户组添加密码
使用格式:
gpasswd [选项] 组名
常用选项:
- -a USERNAME :向组中添加用户
- -d USERNAME:向组中移除用户
一般这个命令的常用作用可以如上两个选项,将用户加入或者移除附加组,一般情况下不会将组设置密码,将组设置密码有一个特殊的用法,使用newgrp命令可以临时切换用户的主组,这时我们就可以使用gpasswd命令将组设置密码后进行切换。
newgrp [-] 组名 加上-会模拟用户重新登录初始化环境变量
3.3 chage
chage命令可以用于修改密码的使用期限
常用选项:
- -E:设置密码过期时间
- -W:设置密码警告时间
- -m:设置密码最短使用时间
- -M:设置面最长使用时间
- -l:列出密码时间信息
4、其他相关命令
4.1 id
用于显示用户的真实有效ID
用法:id [选项] 用户名
常用选项:
- -u:显示用户的有效UID
- -g:显示用户的基本组ID
- -G:显示用户所属的所有组ID
- -n:显示名字而非id
4.2 su
用户切换用户
su - 用户名:登录式切换,切换用户时会通过读取目标用户的配置文件来初始化
su 用户名:非登录式切换,切换时不会读取用户的默认配置