一、用户,组和权限管理
1、多用户(Multi-tasks),多任务(Multi-Users)。对计算机而言,每一个使用者就是一个用户。
2、每个使用者:
a、用户标识,密码:
认证(Authentication):用户名和密码登陆
授权(Authorization):哪个用户有哪个权限
审计(Audition):对相应操作行为进行审计
b、组:用户组,即用户容器。
二、用户和组
1、用户类别:
a、管理
b、普通用户
系统用户
登陆用户
c、用户标识:UserID,UID
16bits二进制数字:0-65535
管理员标识(ID):0
普通用户:1-65536,一般CentOS只用到了60000
系统用户: 1-499(CentOS6),1-999(CentOS7)
登陆用户:500-60000(CentOS6),1000-60000(CentOS7)
名称解析:名称转换
Username <--> UID
根据名称解析库进行:/etc/passwd
2、组类别1
a、管理员组
b、普通用户组
系统组
登陆组
c、组标识:GroupID,GID
管理员组(ID):0
普通用户组:1-65536,一般CentOS只用到了60000
系统用户组: 1-499(CentOS6),1-999(CentOS7)
登陆用户组:500-60000(CentOS6),1000-60000(CentOS7)
d、名称解析:名称转换
groupname <--> GID
解析库:/etc/group
3、组类别2
a、用户的基本(主)组
b、用户的附加组
4、组类别3:
用户的私有组:组名同用户名,且只包含一个用户。
用户的公共组:组内包含了多个用户
5、认证信息
a、通过比对事先存储的,与登录时提供的信息是否一致。
password:
用户密码库文件:/etc/shadow
组密码库文件:/etc/gshadow
b、密码使用策略
(1)、使用随机密码
(2)、最短长度不要低于8位
(3)、应该使用大写字母,小写字母,数字和标点符号四类字符中至少三类
(4)、定期更换
c、加密算法:
(1)、对称加密:加密和解密使用同一个密码
(2)、非对称加密:加密和解密使用的一对儿秘钥:
秘钥对:使用公钥加密的只能使用与之配对的私钥解密。非对称加密秘钥长度比对称加密长的多。对称加密早期只有56位,但2002年就已经被破解了,后来就开始增长秘钥的长度,128位,192位,256位,384位等等。而非对称加密的长度后来达到了惊人的级别,起始为512位,现在可以达到2048位,甚至可以达到4096位。秘钥越长,加密解密也就越慢,因此非对称加密一般来说比较慢一点。据说非对称加密比对称加密慢三个数量级即10^3倍
公钥:public key
私钥:private key
(3)、单向加密:只能加密,不能解密,提取数据特征码
定长输出
雪崩效应:初始节点细微改变可能引起全局巨大变化
[root@node1 .ssh]# echo "hao are you" |md5sum e2a28ca5906fdacfd9825bd6766efc9d - [root@node1 .ssh]# echo "hao are you ?" |md5sum 49dba70f61c42012af4d0e8db4a332c9 -
目前的算法:
md5:message digest,128bits
sha:secure hash algorithm,160bits
sha224
sha256
sha384
sha512
[root@node1 /]# echo "wohaoshuai"|sha512sum 3306a5149229338826594b1fa5ccaf5681d38049130cd991c0b0b9f462fe839927269fd838352d62c25a26c13b1a2cdbd93f6abc012e8f0a28f5861304c0e887 - [root@node1 /]# echo "wohaoshuai"|sha512sum 3306a5149229338826594b1fa5ccaf5681d38049130cd991c0b0b9f462fe839927269fd838352d62c25a26c13b1a2cdbd93f6abc012e8f0a28f5861304c0e887 -
6、我们现在来增加用户centos和gentoo并修改密码,我们可以看到我们密码一样但是他们的密码随机数也是不一样的。这是因为他在计算时加了salt,即随机数。
[root@node1 /]# useradd centos [root@node1 /]# useradd gentoo [root@node1 /]# passwd centos Changing password for user centos. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@node1 /]# passwd gentoo Changing password for user gentoo. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@node1 /]# tail -2 /etc/shadow centos:$6$x6tAsVEU$LD0TeHD/8MxGXC4yFlGfwoZRhShRferRCHjgiCZMFfkNn/ZXMw2hnQrd0DT4Ev5AW6w8fBv2GqSfQ2E6gVflu0:18247:0:99999:7::: gentoo:$6$3zQ80.33$ryAHNDjDcSA8stzrDPYkCZiXFaUVueTxdAVexjuNl4lQkemWyD1dn4FgSH.tn2WQ94NXKo68ciygE3NFWH6ij1:18247:0:99999:7:::
三、相应文件解析
1、/etc/passwd:用户的信息库
[root@node1 etc]# whatis passwd sslpasswd (1ssl) - compute password hashes passwd (1) - update user's authentication tokens passwd (5) - password file [root@node1 etc]# man 5 passwd
a、对应内容格式
name:password:UID:GID:GECOS:directory:shell
name:用户名
password:可以是加密的密码,也可以是占位符x,x出现意味着密码在/etc/shadow中
UID:用户ID
GID:用户所属的主组的ID号
GECOS:用户的注释信息
directory:用户的家目录
shell:用户的默认shell,登陆时默认的shell程序
[root@node1 etc]# tail /etc/passwd chrony:x:997:995::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin testuser:x:5000:5000::/home/testuser:/bin/tcsh nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin redis:x:995:993:Redis Database Server:/var/lib/redis:/sbin/nologin wohaoshuai:x:5001:5001::/home/wohaoshuai:/bin/bash tomcat:x:53:53:Apache Tomcat:/usr/share/tomcat:/sbin/nologin centos:x:5002:5002::/home/centos:/bin/bash gentoo:x:5003:5003::/home/gentoo:/bin/bash
2、/etc/shadow:用户密码
[root@node1 etc]# whatis shadow shadow (3) - encrypted password file routines shadow (5) - shadowed password file [root@node1 etc]# man 5 shadow
a、对应内容格式
用户名:加密的密码:最近一次修改密码的时间(从1970年到现在的天数):密码的最短使用期限(此时间不能改密码):密码最长使用期限:警告期:过期期限:保留时长(即过期后密码还可以保留多久)
在警告期有两个情况,当警告期处于密码最长使用期限期间时用户登录系统时只会警告还可以操作,当警告期处于密码最长使用期限时间之后时登录后将会一直被警告而不能操作,当过期后密码也就无法登陆了,也不会警告了
gentoo:$6$tI6yub9Q$NeWTMw9SfRJLD0ynfzrDeNCeOatzaRhT0mmyr3eZM4LdRuf2BOrz34bDG1B7zTyUBQsjej/LeK.EFijBq61w./:18247:0:99999:7::: centos:$6$2CIkdkuC$KujBc6P8uwHlnjX3JYzTLeDqvqSy1JAtnGBihzwmRxqrhU5OHubRd86sFaCcHKg6xgqEoLZDBVTYPel5a88lS0:18247:0:99999:7:::
加密的密码串在前面默认会加一段随机字符然后再进行加密,使用$作为分隔符,由三段组成:$加密算法,1表示md5,在linux中一共有上面介绍的6种加密算法,6表示sha512$随机数$加密后的字符串。上面可以看到centos后面的加密的密码串就是如上所述的意思。
3、/etc/group:组的信息库
[root@localhost ~]# whatis group group (5) - user group file [root@localhost ~]# man 5 group
a、内容结构:group_name:password:GID:user_list
group:组名
password:默认也是x,在/etc/gshadow中
GID:组ID
user_list:该组的用户成员,以此组为附加组的用户的用户列表
[root@localhost ~]# tail /etc/group postdrop:x:90: postfix:x:89: ntp:x:38: chrony:x:995: tcpdump:x:72: stapusr:x:156: stapsys:x:157: stapdev:x:158: gentoo:x:1000: centos:x:1001:
4、相关命令:
useradd,userdel,usermod,passwd
groupadd,groupdel,groupmod,gpasswd
chage,chsh,id,su