用户类型
超级用户
用户名未root或者USER ID(UID)为0的账号,具有一切权限,可以操作系统中的所有资源。root可以进行基础的文件操作及特殊的系统管理,还可以进行网络管理,可以修改系统中的所有文件。
日常中应该避免使用此类账号,错误的操作可能带来不可估量的损失,只有必要时才能用root登录操作
系统用户
正常运行系统中使用的账户。每个进程运行再系统里都有一个相应的属主,eg:某个进程以何种身份运行,这些身份就是系统里对应的用户账户。
ps:系统账户时不能用来登录的,eg:bin,daemon,mail
普通用户
普通使用者能使用Linux的大部分资源,一些特定的权限受到控制。用户只对自己的目录有写权限,读写权限受一定的限制,从而有效保证了Linux的系统安全,大部分用户属于此类。
linux用户
- 管理用户: root 0
- 普通用户:1-65535
- 系统用户:1-499/1-999
- 登录用户:500+/1000+
linux组
- 管理组:root 0 (UID)
- 普通组:
- 系统组:1-499/1-999- 用户组:500+/1000+
- 组类系:
- 基本组:主组,通常情况下,和用户名同名,如果仅包含一个用户,还称之为私有组 - 附加组:额外组,一个用户可以属于多个组用户管理机制
用户和组相关的配置文件:
/etc/passwd:用户及属性信息(用户名称、用户id、基本组id等等)
/etc/group/:组及属性信息
/etc/shadow/:用户密码及属性信息
/etc/gshadow/:组密码及属性信息1.用户账号文件/etc/passwd
每一行对应一个用户的信息,每行的字段之间使用“:”分隔,共7个字段[root@tenor ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
(1)用户名称:在linux中使用唯一的字符串区分不同的用户,用户名可以使用字母、数字和下划线组成。用户名称:用户密码:USER ID : GROUP ID:相关注释:主目录:使用的shell
ps:在linux中对字母大小写是敏感的,lhuan和LHUAN属于不同的用户
(2)用户密码:在用户登陆时校验用户的合法性。
超级用户root可以更改系统中所有用户的密码
普通用户登录后使用passwd修改自己的密码
在/etc/passwd中该字段一般为x,这是因为处于安全考虑该字段加密后的密码数据已经移动到/etc/shadow中
ps:/etc/shadow文件是不能被普通用户读取的,只有超级用户root才能读取
(3)用户标识(UERT ID ,UID)是一个数值,用于唯一标识Linux系统中的用户来区别不同的用户。
在Linux系统中最多可以使用65535个用户名,用户名和UID都可以用于标识用户。
相同UID的用户可以认为是同一个用户,同时它们具有相同的权限。
(4)组标识(GROUP ID GID)当前用户所属的默认用户组标识
当添加用户的时候,系统默认会建立一个和用户名一样的用户组,多个用户可以属于相同的用户组。
用户的组标识号存在/etc/passwd文件中
用户可以同时属于多个组,每个组也可以有多个用户,除了在/etc/passwd文件中指定其归属的基本组之外,/etc/group文件中也指明一个组所包含的用户
(5)相关注释:用于存放用户的一些其他信息,eg:用户含义说明、用户地址等信息
(6)主目录:定义用户主目录,登录后shell将该目录作为用户的工作目录。
登录系统后可以使用pwd命令查看。超级用户root的工作目录为/root。
每个用户都有自己的主目录,默认会在/home下建立与用户名一致的目录,同时建立用户时可以指定其他目录作为用户的子目录
(7)使用的shell:shell是当用户登陆系统时运行的程序名称,通常是/bin/bash。
用户可以自己指定shell,eg:tsh**2.用户密码文件/etc/shadow
这个文件只有超级用户才能读取,普通用户没有权限读取。
通过把加密后的密码移动到shadow文件中并限制只有超级用户root才能读取,可以保证Linux用户密码的安全性
shadow文件由9个字段组成。[root@tenor ~]# cat /etc/shadow root:$1$zKGqAeSJ$3xxOaVEdF8XzpRDbbgzdk/:18297:0:99999:7::: bin:*:17632:0:99999:7::: daemon:*:17632:0:99999:7::: adm:*:17632:0:99999:7::: lp:*:17632:0:99999:7::: sync:*:17632:0:99999:7::: shutdown:*:17632:0:99999:7:::
(1)用户名用户名:密码:上次修改密码的时间:两次修改密码间隔的最少天数:两次修改密码间隔的最多天数:提前多少天 警告用户密码过期:在密码过期多少天后禁用此用户:用户过期时间:保留字段
与/etc/passwdd中相同,每一行是一一对应的,这样就把passwd和shadow中的用户记录联系在一起
(2)密码
这个字段是经过加密的,如果有些用户的开头是“!”,就表示这个用户已经被禁用,不能再登录系统
(3)上次修改密码的时间
表示从1970年1月1号起到最近一次修改密码的时间间隔,以天数为单位
(4)两次修改密码间隔的最少天数
如果该字段为0,表示此功能被禁用
如果该字段是不为0的整数,表示用户必须经过多少天需要修改密码
(5)两次修改密码间隔的最多天数
主要是管理用户密码的有效期,增强系统的安全性
如果为99999,表示密码基本不需要修改
(6)提前多少天警告用户密码过期
在快超出有效期的时候,当用户登录系统之后,程序会提醒用户密码将要作废,以便及时修改
(7)在密码过期多少天后禁用此用户
表示用户密码作废后多少天系统会禁用此用户
(8)用户过期时间
指明用户作废的天数,从1970年1月1日开始的天数,如果这个字段为空,就表示该账号永久可用
(9)保留字段
目前为空,将来有用3. 用户组文件/etc/group/**
用户保存用户组的所有信息
用户组与用户之间属于多对多的关系,一个用户可以属于多个用户组,一个用户组也可以包含多个用户。
用户登录是默认的组存放在/etc/passwd中
文件由4个字段组成[root@tenor ~]# cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4:
(1)用户组名用户组名:用户组密码:用户组标识号:组内用户列表
可以由字母、数字、下划线组成,用户组名是唯一的,和用户名一样。
(2)用户组密码
存放的是用户组加密后的密码字。
一般而言,linux系统的用户组都没有密码,即这个字段为空
(3)用户组标识号
GROUP ID ,GID和用户标识UID类似,也是一个整数,用户唯一标识一个用户组
(4)组内用户列表
属于这个组的所有用户的列表,不同用户之间用逗号分割,不能有空格。这个用户组可能是用户的主组,也可能是附加组4.组密码文件/etc/gshadow/
[root@localhost ~]# cat /etc/gshadow root::: 组名:组密码:密码禁用时间:过期时间用户管理命令
useradd 添加用户
| 参数 | 说明 | | —- | —- | | -d | 指定用户登录时的起始目录。如果不指定,使用系统默认值,一般为/home | | -g | 指定用户所属的群组,可以跟多个组 | | -G | 指定用户所属的附加群组,可以定义用户属于多个群组,每个群组使用“,”分割,不允许有空格 | | -m | 自动建立用户的主目录,如果目录不存在则自动建立 | | -s | 指定用户登录后使用的shell。默认是/bin/shel
[root@tenor ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin #系统用户,不允许登录
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh | | -u | 指定用户UID,UID不可以重复,但使用-o参数时多个用户可以使用相同的UID,手动建立用户时系统默认使用1000以上的数字作为用户标识 | | -r | 指定为系统用户 | | -c | 指定用户注释信息 | | -p | 指定用户密码 | | -e —expiredate EXPIRE_DATE | 用户有效天数,也就是设置过期日期 | | -f —inactive INACTIVE | 缓冲天数,非活动天数 |
创建用户的默认配置
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
usermod 更改用户
| 参数 | 说明 |
|---|---|
| -d | 修改用户登录时的主目录,使用此参数对应的用户目录是不会自动建立的,需要手动建立 |
| -e | 修改账号的有效期限 |
| -f | 修改在密码过期后多少天即关闭该账号 |
| -g | 修改用户所属的群组 |
| -G | 修改用户所属的附加组 将用户添加到附加组中 [root@tenor ~]# usermod ccy -a -G root [root@tenor ~]# id ccy -G 1002 0 [root@tenor ~]# id ccy -g 1002 |
| -l | 修改用户账号名称 |
| -L | 锁定用户密码,使密码无效 |
| -s | 修改用户登录后使用的shell |
| -u | 修改用户ID |
| -U | 解除密码锁定 解锁用户 [root@tenor ~]# usermod -L ccy [root@tenor ~]# usermod -U ccy usermod: unlocking the user’s password would result in a passwordless account. You should set a password with usermod -p to unlock this user’s password. 如果解锁的用户没有密码,需要先使用usermod -p+密码 来设置密码,之后再解锁用户 [root@tenor ~]# usermod -p 13456 ccy [root@tenor ~]# usermod -U ccy |
userdel 删除用户
| 参数 | 说明 |
|---|---|
| -r | 删除用户主目录以及目录下的所有文件,并删除用户的其他信息,eg:设置的crontab定时服务等 |
eg:创建系统用户lj密码为zhangsan家目录为/home/eagles/zhangsan,注释信息'his '
附加组为root,shell为/sbin/nologin ,最后删除该用户及其家目录
[root@tenor ~]# useradd -p zhangsan -d /home/eagles -c his -s /sbin/nologin -G root lj
[root@tenor ~]# userdel lj -r
passwd 更改或设置用户密码
超级用户root可以修改任何用户的密码,普通用户只能修改自己的密码
| -n mindays | 指定最短使用期限 |
|---|---|
| -x maxdays | 指定最大使用期限 |
| -w warndays | 提前多少前开始报警 |
| -i Inactivedays | 非活动期限 |
| -g | 修改组密码, gpasswd的等效命令 |
| —stdin | 从标准输出中接送用户密码 [root@tenor ~]# echo “1111111” | passwd —stdin zhangsan zhangsan:$1$UADt1OI9$jOtDpueVyCFJZFKXhMSPz/:18299:0:99999:7::: |
| -S/—status | 查看某个用户密码的状态 [root@tenor ~]# passwd ccy -S ccy PS 2020-02-07 12 58 58 -1 (Alternate authentication scheme in use.) 第一列:返回值mino为用户名 第二列:LK 用户被锁住或者用户没有密码 PS用户有密码且没有被锁住 第三列:该用户密码的最后修改时间 第四列:最小时间,密码最小的生存期(天) 第五列:最大时间,密码最大的生存期(天) 第六列:警告时间,在密码失效前多少天用户开始收到警告提示 第七列:失效时间,密码的失效时间(-1表示没有失效时间) |
eg:创建用户lisi,修改密码为passwd,指定最短试用期限3,最大使用期限7,提前2
[root@tenor ~]# useradd lisi
[root@tenor ~]# passwd lisi
Changing password for user lisi.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@tenor ~]# passwd lisi -n 3 -x 1 -w 2
Adjusting aging data for user lisi.
passwd: Success
用户组管理命令
用户组就是具有相同特征的用户集合。
每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理,可以把相同属性的用户定义到同一个用户组中,并赋予该用户组一定的操作权限,这样用户组下的用户对该文件或目录就具备了相同的权限。
一个用户可以属于多个组,/etc/passwd中定义用户组为基本组,用户所属的组有基本组和附加组。如果一个用户属于多个组,该用户拥有的权限是它所在组的权限之和。
groupadd 添加用户组
| 参数 | 说明 |
|---|---|
| -g | 强制把某个ID分配给已经存在的用户组,该ID必须是非负且唯一的 |
| -o | 允许多个不同的用户组使用相同的用户组ID |
| -p | 指定用户组密码 |
| -r | 创建一个系统组 |
| groups + [username] | 查看用户属于哪个组 [root@tenor ~]# groups ccy ccy : ccy root |
groupmod 修改用户组
| 参数 | 说明 |
|---|---|
| -g | 修改GID |
| -o | 允许多个不同的用户组使用相同的用户组ID |
| -n | 修改组名称 |
| -R, —root CHROOT_DIR | directory to chroot into chroot目录 |
| -P, —prefix PREFIX_DIR | prefix directory where are located the /etc/ files /etc/文件所在的前缀目录 |
groupdel 删除用户组
如果该群组中仍包括某些用户,则必须先删除这些用户后才能删除群组。
当有用户存在的时候,该用户组是不可以被删除的,删除属于该组的用户之后,用户组就可以被删除了。
gpasswd 修改组密码
[root@tenor ~]# gpasswd -h
Usage: gpasswd [option] GROUP
| -a | 添加用户到组中 |
|---|---|
| -d | 移除组中用户 |
| -h | —help |
| -Q | 更改组的chroot目录 |
| -r | 删除组密码 |
| -R | restrict access to GROUP to its members 将对组的访问限制为其成员 |
| -M | 为组批量添加用户,设置组列表 |
| -A | 设置组管理员 |
id 查看用户所在的用户组
| -g | 输出gid(主组) |
|---|---|
| -G | 输出gids(主组+附加组) |
| -u | 输出uid |
| -n | 输出name代替id [root@tenor ~]# id ccy -n -u ccy [root@tenor ~]# id ccy -n -G ccy root mxh [root@tenor ~]# id ccy -n -g ccy |
| -Z | 只输入当前用户的安全上下文 d:—context(-Z)只在启用SELinux的内核上工作 |
| -r | 输出真实ID号 [root@tenor ~]# id ccy -r -u 1002 |
su 切换用户
| su [username] | 切换用户,但不读取用户配置信息 |
|---|---|
| su - [username] | 切换用户,读取用户配置信息(完全切换) |
| su - [uername] -c “command” | 切换用户执行命令 [ccy@tenor ~]$ su -c root -c “cat /etc/shadow” Password: root:$1$HNfgpDBu$iMq3JCQof5Jjoq4yoyhBU0:18300:0:99999:7::: ccy:19980117:18300:0:99999:7::: [ccy@tenor ~]$ 只是切换用户执行了一条命令,用户并没有切换 |
[root@localhost ~]# su lh
[lh@localhost root]$ su root
Password:
#之后就切换为root
sudo
系统管理者的身份执行指令
| 命令 | 说明 |
|---|---|
| sudo command | 切换为root用户去执行命令 |
| sudo -L | 显示sudo设置 |
| sudo -l | 列出目前的权限 |
| sudo !! | 以 root用户执行上一条命令 |
| sudo -u uggc vi ~www/index.html | 以 uggc 用户身份编辑 home 目录下www目录中的 index.html 文件 |
[sudo] password for ccy:
ccy is not in the sudoers file. This incident will be reported. 解决??

1.切换到root用户
2.添加sudo文件的写权限 chmod u+w /etc/sudoers
3.编辑/etc/sudoers
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
4. 撤销文件的写权限 chmod u-w /etc/sudoers
[root@localhost ~]# su ccy
[ccy@localhost root]$ sudo ls /root
[sudo] password for ccy:
Sorry, try again.
[sudo] password for ccy:
anaconda-ks.cfg
