Linux基础知识之用户和用户组以及 Linux 权限管理(2)

  上面讲到了用户特征码,操作系统时通过用户特征码来识别用户的。对于淫类,我们识别用户是通过用户名,因为用户名(字符串)好记。而计算机觉得数字更好记一些,于是在创建用户时系统会为其分配一个唯一的特征码,用以识别该用户,这个特征码也叫UID。同样的,用户组也有特征码,叫做GID。

  Linux 系统中,UID以如下的方式划分:

0 表示管理员(root)

1 - 500 表示系统用户

501 - 65535 表示普通用户

不同的 Linux 发行版,这些数字可能不一样

  4. /etc/passwd 中的字段分析

  /etc/passwd 中的字段分别表示如下信息(字段名字是我自己取的):

ACCOUNT:用户名

PASSWORD:密码占位符

UID:用户ID

GID:用户组ID

COMMAND:注释信息

HOME DIR:用户家目录

SHELL:用户的默认 shell

  密码占位符,其值是 x,显然这不是真正的密码。真正的密码保存在哪里呢?在 /etc/shadow 文件中,此文件中保存的也不是明文密码,而是经过加密处理之后的密码。我们来看一下 /etc/shadow 中的内容(root only):

  

Linux基础知识之用户和用户组以及 Linux 权限管理

  可见,/etc/shadow 中保存的也是数据表,这个表也和用户相关。还记得第二天说到的 man 命令吗?man 手册的第五个章节是特殊文件,我们来 man 一波试试:

 

Linux基础知识之用户和用户组以及 Linux 权限管理

  对于 /etc/shadow 中每个字段的含义,手册中都给出了说明,我们可以去参考(这里只给出了一部分截图)。同理,对于 /etc/passwd,我们也可以通过 man 5 passwd 查看每一个字段表示的含义。

  好了,回到 PASSWORD 字段,我们看一下 root 用户和 charley 的此项字段值,可以看到此值中有一些规律可循:

$1$XXXXXXXX$XXXXXXXXXX.....

  我们可以通过此字段来获取如下信息:

前两个美元符号中的数字1表示加密方式是 md5

第二个和第三个美元符号之间的字串是经过加密后的密码盐值

第三个美元符号之后的字串是密码明文精加密的后的特征码

  既然谈到了加密和盐值,我们来复习一下关于加密的基础知识。我们通常用到的加密方式有一下几种:

对称加密:使用同一套密码进行加密和解密

公钥加密:每个密码以私钥(secret key)和公钥(public key)成对出现,公钥进行的加密使用与其配对的私钥解密,反之亦然,相对于对称加密,速度很慢,一般不用于加密,而是秘钥交换

单向加密(散列加密):只能加密不能解密。也就是说只能由明文取得密文,而不能由密文取得明文。经过单向加密得到的是一份唯一的特征码,每个数据的特征码是独一无二的,因此也叫作指纹加密。如果两次算法取得的特征码一样,那么就是同一份数据。���向加密可以用来做数据校验,如果数据被动了手脚,那么数据的特征码就不一样。常用的散列加密方式有:

MD5:定长128位输出特征码

SHA1:定长160位输出特征码

还有其他方式,主要体现在特征码输出长度的不同

单向加密的特点:

不可逆

雪崩效应:数据的微小改变,会引起特征码的巨大变化

定长输出:不管加密的内容长度多少,输出的特征码长度都是一样

加盐:如果两个用户使用了同样的密码,那么经过 MD5 散列加密后的特征码就是一致的,如果一个用户偶然发现另一个用户的特征码和他自己是一样的,那么就可以推断另一个用户的密码。这是不太安全的。为了安全起见,我们需要用到散列加密特点中的雪崩效应,往密码中额外加点杂质(内容),这样加密后的特征码就千差万别了。这个过程就是所谓的加盐。

  5.useradd 命令:添加用户

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14858.html