1.用户组和权限管理
用户分为三类:
1.1 超级用户:root uid=0,简单来说uid为0的用户就是超级用户。
1.2 虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。
uid=1-499,1-999(centos7)
1.3 普通用户:管理员root创建的用户。uid=500+,1000+(centos7)
用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。
用户及用户组配置文件介绍
/etc/passwd 用户及其属性信息
image.png
第一列(以冒号为分隔符):用户名
第二列:密码位
第三列:UID号 CentOS6 1-499为系统用户,预留
CentOS7 1-999为系统用户,预留
第四列:GID号 主组和辅助组
第五列:用户全名或注释
第六列:用户的家目录
第七列:用户默认的shell类型
/etc/group 组及其属性信息
image.png
第一列:用户名
第二列:密码位 ‘’ 加密方式salt$password
‘!!’代表账户被锁定
第三列:更改密码时间(天数计算)---距离1970年1月1号时间
第四列:密码最短口令有效期
第五列:口令过期时间,更改口令往后的时间
第六列:口令到期前提前多少天提醒
第七列:口令过期后多少天账户过期
第八列:帐号的有效期
/etc/gshadow 组密码及其相关属性
image.png
第一列:组名
第二列:组密码
第三列:管理员列表,可以更改组密码和成员
第四列:将该组作为辅助组的成员列表
2.用户和组管理命令
用户管理命令
2.1 useradd
-u uid 创建用户时指定uid
-g gid 指明用户所属基本组
-c 用户的注释信息
-M 不建家目录
-s 指定用户的默认shell
-e 用户过期时间
-G 为用户指明附加组,组须事先存在
案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"。
[root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c "hello"
[root@centos7 ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
2.2 usermod
-u UID: 新UID
-g GID: 新主组
-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s 新的默认SHELL
-c 新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加!
-U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁
案例:修改gentpp的默认shell和描述信息
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
[root@centos7 ~]#usermod -s /bin/sh gentpp
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh
2.3 userdel
-r 删除用户时,连同其家目录一同删除
2.4 passwd命令
passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”。
普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然root管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。
passwd命令中的参数以及作用
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
假设您有位同事正在度假,而且假期很长,那么可以使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦:
[root@linuxprobe ~]# passwd -l linuxprobe
Locking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe LK 2017-12-26 0 99999 7 -1 (Password locked.)
[root@linuxprobe ~]# passwd -u linuxprobe
Unlocking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1 (Password set, SHA512 crypt.)
3. 组帐号管理命令
3.1 创建用户组
用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户
创建用户组使用groupadd命令,其命令用法为:
groupadd [-r] 用户组名称
若命令带有-r参数,则创建系统用户组,该类用户组的GID值小于500;若没有-r参数,则创建普通用户组,其GID值大于或等于500.
image.png
3.2 修改用户组属性
用户组创建后,根据需要可对用户组的相关属性进行修改。对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。
(1)改变用户组的名称
若要对用户组进行重命名,可使用带-n参数的groupmod命令来实现,其用法为:
groupmod -n 新用户组名 原用户组名
对于用户组改名,不会改变其GID的值
比如,若要将student用户组更名为teacher用户组,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
student:x:501:
lijie:x:502:
vodup:x:503:
[root@localhost ~]# groupmod -n teacher student
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:
(2)重设用户组的GID
用户组的GID值可以重新进行设置修改,但不能与已有用户组的GID值重复。对GID进行修改,不会改变用户名的名称。
要修改用户组的GID,可使用带-g参数的groupmod命令,其用法为:
groupmod -g new_GID 用户组名称
例如,若要将teacher组的GID更改为504,则操作命令为:
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:501:
[root@localhost ~]# groupmod -g 504 teacher
[root@localhost ~]# tail -3 /etc/group
lijie:x:502:
vodup:x:503:
teacher:x:504:
3.3 删除用户组
删除用户组使用groupdel命令来实现,其用法为:
groupdel 用户组名
在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。
[root@localhost ~]# groupdel teacher
groupdel: cannot remove the primary group of user 'zhangjie'
[root@localhost ~]# userdel -r zhangjie
[root@localhost ~]# groupdel teacher
[root@localhost ~]# grep teacher /etc/group #没有输出,说明teacher用户组已不存在,删除成功
3.4添加用户到指定的组/从指定的组中移除用户gpasswd:
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
image.png
Adding user ma to group zhu #将用户qb2添加到组qian2中
Removing user ma from group zhu #将用户qb2从组qian2中删除
3.5. groupmems[options] [action]
options:
-g 更改为指定组
actions:
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表
案例:
[root@centos7 ~]#groupmems -g admins -a ma
[root@centos7 ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中
[root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表
ma zhu
[root@centos7 ~]#groupmems -g admins -d ma #将ma从admins中删除
[root@centos7 ~]#groupmems -g admins -l
zhu
[root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员
[root@centos7 ~]#groupmems -g admins -l
3.5 groups 查看用户所属组列表
[root@centos7 ~]#groups ma
ma : ma
root@centos7 ~]#groups zhu
zhu : zhu
4. 修改文件属主和属组
chown 修改文件的属主(也可以改组)
用户 文件或者目录 <==仅仅授权用户
:组 文件活目录 <==仅仅授权组
用户:组 文件或目录 <==表示授权用户和组
-R 递归
--reference=源文件 目标文件
强调:
1)其中的冒号“:”可以用点好“.”代替
2)要授权的用户和组名,必须是linux系统里实际存在的
案例:
[root@centos7 app]#ll
-rw-r--r--. 1 root root 0 Jul 29 16:27 f1
-rw-r--r--. 1 root root 0 Jul 29 16:27 f2
[root@centos7 app]#chown ma:ma f1
[root@centos7 app]#chown :zhu f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 root zhu 0 Jul 29 16:27 f2
[root@centos7 app]#chown --reference=/app/f1 f2 #将f1的用户和属组信息复制给f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2
chgrp 修改文件的属组(只能改组)
----reference=源文件 目标文件
-R 递归
案例:
[root@centos7 app]#chgrp ma f1 <==将f1的属组直接修改成ma
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2
-rw-r--r--. 1 root root 0 Jul 29 16:37 f3
[root@centos7 app]#chgrp --reference=/app/f3 f1
[root@centos7 app]#chgrp --reference=/app/f3 f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma root 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma root 0 Jul 29 16:27 f2
-rw-r--r--. 1 root root 0 Jul 29 16:37 f3