管理用户和组
一:了解用户和用户组的
1:用户的作用
一个用户登录了linux,就会有相对应的文件,属于这个用户的资源,文件和目录以及进程都属于这个用户,要使用linux就必须使用账号来登录,使用这些资源,每个用户都有不同的权限,在这个权限内完成相对应的任务
2:用户的分类
超级用户(root)
uid为0,也称为管理用户,拥有对整个linux的管理权限,对系统有绝对的控制权,能对系统做一切操作
系统用户
uid1~999,也称为虚拟用户,无法用来登录系统,也不能删除,因为一但删除,有些用户运行的服务,就不能正确的运行,会导致系统的问题
普通用户
每个用户都有对应的用户编号(uid),用来唯一标识一个用户,uid1000~60000
3:用户组的分类
每个用户至少隶属于一个用户组,可以对用户组中的用户进行集中管理,进行权限的划分,提升了效率
每个用户都有对应的组编号(gid),用来唯一标识一个用户组,用户组有2种,主要组(初始组)和附加组
主要组(初始组)
每个用户的主要组只有一个,一般在创建用户的时候,都会创建一个主要组最为这个用户的主要组(名字相同)
附加组
用户除了加入主要组外,还可以加入多个附加组
二:理解用户账号文件:/etc/passwd与/etc/shadow
Linux系统会把全部用户信息保存为普通文本文件,/etc/passwd和/etc/shadow,系统上大多数用户可以读取/etc/passwd,但是只有root用户可以修改该文件,而/etc/shadow,除了超级用户外其余的都不能读取
1:/etc/passwd
是系统的用户的配置文件
#查看该文件的信息 [root@localhost /]# vim /etc/passwd q7:x:1000:1000:q7:/home/q7:/bin/bash
每个字段的含义
用户名 | 用户的登录的账号名称 |
加密口令 | 该字段用x替代,真正的密码在/etc/shadow |
uid | 用户的系统编号, |
gid | 用户组的编号,在/etc/group |
用户的描述信息(注释) | 关于用户的描述信息 |
家目录 | 用户登录后的家目录 |
默认登陆的shell | 用户使用的shell,默认为/bin/bash |
2:/etc/shadow
因为/etc/passwd文件所有用户都能读取,有一定的风险,所以将用户的密码信息从中分离出来,经过加密存入/etc/shadow中,又被成为影子文件
#查看文件信息 [root@localhost /]# vim /etc/shadow user1:!!:19650:0:99999:7:::
每个字段的含义以及chage命令的选项
用户名 | 用户登录时的账户名 |
加密口令 | *:非登录用户,!!表示没有设置密码,!表示用户的密码被锁定 |
最后一次修改时间(-d) | 1970年至上次修改密码的天数(yyyy-mm-dd) |
最小修改日期的间隔(m) | 多少天后可以修改密码(dd) |
最大修改日期的间隔(M) | 多少天后必须修改密码(dd) |
密码过期前的警告天数(W) | 密码过期前多少天提醒改密码(dd) |
账户禁用宽限日期(I) | 密码过期多少天后禁用账户(dd) |
账户被禁用日期(E) | 1970年至账号被禁用的天数,有效日期,过了就没了,若值为空,则永久可用(yyyy-mm-dd) |
保留字段 | 用于功能扩展 |
三:理解用户组账号文件
用户组存储信息存储在用户组文件中
1:/etc/group
这个文件是系统用户组的配置文件,存储了系统中所有用户组的基本信息
#查看该文件 [root@localhost /]# vim /etc/group q7:x:1000:q7
每个字段的含义
组名 | 用户组的名字 |
组口令 | 用x来表示,真正的在/etc/gshadow |
GID | 用户组的编号,唯一标识用户组的 |
该用户组的成员列表 | 有多个,用逗号隔开(这个用户的附加组) |
注意:若用户组A是用户a的初始组,则用户a在用户组A的成员列表中不会显示,因为(用户组A显示的是附加组)
2:/etc/gshadow
因为/etc/group文件所有人可以读取,不安全,组的加密口令就分离出来了,存放在/etc/gshadow,该文件只允许root用户读取
#查看该文件 [root@localhost /]# vim /etc/gshadow q7:!!::q7
每个字段的含义
组名 | 用户组的名字 |
组口令 | 加密后的组口令 |
组的管理员 | 用户组的编号 |
该用户组的成语列表 | 有多个,用逗号隔开(这个用户的附加组) |
四:管理用户账号
1:新建用户 useradd命令
创建用户就是在/etc/passwd中增加一条记录
格式如下:
useradd 选项 用户
常见的选项如下:
-u | 指定用户的uid,不能重复,必须大于1000 |
-g | 指定用户所属的初始组或者GID |
-G | 指定用户的附加组或者GID |
-p | 指定用户的加密口令 |
-d | 指定用户的主目录,如果此目录不存在,则系统自动创建主目录 |
-e | 指定用户被禁用日期,yyyy-mm-dd |
-f | 设置账号过期多少天后,账户被禁用 |
-s | 指定用户登录的shell,默认是/bin/bash |
题目:创建一个用户user7,uid为1007,附加组为root,用户的主目录为/home/user7,用户的shell为/sbin/nologin
[root@localhost /]# useradd -u 1007 -G root -d /home/user7 -s /sbin/nologin user7 #一般来说,创建了一个用户,就要立即给他添加一个密码 passwd user7 #查看/etc/passwd文件中新增加一条的记录 [root@localhost /]# vim /etc/passwd user7:x:1007:1007::/home/user7:/sbin/nologin
2:用户切换查看信息(su命令)
使用su - 用户就能实现用户之间的切换了
[root@localhost /]# su - q7 [q7@localhost ~]$ ctrl + d 退出
3:维护用户的信息 id usermod passwd 命令
当新建的用户需要修改某些信息的时候,就需要使用usermod,passwd这些命令
1)id命令
#id 用来显示uid ,初始组和附加组 [root@localhost /]# id root uid=0(root) gid=0(root) 组=0(root) [root@localhost /]#
2)usermod命令
用来修改用户的属性,格式如下
usermod 选项 用户名
常见的选项如下:
-u | 指定用户的uid |
-g | 指定用户的主要组或者Gid |
-G | 指定用户的附加组 |
-s | 指定用户的shell |
-d | 指定用户的家目录,如果没有,就自动创建 |
-e | 指定账户被禁用日期,yyyy-mm-dd |
-L | 锁定用户,无法登录系统 |
-U | 解锁用户,能登陆系统 |
3:passwd命令
用来设置密码或者修改密码的,格式如下
passwd 选项 用户名
常见的选项
-l | 锁定密码,无法登录系统 |
-u | 解锁密码,能登录系统 |
-S | 查看用户密码的状态 |
#设置q7用户的密码被锁定 [root@localhost /]# passwd -l q7 锁定用户 q7 的密码 。 passwd: 操作成功 [root@localhost /]# #查看/etc/shadow中密码有一个!代表用户密码被锁定 q7:!::0:99999:7:::
4:删除用户 userdel命令
删除用户使用userdel命令
格式如下:
userdel -r 用户名
如果不加上-r选项的话,、/home和/var/spool/mail中有该用户的信息,没有彻底的删除干净
一般都带上-r选项
五:管理用户组账户
1:新建用户组 groupadd命令
用于创建一个用户组 格式如下:
groupadd -g 用户组名称
-g 代表着新建用户组的gid
eg:创建一个qq的用户组,gid为2000
[root@localhost /]# groupadd -g 2000 qq
2:维护用户组及其成员:groups,groupmod,gpasswd命令
1)groups命令
用来查询用户所在的主要组和附加组
[root@localhost /]# groups q7 q7 : q7
2)groupmod命令
用于修改用户组的相关信息,格式如下:
groupmod 选项 用户组
-g | 指定修改的gid |
-n(name) | 指定修改用户组的名字 |
eg:修改用户组qq的gid为3000,名字改为test
[root@localhost /]# groupmod -g 3000 -n test qq
3)gpasswd命令
使用useradd创建用户时,会创建一个主要组,这时如果要将用户添加到附加组中去,使用gpasswd命令,可以添加到附加组中去
格式如下:
gpasswd 选项 用户 用户组
-a | 将用户添加到这个组中来 |
-d | 将用户移除这个组 |
-r | 取消组的密码 |
-A | 给组指派管理员 |
eg:将用户q7添加到root组中去
[root@localhost /]# gpasswd -a q7 root 正在将用户“q7”加入到“root”组中 [root@localhost /]#
3:删除用户组 groupdel
格式如下:
groupdel 用户组
如果删除的是主要组,就要现将这个组的用户删除掉,就可以了
#直接移除(不能删除掉) [root@localhost /]# groupdel user7 groupdel:不能移除用户“user7”的主组 [root@localhost /]# #删除该用户 [root@localhost /]# userdel -r user7 [root@localhost /]# groupdel user7 groupdel:“user7”组不存在 [root@localhost /]# vim /etc/group [root@localhost /]#