目录
①用户与组管理之重要文件
/etc/passwd
/etc/shadow
/etc/login.defs
/etc/skel >>> 目录
/etc/default/useradd
/etc/group
/etc/gshadow
②用户与组管理之增删改
1.添加用户:useradd
2.删除用户:userdel
3.添加组:groupadd
4.删除组:groupdel
5.修改用户所属组:usermod
6.修改用户属性:chage
③如何增强账号的安全体系
④用户与组管理之用户切换 su命令和sudo命令
>>>用于存放用户基本属性信息,包括:用户名,uid,gid,用户的家目录,用户的shell类型
>>>当该文件丢失或损坏,会导致Linux登录失败
[root@localhost ~]# useradd test :新建一个用户test
[root@localhost ~]# cat /etc/passwd :通过cat可以读取到所有的用户数据
test:x:505:505::/home/test:/bin/bash :以用户test为例
每一列代表的含义如下:
第一列 |
第二列 |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
test |
x |
505 |
505 |
|
/home/test |
/bin/bash |
account |
password |
UID |
GID |
GECOS |
directory |
shell |
用户名 |
加密后的密码 |
用户UID |
用户GID |
注释说明字段 |
用户家目录 |
用户登录后使用的shell类型 |
|
|
参考/etc |
/login.defs |
|
参考/etc/default |
/useradd |
>>>注意:用户登陆后使用的shell类型(第七列)若该字段为空,则默认使用的是/bin/sh,
若设置为/sbin/nologin或一个不存在的文件,则用户无法通过login程序登陆。
[root@localhost ~]# su test :将用户登陆后使用的shell类型设置为/sbin/nologin后无法登陆
This account is currently not available.
>>>该文件为/etc/passwd文件的密码加密文件(记录用户有效期信息)
[root@localhost ~]# cat /etc/shadow|grep "test"
test:!!:17725:0:99999:7:::
每一列代表的含义如下:
第一列 |
第二列 |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
第八列 |
第九列 |
test |
!! |
17725 |
0 |
99999 |
7 |
|
|
|
用户名 |
加密口令 |
最后修改时间 |
最小时间间隔 |
最大时间间隔 |
警告时间 |
不活动时间 |
失效时间 |
标志 |
字段 |
英文名称 |
描述 |
用户名 |
login name |
与/etc/passwd文件中的第一列对应 |
加密口令 |
encrypted password |
用户密码对应的密文(若用户未设置密码,这一列为“!!”) 设置完密码后: [root@localhost ~]# cat /etc/shadow|grep "test" test:$1$Dentf2vN$HIXpfurXIoKbD8eB6GHpu0:17725:0:99999:7::: |
最后修改时间 |
date of last password change |
从1970-01-01,以天为单位,到上次修改密码日期的天数 |
最小时间间隔 |
minimum password age |
要过多少天才可以修改密码,默认是0,即不受限制 生产环境中该位置建议设置为:0 |
最大时间间隔 |
maximum password age |
在多少天之内必须修改密码,如设置为30,表示30天内就必须修改密码,默认不受限制 生产环境中该位置建议设置为:30 |
警告时间 |
password warning period |
密码到期前的警告期限,如设置为7,表示当密码还有7天到期时,系统会推送警告,默认是7 生产环境中该位置建议设置为:7 |
不活动时间 |
password inactivity period |
表示账号密码过期后,多少天后会被锁定 如果设置为-1,表示密码过期后,账号不会被锁定 如果设置为0,表示密码过期后,账号立即被锁定(建议生产环境) 如果设置为N(大于0),表示密码过期后,账号N天之后被锁定 |
失效时间 |
account expiration date |
达到这个日期,账号将被锁定 |
标志 |
reserved field |
保留字段,无任何含义 |
>>>用来对用户创建的初始化和进行安全性设置
[root@localhost ~]# cat -n /etc/login.defs :查阅/etc/login.defs
15 MAIL_DIR /var/spool/mail
当添加用户时,有效期会参考/etc/login.defs的配置,作为默认值
但真正存放有效期数据的文件是/etc/shadow,需要修改某用户有效期的时候,应该去修改这个文件
18 # Password aging controls:
19 #
20 # PASS_MAX_DAYS Maximum number of days a password may be used.
21 # PASS_MIN_DAYS Minimum number of days allowed between password changes.
22 # PASS_MIN_LEN Minimum acceptable password length.
23 # PASS_WARN_AGE Number of days warning given before a password expires.
24 #
25 PASS_MAX_DAYS 99999:创建新用户,最大时间间隔默认设置为99999,即无限制
26 PASS_MIN_DAYS 0 :创建新用户,最小时间间隔默认设置为0,即无限制
27 PASS_MIN_LEN 5 :创建新用户,密码默认设置最小长度为5
28 PASS_WARN_AGE 7 :创建新用户,警告时间默认设置为7,即密码还有7天到期时,就推送告警
31 # Min/max values for automatic uid selection in useradd
32 #
33 UID_MIN 500
34 UID_MAX 60000
37 # Min/max values for automatic gid selection in groupadd
38 #
39 GID_MIN 500
40 GID_MAX 60000
50 # If useradd should create home directories for users by default
51 # On RH systems, we do. This option is overridden with the -m flag on
52 # useradd command line.
53 #
54 CREATE_HOME yes:也可以在useradd命令加-m参数指定家目录位置
60 # This enables userdel to remove user groups if no members exist.
61 #
62 USERGROUPS_ENAB yes :yes表示删除用户,若用户基本组为空,会删除其基本组
64 # Use SHA512 to encrypt password.
65 ENCRYPT_METHOD MD5
66
67 MD5_CRYPT_ENAB yes
>>>当新添加一个用户,系统会将/etc/skel目录下的所有文件拷贝到新用户的家目录中
>>>/etc/skel 一般包含以下文件:
[root@localhost ~]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla (.开头表示隐藏文件)
都会保持不变,即不会被删除
参考/etc/default/useradd目录下SKEL参数 默认SKEL=/etc/skel
>>>用于设置添加用户的默认规则
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 :当useradd没有-g指定所属用户组,/etc/login.defs中的USERGROUPS_ENAB为no
新建用户的GID为100,即该用户所在的的组为users
HOME=/home :新建用户的主目录的上一级目录
INACTIVE=-1 :创建用户时,用户的不活动时间会参考这个值,
但是真正存储的位置是在shadow文件
EXPIRE= :YYYY-MM-DD指定到期时间
SHELL=/bin/bash :创建用户时,用户的shell类型由这个变量指定
SKEL=/etc/skel :创建用户时,由这个变量去指定主目录去拷贝哪个目录下文件
CREATE_MAIL_SPOOL=yes :创建目录来存储用户的邮件信息,建议关掉,占用inode
该文件每一列字段含义
组名 |
组密码 |
组id |
组成员 |
group_name |
password |
GID |
user_list |
理解:基本组和附加组
>>>默认情况下,创建一个新用户,就会创建一个与新用户同名的组,并将创建的新用户划入到组内,这个同名组叫基本组
也可以在useradd用命令时,使用-g选项指定新用户的基本组
>>>将用户划入到其他组时,用户新入的组,从该用户角度来说叫做附加组
也可以在useradd用命令时,使用-G选项指定新用户的附加组
例:有一个组mygrp,该组内有两个成员gentoo和centos
gentoo:x:1001: #gentoo组是gentoo这个用户的基本组
mygrp:x:1003:gentoo,centos #mygrp组是gentoo和centos用户的附加组
该文件每一列字段含义
组名 |
加密密文(若无设置,则为!) |
组管理员(可修改密码或组内用户) |
组成员 |
group name |
encrypted password |
administrators |
members |
(1)添加用户:useradd
(2)删除用户:userdel
(3)添加组:groupadd
(4)删除组:groupdel
(5)修改用户所属组:usermod
(6)修改用户属性:chage
重要参数 |
描述 |
-b (不常用) |
指定创建的用户的家目录的上一级目录(这个目录必须存在) mkdir /home/userdir useradd -b /home/userdir username |
-d (不常用) |
指定创建的用户的家目录 useradd -d /home/userdir username |
-g |
指定创建的用户的组名或组ID(组必须存在) 若没有-g参数,useradd命令回去读取/etc/login.defs中的USERGROUP_ENAB变量 若变量为no,useradd会将用户的基本组设置为/etc/default/useradd中GROUP变量指定的组 |
-G |
指定用户加入的附加组,可以用逗号隔开加入多个附加组 |
-e |
指定用户到期时间(默认参考/etc/default/useradd中expire变量的值) |
-f |
指定到期时间(默认参考/etc/default/useradd中INACTIVE变量的值) |
-s |
指定用户shell类型(默认参考/etc/default/useradd中shell变量的值) |
-u |
指定用户的UID |
-p |
设置用户的明文密码,能在/etc/shadow看到对应明文密码(不建议) |
>>>当使用useradd命令创建新用户时,不使用任何选项,/etc/shadow中的内容是根据什么产生的:
字段 |
产生参考内容 |
用户名 |
useradd 输入的名字 |
加密口令 |
默认为!!,通过passwd命令来修改成为加密密文 |
最后修改时间 |
创建用户时的时间 |
最小时间间隔 |
参考/etc/login.defs的有效期参数 |
最大时间间隔 |
参考/etc/login.defs的有效期参数 |
警告时间 |
参考/etc/login.defs的有效期参数 |
不活动时间 |
参考/etc/default/useradd的expire参数 |
失效时间 |
参考/etc/default/useradd的inactive参数 |
标志 |
无 |
>>>默认不删除用户的家目录,可以使用-r选项,删除用户同时删除用户的家目录
>>>group -g GID groupname:通过-g参数指定组的组ID
>>>删除组,组不能有其他用户,否则无法删除
>>>将用户划入到某个组
>>>修改用户的有效期属性
设置账号的密码长度限制:
>>>在/etc/login.defs中设置PASS_MIN_LEN变量的值,限制密码长度至少为10位
设置密码的有效值与密码到期提醒
>>>在/etc/login.defs中设置PASS_MAX_DAYS变量为30,表示密码30天后到期
>>>在/etc/login.defs中设置PASS_WARN_AGE变量为7,表示当密码还有7天到期时,就推送系统告警
>>>但/etc/login.defs文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件
设置密码到期后账号锁定
>>>在/etc/default/useradd中设置INACTIVE=0,表示密码到期后,立即将对应的账号锁定
>>>但/etc/default/useradd文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件
设置账号的到期时间(一般不建议使用)
>>>在/etc/default/useradd中设置EXPIRE=YYYY-MM-DD,如EXPIRE=2018-07-08,表示账号到7月8日到期
>>>但/etc/default/useradd文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件
>>>切换用户 :su username 切换后的工作目录不变,还是上一个用户的工作目录
>>>切换用户时,需要以登录式的方式去登录用户,去加载用户的环境变量,输入命令:su - username
>>>生产需求:让特定的用户使用只有超级管理员才有权限使用的命令
>>>sudo即为借用身份运行命令,使用户执行命令时,是以超级管理员的权限运行该命令的进程
>>>sudo根据/etc/sudoers的安全策略来获得权限,这个文件是由超级管理员配置的
>>>凭据缓存时间:当身份验证成功后,五分钟内(身份验证超时时间)不需要再次验证身份,五分钟后需要再次进行身份验证
通过配置/etc/sudoers,实现sudo命令的权限配置
#用户别名定义
User_Alias L1_AS = bei
#命令别名定义
Cmnd_Alias L1_AS_CMD = ALL
#命令策略定义
L1_AS ALL = (ALL) L1_AS_CMD
说明:
>>>以上内容是本人学习的总结
>>>如还有错误,请留言,指正
>>>亦可分享自己的想法,互相学习