第1章 用户管理的基本介绍
Linux system每个文件和进程,都需要对应一个用户和组,
Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×××号,系统只能识别UID。
1.1 用户和组的关系:
一对一,一对多,多对一,多对多。
1.2 Linux system 用户分类:
由/etc/login.defs这个文件里面的内容来控制
超级用户:UID为0,代表root
普通用户:UID范围500-65535,由超级用户或者具有超级用户权限的用户创建的用户
虚拟用户:UID范围1-499,存在满足文件或者服务启动的需要,一般都不能登录。
第2章 用户相关的文件说明
2.1 /etc/skel/
/etc/skel目录是用来存放新用户的环境变量文件的目录,下面好多隐藏文件,当我们使用useradd指令创建新用户的时候,这个目录下的所有文件都会被自动的复制到新用户的家目录下。我们可有通过添加删除修改这个目录下的内容,来为新用户提供统一的标准的初始化用户环境
[root@oldboy_50 skel]# ls -a
. .. .bash_completion .bash_logout .bash_profile .bashrc
[root@oldboy_50 skel]# touch 123.txt
[root@oldboy_50 skel]# useradd 122
[root@oldboy_50 skel]# ls /home/122/
123.txt
2.2 /etc/passwd
[root@oldboy_50 tmp]# cat /etc/passwd| head -n 2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
里面存放的是用户的相关信息分别代表
按照冒号分隔来说:
第一段:用户名称 usermod -l 可以修改
第二段:密码位,但是真实的密码不再这个文件里面,在/etc/shadow里面存放着,而且是密文
第三段:用户的UID useradd -u 指定
第四段:用户的GID useradd -g指定 ,usermod -g 修改
第五段:用户的说明信息,useradd -c添加,
第六段:指定用户登录时的目录 useradd -m 指定,usermod -d 修改
第七段:登录时使用的shell useradd -s 指定,usermod -s 修改
2.3 /etc/shadow
存放的是给用户密码,有效期有关的配置
[root@oldboy_50 tmp]# tail -3 /etc/shadow
zsf:$6$4WcGshTr$RTDci2kvT9ODqJyKjLOZOHlDCHoLvOVqz66muWo5WntqVA3o4ipCao3bLEjWQ82W.CoPQSyUby81EpTT/XqRd1:17728:0:99999:7:::
haha:123123:17727:0:99999:7:::
xixi:123:17728:0:99999:7:::
按照“:”来分隔
第一段:用户名称
第二段:用户的密码。没有就用!表示,通过passwd设置的是密文的,useradd -p指定的密码是明文的
第三段:“密码最后一次修改时间”,在centos里表示从“1970年1月1日”到修改密码的那一天经历的天数
第四段:密码最小修改的间隔,在最下间隔之内不能修改密码
第五段:密码最长多久必须更改一次密码,在这个天数之内必须改次密码
第六段:警告时间,密码过期前多少天提醒
第七段:不活动时间,用户没有登录活动但账号仍能保持有效的最大天数
第八段:失效时间,密码的生存周期,超过这个天数该账号就不能用了。时间也是相对于“1970年1月1日”开始的,通过usermod -e来更改
2.4 /etc/group
存放给用户组相关的
[root@oldboy_50 tmp]# grep "root" /etc/group
root:x:0:
以“:”分隔
第一段:用户组名称
第二段:用户组密码
第三段:用户组GID
第四段:这个群组里面所有的账号
2.5 /etc/gshadow
[root@oldboy_50 tmp]# grep "root" /etc/gshadow
root:::
以冒号分隔:
第一段:用户组名称
2.6 /etc/login.defs
用来定义创建用户时需要的一些用户的配置信息。
PASS_MAX_DAYS 99999 密码的有效期
PASS_MIN_DAYS 0 两次修改密码的最小间隔
PASS_MIN_LEN 5 密码的最小长度
PASS_WARN_AGE 7 密码到期前多少天提醒
创建用户的时候最小UID和最大UID
UID_MIN 500
UID_MAX 60000
创建用户的时候最小GID和最大GID
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes #是否自动创建家目录
UMASK 077 #umask值控制用户家目录的
# This enables userdel to remove user groups if no members exist.
#删除用的时候要删除用户组
USERGROUPS_ENAB yes
2.7 /etc/defaulst/useradd
创建用户默认信息的配置文件
[root@oldboy_50 default]# cat useradd
#useradd defaults file
GROUP=100 #依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制
HOME=/home 用户家目录存在的地方
INACTIVE=-1 是否启用账号过期停权,-1表示不使用
EXPIRE= 账号终止日期
SHELL=/bin/bash 创建用户的时候默认使用的shell
SKEL=/etc/skel 创建用户从哪个目录拷贝初始环境到家目录下
CREATE_MAIL_SPOOL=yes 是否创建maill文件,在/var/mail
useradd 创建用户(修改的是/etc/passwd这个文件)
3.1 命令说明
useradd - create a new user or update default new user information
创建一个新的用户,或者更高这个新用户的默认信息
修改的是/etc/passwd这个文件
3.2 命令格式
useradd [options] user_name
3.3 命令选项
3.3.1.1 -m 创建家目录,默认选项
[root@oldboy_50 ~]# useradd useradd_user
[root@oldboy_50 ~]# ll -d /home/useradd_user/
drwx------ 2 useradd_user useradd_user 4096 Jul 14 18:41 /home/useradd_user/
3.3.1.2 -g 创建用户所属组,如果不指定就创建一个和用户uid,名字一样的用户组
[root@oldboy_50 ~]# id useradd_user
uid=500(useradd_user) gid=500(useradd_user) groups=500(useradd_user)
3.3.1.3 -G 指定用户的附属组
[root@oldboy_50 tmp]# useradd 123 -G zsf 指定附属组是
[root@oldboy_50 tmp]# grep zsf /etc/group
zsf:x:500:123
[root@oldboy_50 tmp]# id 123
uid=502(123) gid=502(123) groups=502(123),500(zsf)
3.3.1.4 -s 指定用户的登录shell,如果不指定默认是/bin/bash
[root@oldboy_50 ~]# grep "useradd_" /etc/passwd
useradd_user:x:500:500::/home/useradd_user:/bin/bash
3.3.1.5 -M 创建时不创建用户家目录
[root@oldboy_50 ~]# useradd test_zsf -M
[root@oldboy_50 ~]# ll -d /home/test_zsf
ls: cannot access /home/test_zsf: No such file or directory
3.3.1.6 -N 创建是不创建用户组
3.3.1.7 -p “密码” 创建时指定用户密码,在/etc/shadow文件里面是明文显示,不安全
[root@oldboy_50 tmp]# useradd zsf -p "123456"
3.3.1.8 -u 指定UID
[root@oldboy_50 tmp]# useradd -u 888 zsf
[root@oldboy_50 tmp]# id zsf
uid=888(zsf) gid=888(zsf) groups=888(zsf)
3.3.1.9 -c “说明信息”,添加用户的说明信息
修改的是/etc/passwd 第五段
[root@oldboy_50 ~]# useradd zsf -c "this is test user"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test user:/home/zsf:/bin/bash
第4章 usermod 更改用户属性
4.1 命令说明
修改用户的基本属性,没办法改变正在使用的账号信息
4.2 命令格式
usermod [options] user_name
4.3 命令选项
4.3.1 -c 修改用户的说明信息
[root@oldboy_50 ~]# usermod zsf -c "this is test usermod_c"
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/home/zsf:/bin/bash
4.3.2 -d 修改用户登录时的目录,一般默认为家目录,作为登录时的目录,首先这个用户要对这个目录具有权限
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:502:this is test usermod_c:/zsf:/bin/bash
4.3.3 -g 修改用户的属组
[root@oldboy_50 ~]# usermod -g fsz zsf
[root@oldboy_50 ~]# grep ^zsf /etc/passwd
zsf:x:502:503:this is test usermod_c:/zsf:/bin/bash
4.3.4 -G 修改用户的附属组
[root@oldboy_50 ~]# usermod -G zsf zsf
[root@oldboy_50 ~]# grep "^zsf" /etc/gshadow
zsf:!::zsf
4.3.5 -s 修改用户登录的shell
[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/bin/bash
[root@oldboy_50 tmp]# usermod test -s /sbin/nologin
[root@oldboy_50 tmp]# grep test /etc/passwd
test:x:501:501::/home/test:/sbin/nologin
4.3.6 -L 锁定用户
4.3.7 -U 解锁用户
4.3.8 -s 修改用的登录的shell
[root@oldboy_50 ~]# usermod zmy -s /sbin/nologin
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/sbin/nologin
4.3.9 -l 修改账号的名称
要更改成的名称放在前面,账户的UID没有变,只是名称变了而已
[root@oldboy_50 ~]# usermod -l zmy zsf
[root@oldboy_50 ~]# grep "502" /etc/passwd
zmy:x:502:503:this is test usermod_c:/zsf:/bin/bash
4.3.10 -e "时间" 指定用户到那一天到期,到期后就不能登录使用了
直接在配置文件里面改也行,但是比较麻烦
[root@oldboy_50 tmp]# usermod -e "2018-01-01" test
[root@oldboy_50 tmp]# grep test /etc/shadow
test:!!:17877:0:99999:7::17532:
第5章 userdel 删除用户
5.1 命令说明
删除指定的用户,以及用户相关的文件。若不加选项只是删除用户的账号,而不删除相关的文件
5.2 命令格式
userdel [options] user_name
5.3 命令选项
5.4 -f 强制删除,和rm的参数选项类似
5.5 -r 删除用户的同时,删除与用户相关的所有文件,删除用户家目录
[root@oldboy_50 tmp]# userdel 123
[root@oldboy_50 tmp]# ll -d /home/123/
drwx------ 2 502 502 4096 Dec 12 01:18 /home/123/
[root@oldboy_50 tmp]# userdel -r test
[root@oldboy_50 tmp]# ll -d /home/test
ls: cannot access /home/test: No such file or directory
第9章 chage 修改账号和密码的有效期
9.1 命令说明
用来修改账号和密码的有效日期,主要修改/etc/shadow
9.2 命令格式
chage [options] userName
9.3 命令选项
9.3.1 后面直接跟用户名,交互式修改
[root@oldboy_50 tmp]# chage zsf
Changing the aging information for zsf
Enter the new value, or press ENTER for the default
-m Minimum Password Age [0]: 7 两次更改密码的间隔
-M Maximum Password Age [99999]: 20 密码多少天之内必须更改
-d Last Password Change (YYYY-MM-DD) [2018-07-16]: 2018-07-17 最后一次修改密码的时间
-w Password Expiration Warning [7]: 9 密码过期多少天前提醒
-i Password Inactive [-1]: 密码到期多少天以后还不改密码,就禁止使用
-E Account Expiration Date (YYYY-MM-DD) [-1]: 2018-08-08 用户账号到期时间
9.3.2 -m 修改账号更改密码的间隔,相当于/ect/shadow第4段
9.3.3 -M 修改久不修改密码的时间,相当于/ect/shadow第5段
9.3.4 -d 最后一次修改密码的时间,相当于/etc/shadow第3段
9.3.5 -w 密码过期前多少天提醒,相当于/ect/shadow第6段
9.3.6 -i 密码过期多少天以后还不更改密码,此账号不能用,相当于/etc/shadow第7段
9.3.7 -E 账号到期的时间,相当于/etc/shadow第8段
9.3.8 -l 列出以上这些信息
[root@oldboy_50 tmp]# chage -l zsf
1)Last password change : Jul 17, 2018
2)Password expires : Aug 06, 2018
3)Password inactive : never
4)Account expires : Aug 08, 2018
5)Minimum number of days between password change : 7
6)Maximum number of days between password change : 20
7)Number of days of warning before password expires : 9
说明:
1)最近一次修改密码的时间 /ect/shadow中的第3段
2)密码的到期时间
3)密码到期后多少天不改密码就禁用 /ect/shadow中的第7段
4)账户的到期时间 /ect/shadow中的第8段
5)两次改密码的时间最小间隔,在这个间隔内不能再更改密码 /ect/shadow中的第4段
6)密码的最大改密码间隔,在这个时间内必须改密码 /ect/shadow中的第5段
7)密码到期多少天之前提醒。 /ect/shadow中的第6段