更新时间:2022-09-27 20:24:05
《上邪》:
上邪!我欲与君相知,长命无绝衰。山无陵,江水为竭,冬雷震震夏雨雪,天地合,乃敢与君绝!
基础框架:
用户、密码、权限、组
属主、属组
进程的安全上下文
用户密码相关的配置文件
用户密码相关的命令
用户user
计算机用一个用户名识别、区辨使用电脑或网络服务的人。也可以说计算机将现实中的人映射为一个独立的账号。
计算机更易识别的是数字并非字串,而人易记的是字串,能否用人易理解的字串来表示计算机易识别的数字呢?Sun公司,就研发了一种用操作系统作为抽象底层硬件功能的中间层来理解的框架,你不必关心它是什么,只需要知道当我们输入用户名时,调用此中间层或nsswitch的库,就能完成名称到数字的转换。
1
2
|
nsswitch的配置文件 /etc/nsswitch .conf
库文件 /usr/lib64/libnss *
|
密码password
计算机每为一个用户分配一个用户账号,就要分配一些资源可供此用户使用,为了保证使用这些资源必须是此用户账号所对应的用户,需要一种可靠机制保证,pam用户认证框架,一种中间层,就能在用户输入密码后,对密码进行校验。
1
2
|
pam的配置文件 /etc/pam .d/
库文件 /usr/lib64/security/
|
资源指派的层级
更为精细控制用户对资源的访问权限,用户更为安全,更能保障计算机的安全。
认证:Authentication 提供用户名和密码,只代表用户能进入此计算机的范围。
授权:Authorization 基于授权的方式,确定用户能够访问资源的范围。
授权的机制:Linux哲学思想"一切皆文件",用户也不例外,对资源的授权是通过对文件附加一层元数据,文件属于谁
审计:Audition ,文件资源归你所使用,具体怎么用?确保用户对文件一个合理的使用范围.
用户的分类
不同用户对相同的资源将有不同的使用权限,一般来说:管理员的权限几乎拥有系统上的所有权限。但是并非所有管理员都是理性的,不同的发行版对管理员的权限开放程度都各有不同,redhat发行版6.0之后,比如,对于删除根就做了一定的限制,只有 rm --no-preserve-root 时,才能删除根,当然rm -rf /*也能完成。 一字之师著名作家列夫托尔斯泰曾说:“幸福的家庭大抵一样,不幸的家庭却各有不同。”对于普通用户,对资源的访问的权限各有各的不同。
计算机是依据ID号识别用户的,管理员用0,普通用户用1-65535中间的任意数字表示。
管理员:root,uid: 0
普通用户:非root,uid: 1-65535
系统用户: 为服务类(守护类)进程获取系统资源进行权限分配,1-499
登陆用户: 交互式登陆使用 500+
组:Groupname/GID "角色”使多个用户拥有相同权限的容器,可容纳多个用户
组的分类:
管理员组:root 0
普通组:
系统组 1-499 , 1-999(rhel7)
普通组 500-65535 , 1000+(rhel7)
* 查看系统的版本
1
2
3
4
|
[root@izpo45bh60h6bsz ~] # cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core) [root@izpo45bh60h6bsz ~] # uname -r
3.10.0-514.6.2.el7.x86_64 |
1
2
3
4
5
6
7
8
|
-rw-r--r-- 1 root root 9117 Jul 28 2017 boot.log - 普通文件 rw- 属主的权限 r-- 属组的权限 r-- 非属主、属组的权限 1 文件被硬链接的次数 左root 文件的属主 右root 文件的属组 |
属主:文件的属主,文件所有者
组的分类:
基本组:用户必须属于某个用户(角色)
私有组: 组名同用户名,且包含一个用户
用户的附加组(额外组) :判断用户的权限
进程的安全上下文即一个程序被调度至CPU上运行时,进程的身份是谁?
进程的身份取决于进程的发起者。
程序对文件是否有权限:
程序发起者,同文件的属主,应用属主的权限。
程序发起者,同文件 的属组,应用属组的权限。
否则,应用非属主、属组的权限
用户名和密码保存的文件位置,文件也被称为"配置文件"
获取配置文件的格式:
1
2
3
4
5
|
[root@izpo45bh60h6bsz ~] # man 5 passwd
[root@izpo45bh60h6bsz ~] # man 5 shadow
[root@izpo45bh60h6bsz ~] # man 5 gshadow
[root@izpo45bh60h6bsz ~] # man 5 group
*man5 专用保存配置文件格式的章节 |
1)/etc/passwd配置文件
作用:用于保存"用户及其属性信息(名称,UID,基本组ID)"
文件格式:name:password:UID:GID:GECOS:directory:shell
用户名:密码占位符:用户的ID号:用户的基本组ID:用户的完整信息(命名,办公电话,..):用户的主目录:用户登陆后的默认shell(用户默认所使用的shell程序)
相关的命令: useradd,userdel,usermod,chfn,chsh,finger,id,su
2)/etc/group配置文件
作用: 用于保存 "组及其属性信息"
文件格式:name:password:GID:user_list
组名:组密码占位符:组ID:以当前组为附加组的用户列表(多个用户时,分隔符为逗号)
相关的命令:groupadd,groupdel,groupmod,gpasswd
3)/etc/shadow配置文件
作用:用于保存"用户密码及其相关属性"
文件权限: (mode:----------,密码单独存放位置)
用户名:加密后的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:密码到最大使用期限前的一段时间(警告时间):密码到最大使用期限后的一段时间(非活动期限):账号的过期日期
相关的命令:useradd,usermod,passwd,chage
4)/etc/gshadow配置文件
作用: 用于保存"组密码及其相关属性",基本组切换时,需要使用到
相关的命令,gpasswd
密码基础概念
用户名:加密后的密码:最近一次更改密码的日期
加密后的密码:
$6$cFyIyt7B$4Kw7Xk4xW8BpvKQZHhOk4lShz9ax83N2eOfLCAISmTk4VVpe6Z0Iplv8LEGEdMczUi9htOmHrvQJTv0m5ks5a.
$6$:sha512
$6$cFyIyt7B$:杂质
加密: 基于某种算法,将明文转换为密文,(AES、DES、RC4、Rabbit、TripleDes等多种算法)
解密: 基于某种算法,将密文转换为明文
单向加密:提取数据的特征码或指纹
特点:
1、只能加密,不能解密
2、定长输出:对任何数据加密,输出位数一致
3、雪崩效应:初始数据的微小波动,结果巨大差异
4、长度越长,消耗CPU时钟周期越多,消耗空间越大
计算指纹的工具:
128,md5
160,sha1
224,sha224
sha256
sha384
sha512
对数据加密:COMMAND FILE
密码复杂性策略
1、数字、大小写字母、特殊字符、至少3种
2、长度足够长
3、密码循环同期长
4、足够随机
5、密码定期更换
单身加密如何破解:枚举方法
配置文件相关的命令框架:
方法一:命令总结
方法二:命令语法
方法三:按文件格式,分析相关的命令的使用方法
------------------------------------------------------------------------------
方法一:命令总结
/etc/passwd文件相关的命令:
useradd,userdel,usermod,chfn,chsh,finger,id,su命令
修改用户名: usermod -l new_name old_name
添加id:useradd -u UID user
修改id: usermod -u UID user
添加组Id: gropadd -g GID group
指定组ID:useradd -g GID/GROUP user
修改组ID:groupmod -g GID group
修改组ID: usermod -g GID/GROUP user
添加系统用户: useradd -r user
添加用户基本信息: chfn,useradd -c 'GECOS' user
查看:finger user,
修改:chfn,usermod -c 'GECOS' user
添加用户主目录: useradd -d DIR user
添加用户不给主目录: useradd -M user
修改用户主目录: usermod [-m] -d DIR user,-m,原目录文件会随之移动
默认shell: useradd -D -s SHELL, usermod -s SHELL user,useradd -s SHELL user,chsh
删除用户: userdel user
删除用户时,连家目录删除,userdel -r user
/etc/group文件相关的命令:
groupadd,groupdel,groupmod,gpasswd命令
修改组名: groupmod -n new_name old_name
指定附加组: useradd -G group1,group2,... group
修改附加组: usermod -G group1,group2,... group
添加附加组: usermod -a -G group1,group2,... group; 对原有的group进行附加
删除组: groupdel group
添加系统组: groupadd -r group
修改组密码:gpasswd group
临时切换基本组: newgrp group
/etc/shadow文件相关的命令:
useradd,usermod,passwd,chage命令
锁定用户: usermod -L user, passwd -l user,
解锁用户: usermod -U user, passwd -u user,
设定用户的密码: echo "STRING" | passwd --stdin user
删除用户的密码: passwd -d user
最近一次修改密码的时间: chage -d DAYS user
密码的最小使用期限: passwd -n DAYS user,chage -m DAYS user
密码的最大使用期限: passwd -x DAYS user, chage -M DYAS user
密码到最大使用期限前的一段时间(警告时间): passwd -w DYAS user, chage -W DAYS user
密码到最大使用期限后的一段时间(非活动期限): useradd -D -f DAYS user,usermod -f DAYS user
passwd -i DAYS user,chage -I DAYS user
账号的过期日期: useradd -D -e DYAS user, usermod -e DAYS user, passwd -e user(马上过期)
chage -e DASY user
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
方法二:命令语法
/etc/passwd文件相关的命令:
useradd命令语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@izpo45bh60h6bsz ~] # type useradd #获取useradd的类型
useradd is hashed ( /usr/sbin/useradd ) #结果被hash化了,之前用过此命令
[root@izpo45bh60h6bsz ~] # hash -r #清理hash表
[root@izpo45bh60h6bsz ~] # type useradd #重新获取useradd的类型
useradd is /usr/sbin/useradd #useradd是外部命令
[root@izpo45bh60h6bsz ~] # useradd --h #获取命令的帮助
useradd : option '--h' is ambiguous; possibilities: '--home-dir' '--help'
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
作用:添加用户和修改用户默认属性
-u, --uid UID #添加用户时指明 用户的UDI
-g, --gid GROUP #添加用户时指明 用户的GID/GROUP
-G, -- groups GROUPS #添加用户时指明 用户的附加组
-c, --comment COMMENT #添加用户时指明 用户的完整信息
-d, --home- dir HOME_DIR #添加用户时指明 用户的主目录
-D, --defaults #添加用户时不用指明,即会有的信息 默认属性
-e, --expiredate EXPIRE_DATE #默认的过期时间
-f, --inactive INACTIVE #默认的非活动期
-M, --no-create-home #添加用户时不创建其家目录
-p, --password PASSWORD #用户的密码
-r, --system #添加系统用户
-s, --shell SHELL #默认shell,添加时指明shell
|
userdel命令的语法
1
2
3
4
5
6
|
[root@izpo45bh60h6bsz ~] # type userdel
userdel is /usr/sbin/userdel
[root@izpo45bh60h6bsz ~] # userdel --h
Usage: userdel [options] LOGIN options: -r, --remove 移除用户家目录 |
usermod命令的语法
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@izpo45bh60h6bsz ~] # type usermod
usermod is /usr/sbin/usermod
[root@izpo45bh60h6bsz ~] # usermod --h
usermod : option '--h' is ambiguous; possibilities: '--home' '--help'
Usage: usermod [options] LOGIN
-u, --uid UID #修改用户的UID
-g, --gid GROUP #修改用户的GID/GROUP
-G, -- groups GROUPS #修改用户的附加组
-c, --comment COMMENT #修改用户的完整信息,
-d, --home- dir HOME_DIR #修改用户的主目录-m表示连用户的家目录一块移动
-s, --shell SHELL #修改用户的shell
|
chfn命令
1
2
3
4
5
6
7
|
[root@izpo45bh60h6bsz ~] # type chfn
chfn is /usr/bin/chfn
[root@izpo45bh60h6bsz ~] # chfn --h
chfn: option '--h' is ambiguous; possibilities: '--home-phone' '--help'
Usage: chfn [options] [username]
|
chsh命令
1
2
3
4
5
6
|
[root@izpo45bh60h6bsz ~] # type chsh
chsh is /usr/bin/chsh
[root@izpo45bh60h6bsz ~] # chsh --help
Usage: chsh [options] [username]
|
finger命令
1
2
3
4
5
|
[root@izpo45bh60h6bsz ~] # type finger
finger is /usr/bin/finger
[root@izpo45bh60h6bsz ~] # finger --help
finger: invalid option -- '-'
usage: finger [-lmps] [login ...] |
id命令
1
2
3
4
5
6
7
8
|
[root@izpo45bh60h6bsz ~] # type id
id is /usr/bin/id
[root@izpo45bh60h6bsz ~] # id --help
Usage: id [OPTION]... [USER]
-n, --name 与-u,-g,-G连用,用于显示名字 -u, --user 显示用户ID -g, --group 显示组ID -G, -- groups 所有组ID
|
su命令
1
2
3
4
5
6
7
8
9
10
|
[root@izpo45bh60h6bsz ~] # type su
su is /usr/bin/su
[root@izpo45bh60h6bsz ~] # su --help
Usage: su [options] [-] [USER [arg]...]
-, -l, --login 为交互式登陆 -s, --shell <shell> 切换时改变其shell环境 -g, --group <group> 切换时改变其基本组 -c, -- command < command > 以另一个用户的身份执行命令
|
/etc/group文件相关的命令:
groupadd命令
1
2
3
4
5
6
7
8
9
|
[root@izpo45bh60h6bsz ~] # type groupadd
groupadd is /usr/sbin/groupadd
[root@izpo45bh60h6bsz ~] # groupadd --help
Usage: groupadd [options] GROUP Options: -g, --gid GID #添加组ID
-p, --password PASSWORD #添加组密码
-r, --system #添加系统组
|
groupdel命令
1
2
3
4
5
|
[root@izpo45bh60h6bsz ~] # type groupdel
groupdel is /usr/sbin/groupdel
[root@izpo45bh60h6bsz ~] # groupdel --help
Usage: groupdel GROUP 作用删除组
|
groupmod命令
1
2
3
4
5
6
7
|
[root@izpo45bh60h6bsz ~] # type groupmod
groupmod is /usr/sbin/groupmod
[root@izpo45bh60h6bsz ~] # groupmod --help
Usage: groupmod [options] GROUP #修改组
-g, --gid GID #修改组ID
-n, --new-name NEW_GROUP #修改组名
-p, --password PASSWORD #修改组密码
|
/etc/shadow文件相关的命令:
useradd、usermod、passwd、chage
1
2
3
4
5
6
|
useradd -D [options]
-b, --base- dir BASE_DIR 默认主目录
-e, --expiredate EXPIRE_DATE 默认的过期时间 -f, --inactive INACTIVE 默认的非活动天数 -g, --gid GROUP -s, --shell SHELL |
1
2
3
|
usermod [options] LOGIN
-e, --expiredate EXPIRE_DATE 添加即可指明过期时间
-f, --inactive INACTIVE 非活动天数
|
1
2
3
4
5
6
7
8
|
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
-n, --minimum DAYS 最小使用天数 -x, --maximum DAYS -w, --warning DAYS -i, --inactive DAYS -e, --expire 使密码过期 -S, --status 密码的详细信息 --stdin 非交互式设定密码 |
1
2
3
4
5
6
7
8
|
chage [options] LOGIN
-d, --lastday LAST_DAY 修改最近一次修改密码的时间 -m, --mindays MIN_DAYS -M, --maxdays MAX_DAYS -W, --warndays WARN_DAYS -I, --inactive INACTIVE -E, --expiredate EXPIRE_DATE -l, --list 密码相关的详细信息 |
-----------------------------------------------------------------------------
方法三:按文件格式,分析相关的命令的使用方法
/etc/passwd文件相关的命令:
管理用户名相关的命令
useradd LOGIN
1
2
3
4
5
6
|
[root@izpo45bh60h6bsz ~] # useradd testuser #生成用户名
tail -1 /etc/passwd
testuser:x:2002:2002:: /home/testuser : /bin/tcsh
[root@izpo45bh60h6bsz ~] # usermod -l helloeveryone testuser #修改用户名
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
helloeveryone:x:2002:2002:: /home/testuser : /bin/tcsh
|
管理用户ID号相关的命令
useradd -u UID LOGIN
1
2
3
4
5
6
|
[root@izpo45bh60h6bsz ~] # useradd -u 666 testuser1 #生成用户ID
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
testuser1:x:666:2003:: /home/testuser1 : /bin/tcsh
[root@izpo45bh60h6bsz ~] # usermod -u 667 testuser1
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
testuser1:x:667:2003:: /home/testuser1 : /bin/tcsh
|
管理用户基本组相关的命令
useradd -g 组名/组ID LOGIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@izpo45bh60h6bsz ~] # useradd -g AAAAAAAAAAAAAAAAAAAA testuser6 #基本组不存在时
useradd : group 'AAAAAAAAAAAAAAAAAAAA' does not exist
tail -1 /etc/passwd
testuser4:x:2003:2004:: /home/testuser4 : /bin/tcsh
[root@izpo45bh60h6bsz ~] # id testuser6
id : testuser6: no such user
[root@izpo45bh60h6bsz ~] # groupadd testuser3 #先添加基本组
[root@izpo45bh60h6bsz ~] # useradd -g testuser3 testuser4 #以存在的组名作为用户的基本组
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd #显示为ID号
testuser4:x:2003:2004:: /home/testuser4 : /bin/tcsh
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group #testuser3的ID号就是2004
testuser3:x:2004: [root@izpo45bh60h6bsz ~] # tail -1 /etc/group #组testuser3已经存在,其ID为2004
testuser3:x:2004: [root@izpo45bh60h6bsz ~] # useradd -g 2004 testuser5 #存在的组ID作为用户的基本组
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
testuser5:x:2004:2004:: /home/testuser5 : /bin/tcsh
|
usermod -g 组名/组ID LOGIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@izpo45bh60h6bsz ~] # id testuser4 #用户存在,组名不同用户名,为用户的非私有组(基本组)
uid=2003(testuser4) gid=2004(testuser3) groups =2004(testuser3)
[root@izpo45bh60h6bsz ~] # usermod -g AAAAAAAAAAAAAAAAAAAA testuser4 #修改的组名不存在,组不能修改
usermod : group 'AAAAAAAAAAAAAAAAAAAA' does not exist
[root@izpo45bh60h6bsz ~] # id testuser4
uid=2003(testuser4) gid=2004(testuser3) groups =2004(testuser3)
[root@izpo45bh60h6bsz ~] # groupadd AAAAAAAAAAAAAAAAAAAA #添加组名
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group #验证存在
AAAAAAAAAAAAAAAAAAAA:x:10001: [root@izpo45bh60h6bsz ~] # usermod -g AAAAAAAAAAAAAAAAAAAA testuser4 #修改组名
[root@izpo45bh60h6bsz ~] # id testuser4 #id为10001
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups =10001(AAAAAAAAAAAAAAAAAAAA)
[root@izpo45bh60h6bsz ~] # usermod -g 10000 testuser4 #修改的组id不存在,组不能修改
usermod : group '10000' does not exist
[root@izpo45bh60h6bsz ~] # id testuser4
uid=2003(testuser4) gid=2004(testuser3) groups =2004(testuser3)
[root@izpo45bh60h6bsz ~] # groupadd -g 10000 mygrp #添加此组id
[root@izpo45bh60h6bsz ~] # usermod -g 10000 testuser4 #修改的组id已经存在
[root@izpo45bh60h6bsz ~] # id testuser4 #修改成功
uid=2003(testuser4) gid=10000(mygrp) groups =10000(mygrp)
|
管理用户的完整信息相关的命令
finger,chfn,useradd -c 'GECOS' LOGIN , usermod -c 'GECOS' LOGIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[root@izpo45bh60h6bsz ~] # finger testuser4 #查看用户的完整信息
Login: testuser4 Name: Directory: /home/testuser4 Shell: /bin/tcsh
Never logged in .
No mail. No Plan. [root@izpo45bh60h6bsz ~] # chfn testuser4
Changing finger information for testuser4.
Name []: helloeveryone Office []: 123 Office Phone []: 123 Home Phone []: 96168^C [root@izpo45bh60h6bsz ~] # chfn testuser4
Changing finger information for testuser4.
Name []: Xie Daxia Office []: Xiedaxia@666 Office Phone []: 96168 Home Phone []: 96168 Finger information changed. [root@izpo45bh60h6bsz ~] # finger testuser4 #查看用户的完整信息
Login: testuser4 Name: Xie Daxia Directory: /home/testuser4 Shell: /bin/tcsh
Office: Xiedaxia@666, x9-6168 Home Phone: x9-6168 Never logged in .
No mail. No Plan. [root@izpo45bh60h6bsz ~] # tail /etc/passwd #查看用户的完整信息
testuser4:x:2003:10001:Xie Daxia,Xiedaxia@666,96168,96168: /home/testuser4 : /bin/tcsh
[root@izpo45bh60h6bsz ~] # useradd -c 'www.magedu.com' testuser8 #添加时指定
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
testuser8:x:2005:2005: [root@izpo45bh60h6bsz ~] # usermod -c 'mageedu.com' testuser8 #修改时指定
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
testuser8:x:2005:2005:mageedu.com: /home/testuser8 : /bin/tcsh
|
删除用户相关的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
myuser2:x:2009:2009:: /home/myuser2 : /bin/bash
[root@izpo45bh60h6bsz ~] # ls -dl /home/myuser2
drwx------ 2 myuser2 myuser2 4096 Jan 2 12:30 /home/myuser2
[root@izpo45bh60h6bsz ~] # userdel myuser2 #删除时,保留家目录
[root@izpo45bh60h6bsz ~] # ls -dl /home/myuser2
drwx------ 2 2009 2009 4096 Jan 2 12:30 /home/myuser2
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
myuser1:x:2008:2008:: /home/myuser1 : /bin/bash
[root@izpo45bh60h6bsz ~] # ls -dl /home/myuser1
drwx------ 2 myuser1 myuser1 4096 Jan 2 12:28 /home/myuser1
[root@izpo45bh60h6bsz ~] # userdel -r myuser1 #删除时,不保留家目录
[root@izpo45bh60h6bsz ~] # ls -dl /home/myuser1
ls : cannot access /home/myuser1 : No such file or directory
|
管理用户的主目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
[root@izpo45bh60h6bsz ~] # useradd -d /tmp/hello testuser10 #添加时,随意指定用户的家目录
[root@izpo45bh60h6bsz ~] # ls -a /tmp/hello #家目录下会生成与用户相关的文件
. .. .bash_history .bash_logout .bash_profile .bashrc [root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd #家目录,确实是/tmp/hello
testuser10:x:2006:2006:: /tmp/hello : /bin/bash
[root@izpo45bh60h6bsz ~] # finger testuser10
Directory: /tmp/hello
[root@izpo45bh60h6bsz ~] # su - testuser10 #能够正常登陆
Last login: Sat Jan 2 12:04:22 CST 2016 on pts /0
[testuser10@izpo45bh60h6bsz ~]$ [testuser10@izpo45bh60h6bsz ~]$ [testuser10@izpo45bh60h6bsz ~]$ exit
logout [root@izpo45bh60h6bsz ~] # usermod -d /home/testuser10 testuser10 #修改用户的家目录
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd #修改成功
testuser10:x:2006:2006:: /home/testuser10 : /bin/bash
[root@izpo45bh60h6bsz ~] # ls -a /home/testuser10 #新的家目录虽修改,但不会被创建
ls : cannot access /home/testuser10 : No such file or directory
[root@izpo45bh60h6bsz ~] # su - testuser10 #切换至此用户
Last login: Sat Jan 2 12:05:41 CST 2016 on pts /0
su : warning: cannot change directory to /home/testuser10 : No such file or directory
- bash -4.2$ #登陆不成功,此时没有家目录
- bash -4.2$ exit
logout [root@izpo45bh60h6bsz ~] # usermod -d /tmp/hello testuser10 #修改回
[root@izpo45bh60h6bsz ~] # ls -a /tmp/hello
. .. .bash_history .bash_logout .bash_profile .bashrc [root@izpo45bh60h6bsz ~] # su - testuser10 #正常登陆
Last login: Sat Jan 2 12:07:40 CST 2016 on pts /0
[testuser10@izpo45bh60h6bsz ~]$ [testuser10@izpo45bh60h6bsz ~]$ exit
logout [root@izpo45bh60h6bsz ~] # usermod -m -d /home/testuser10 testuser10 #修改家目录时,-m连胜
[root@izpo45bh60h6bsz ~] # ls -a /home/testuser10 #新的家目录被创建,且文件存在
. .. .bash_history .bash_logout .bash_profile .bashrc [root@izpo45bh60h6bsz ~] # ls /tmp/hello #原有的家目录被删除
ls : cannot access /tmp/hello : No such file or directory
[root@izpo45bh60h6bsz ~] # su - testuser10 #正常登录
Last login: Sat Jan 2 12:08:42 CST 2016 on pts /0
[testuser10@izpo45bh60h6bsz ~]$ [testuser10@izpo45bh60h6bsz ~]$ exit
logout [root@izpo45bh60h6bsz ~] # su - user1 -c 'whoami' #以另一个用户身份执行命令
user1 |
管理用户的默认shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@izpo45bh60h6bsz ~] # useradd myuser
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd #新加一个用户,其默认shell为/bin/bash
myuser:x:2007:2007:: /home/myuser : /bin/bash
[root@izpo45bh60h6bsz ~] # tail /etc/default/useradd
# useradd defaults file SHELL= /bin/bash #此处的shell为默认的shell
[root@izpo45bh60h6bsz ~] # useradd -D -s /bin/sh #修改默认shell
[root@izpo45bh60h6bsz ~] # tail /etc/default/useradd
# useradd defaults file SHELL= /bin/sh #此处的shell随之改变
[root@izpo45bh60h6bsz ~] # useradd myuser1
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd #shell为SHELL变量的值
myuser1:x:2008:2008:: /home/myuser1 : /bin/sh
[root@izpo45bh60h6bsz ~] # useradd -s /bin/bash myuser2 #SHELL=/bin/sh #手动指明shell,不在随默认shell
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
myuser2:x:2009:2009:: /home/myuser2 : /bin/bash
[root@izpo45bh60h6bsz ~] # usermod -s /bin/bash myuser1 #修改shell
[root@izpo45bh60h6bsz ~] # tail -1 /etc/passwd
myuser1:x:2008:2008:: /home/myuser1 : /bin/bash
|
切换用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
1、交互式切换 [root@izpo45bh60h6bsz ~] # useradd myuser1
[root@izpo45bh60h6bsz ~] # echo $PATH
/usr/local/nginx/sbin : /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
[root@izpo45bh60h6bsz ~] # su - myuser1
-sh-4.2$ echo $PATH
/usr/local/nginx/sbin : /usr/local/bin : /bin : /usr/bin : /usr/local/sbin : /usr/sbin
-sh-4.2$ exit
logout 2、非交互式切换 [root@izpo45bh60h6bsz ~] # echo $PATH
/usr/local/nginx/sbin : /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
[root@izpo45bh60h6bsz ~] # su myuser1
[myuser1@izpo45bh60h6bsz root]$ echo $PATH
/usr/local/nginx/sbin : /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
[myuser1@izpo45bh60h6bsz root]$ exit
exit |
查看用户的基本信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@izpo45bh60h6bsz ~] # id testuser4
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups =10001(AAAAAAAAAAAAAAAAAAAA)
[root@izpo45bh60h6bsz ~] # id -u testuser4
2003 [root@izpo45bh60h6bsz ~] # id -un testuser4
testuser4 [root@izpo45bh60h6bsz ~] # id -g testuser4
10001 [root@izpo45bh60h6bsz ~] # id -gn testuser4
AAAAAAAAAAAAAAAAAAAA [root@izpo45bh60h6bsz ~] # usermod -a -G myuser1 testuser4
[root@izpo45bh60h6bsz ~] # id testuser4
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups =10001(AAAAAAAAAAAAAAAAAAAA),2008(myuser1)
[root@izpo45bh60h6bsz ~] # id -G testuser4
10001 2008 [root@izpo45bh60h6bsz ~] # id -Gn testuser4
AAAAAAAAAAAAAAAAAAAA myuser1 |
etc/group文件相关的命令:
与组名相关的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@izpo45bh60h6bsz ~] # groupadd aux #添加组
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group
aux:x:10002: [root@izpo45bh60h6bsz ~] # groupmod -n eFH aux #修改组名
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group
eFH:x:10002: *同ID号是同一个组 [root@izpo45bh60h6bsz ~] # groupdel eFH #删除组
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group
myuser1:x:2008:testuser4 |
与组密码相关的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@izpo45bh60h6bsz ~] # groupadd -p 123 aux #添加时指明组密码
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group
aux:x:10002: [root@izpo45bh60h6bsz ~] # tail -3 /etc/gshadow #查看组密码
myuser:!:: myuser1:!::testuser4 aux:123:: [root@izpo45bh60h6bsz ~] # groupmod -p 666 aux
[root@izpo45bh60h6bsz ~] # tail -3 /etc/gshadow
myuser:!:: myuser1:!::testuser4 aux:666:: !代表没有密码 [root@izpo45bh60h6bsz ~] # gpasswd aux #设定密码,123
Changing the password for group aux
New Password: Re-enter new password: [root@izpo45bh60h6bsz ~] # tail -3 /etc/gshadow #密文存放
myuser:!:: myuser1:!::testuser4 aux:$6$FVea6d2Z$H9MOV7cCj8jJ6M7zxZMB6c9Pot8nOOl96Fy1XrlHzoqMxuP /In8gDsmWx48UoOp0mJtyiGo5KixvQD7Gdp7XL1 ::
|
$6$FVea6d2Z$H9M
6:sha512算法
$FVea6d2Z$ : 红色为杂质
以当前组为附加组的用户列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
1、生成组内用户列表 [root@izpo45bh60h6bsz ~] # tail /etc/passwd #查看可用的倒数10行的用户列表
puppet:x:52:52:Puppet: /var/lib/puppet : /sbin/nologin
tom:x:2001:2001:: /home/tom : /bin/tcsh
helloeveryone:x:2002:2002:: /home/testuser : /bin/tcsh
testuser1:x:667:2003:: /home/testuser1 : /bin/tcsh
testuser4:x:2003:10001:Xie Daxia,Xiedaxia@666,96168,96168: /home/testuser4 : /bin/tcsh
testuser5:x:2004:2004:: /home/testuser5 : /bin/tcsh
testuser8:x:2005:2005:mageedu.com: /home/testuser8 : /bin/tcsh
testuser10:x:2006:2006:: /home/testuser10 : /bin/bash
myuser:x:2007:2007:: /home/myuser : /bin/bash
myuser1:x:2008:2008:: /home/myuser1 : /bin/sh
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group #没有附加组
aux:x:10002: [root@izpo45bh60h6bsz ~] # gpasswd -M puppet,tom,helloeveryone,testuser1 aux
[root@izpo45bh60h6bsz ~] # tail -1 /etc/group
aux:x:10002:puppet,tom,helloeveryone,testuser1 2、添加用户时,指定附加组:将此用户的基本组作为这些组的附加组 [root@izpo45bh60h6bsz ~] # tail /etc/group #查看可用的倒数10行的组列表
testuser:x:2002: testuser1:x:2003: testuser3:x:2004: mygrp:x:10000: AAAAAAAAAAAAAAAAAAAA:x:10001: testuser8:x:2005: testuser10:x:2006: myuser:x:2007: myuser1:x:2008:testuser4 aux:x:10002:puppet,tom,helloeveryone,testuser1 [root@izpo45bh60h6bsz ~] # useradd -G testuser,testuser1,testuser3 eFH
[root@izpo45bh60h6bsz ~] # id eFH
uid=2009(eFH) gid=2009(eFH) groups =2009(eFH),2002(testuser),2003(testuser1),2004(testuser3)
3、添加附加组 [root@izpo45bh60h6bsz ~] # usermod -G myuser1 -a eFH
[root@izpo45bh60h6bsz ~] # id eFH
uid=2009(eFH) gid=2009(eFH) groups =2009(eFH),2002(testuser),2003(testuser1),2004(testuser3),2008(myuser1)
4、覆盖附加组 [root@izpo45bh60h6bsz ~] # usermod -G myuser1 eFH
[root@izpo45bh60h6bsz ~] # id eFH
uid=2009(eFH) gid=2009(eFH) groups =2009(eFH),2008(myuser1)
|
临时切换基本组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[root@izpo45bh60h6bsz ~] # id root
uid=0(root) gid=0(root) groups =0(root)
[root@izpo45bh60h6bsz ~] # groupmod -p 123 aux
[root@izpo45bh60h6bsz ~] # fgrep aux /etc/gshadow
aux:123::puppet,tom,helloeveryone,testuser1 [root@izpo45bh60h6bsz ~] # su - eFH
-sh-4.2$ id
uid=2009(eFH) gid=2009(eFH) groups =2009(eFH),2008(myuser1)
-sh-4.2$ newgrp aux Password: Invalid password. sh-4.2$ exit
exit [root@izpo45bh60h6bsz ~] # gpasswd aux
Changing the password for group aux
New Password: Re-enter new password: [root@izpo45bh60h6bsz ~] # fgrep aux /etc/gshadow
aux:$6$ggVWoVfqDgU5$hYO5qEOslzR /zYY3XZ6G8MEkH9t87Nxdtp24UFVwpC8CEAtvyjd1bouN84o3pl3fMg4RYIWP4VGwukhY40Ns4/ ::puppet,tom,helloeveryone,testuser1
[root@izpo45bh60h6bsz ~] # su - eFH
-sh-4.2$ id
uid=2009(eFH) gid=2009(eFH) groups =2009(eFH),2008(myuser1)
-sh-4.2$ newgrp aux Password: sh-4.2$ id
uid=2009(eFH) gid=10002(aux) groups =10002(aux),2008(myuser1),2009(eFH)
|
/etc/shadow文件相关的命令:
锁定/解锁密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@izpo45bh60h6bsz ~] # usermod -p 123 eFH #设定密码
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:123:16802:0:99999:7::: [root@izpo45bh60h6bsz ~] # usermod -L eFH #对密码加锁
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:!123:16802:0:99999:7::: [root@izpo45bh60h6bsz ~] # usermod -U eFH #对密码解锁
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:123:16802:0:99999:7::: [root@izpo45bh60h6bsz ~] # echo '123' | passwd --stdin eFH #非交互式设定密码
Changing password for user eFH.
passwd : all authentication tokens updated successfully.
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$cHbhiXqW$xxF35fzXMEQmROJfq6dBM /YXDqHjoMahC6Nq5P1wCe .u7bG7sHXLwWljWZd3uifug6DiRhZUpDPInXtL42cJ61:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~] # passwd -l eFH #加锁密码
Locking password for user eFH.
passwd : Success
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:!!$6$cHbhiXqW$xxF35fzXMEQmROJfq6dBM /YXDqHjoMahC6Nq5P1wCe .u7bG7sHXLwWljWZd3uifug6DiRhZUpDPInXtL42cJ61:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~] # passwd -u eFH #解锁密码
Unlocking password for user eFH.
passwd : Success
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :16802:0:99999:7:::
|
最近一次修改密码的日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@izpo45bh60h6bsz ~] # date #现在的时间
Sun Jul 30 11:31:25 CST 2017 [root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow #修改密码的天数
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :16802:0:99999:7:::
1、设定修改密码的日期 [root@izpo45bh60h6bsz ~] # passwd -S eFH #具体时间
eFH PS 2016-01-02 0 99999 7 -1 (Password set , SHA512 crypt.)
[root@izpo45bh60h6bsz ~] # chage -l eFH #具体时间
Last password change : Jan 02, 2016 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 2、设定修改密码的日期 [root@izpo45bh60h6bsz ~] # chage -d 15000 eFH #修改最近一次修改密码的时间
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:7:::
[root@izpo45bh60h6bsz ~] # passwd -S eFH
eFH PS 2011-01-26 0 99999 7 -1 (Password set , SHA512 crypt.)
[root@izpo45bh60h6bsz ~] # chage -l eFH
Last password change : Jan 26, 2011 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 |
密码的最小、大使用期限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1、修改最小使用期限:0无限制 [root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:7:::
[root@izpo45bh60h6bsz ~] # passwd -n 10 eFH
Adjusting aging data for user eFH.
passwd : Success
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:10:99999:7:::
[root@izpo45bh60h6bsz ~] # chage -m 0 eFH
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:7:::
2、修改最大使用期限:9999,永久 [root@izpo45bh60h6bsz ~] # passwd -x 10 eFH
Adjusting aging data for user eFH.
passwd : Success
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:10:7:::
[root@izpo45bh60h6bsz ~] # chage -M 99999 eFH
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
|
密码到最大使用期限前的一段时间(警告时间)
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:7:::
[root@izpo45bh60h6bsz ~] # passwd -w 10 eFH
Adjusting aging data for user eFH.
passwd : Success
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:10:::
[root@izpo45bh60h6bsz ~] # chage -W 7 eFH
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q /5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1 :15000:0:99999:7:::
|
密码到最大使用期限后的一段时间(非活动期限)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
1、设定默认值 [root@izpo45bh60h6bsz ~] # cat /etc/default/useradd
# useradd defaults file INACTIVE=-1 [root@izpo45bh60h6bsz ~] # useradd -D -f 10
[root@izpo45bh60h6bsz ~] # cat /etc/default/useradd
# useradd defaults file INACTIVE=10 [root@izpo45bh60h6bsz ~] # useradd user1
[root@izpo45bh60h6bsz ~] # id user1
uid=2010(user1) gid=2010(user1) groups =2010(user1)
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
user1:!!:17377:0:99999:7:10:: 2、修改用户的非活动期 [root@izpo45bh60h6bsz ~] # passwd -S myuser
myuser LK 2016-01-02 0 99999 7 -1 (Password locked.) [root@izpo45bh60h6bsz ~] # usermod -f 10 myuser
[root@izpo45bh60h6bsz ~] # passwd -S myuser
myuser LK 2016-01-02 0 99999 7 10 (Password locked.) 3、修改用户的非活动期 [root@izpo45bh60h6bsz ~] # passwd -i -1 myuser
Adjusting aging data for user myuser.
passwd : Success
[root@izpo45bh60h6bsz ~] # passwd -S myuser
myuser LK 2016-01-02 0 99999 7 -1 (Password locked.) 4、修改用户的非活动期 [root@izpo45bh60h6bsz ~] # chage -I 10 myuser
[root@izpo45bh60h6bsz ~] # passwd -S myuser
myuser LK 2016-01-02 0 99999 7 10 (Password locked.) |
账号的过期日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
1、设定默认值 [root@izpo45bh60h6bsz ~] # cat /etc/default/useradd
# useradd defaults file EXPIRE= [root@izpo45bh60h6bsz ~] # useradd -D -e 100
[root@izpo45bh60h6bsz ~] # cat /etc/default/useradd
# useradd defaults file EXPIRE=100 [root@izpo45bh60h6bsz ~] # useradd user13
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:100: 2、修改用户的过期日期 [root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:100: [root@izpo45bh60h6bsz ~] # usermod -e 10 user13
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:10: 3、立即过期 [root@izpo45bh60h6bsz ~] # passwd -e user13
Expiring password for user user13.
passwd : Success
4、修改过期的日期 [root@izpo45bh60h6bsz ~] # chage -E 123 user13
[root@izpo45bh60h6bsz ~] # tail -1 /etc/shadow
user13:!!:0:0:99999:7:10:123:
|