Linux shadow文件

MD5进行密码的加密,MD5算法对密码的加密规则,第一个,输入的长度不固定但是输出的长度是固定的,不管输入的密码长度是6位的还是8位的,生成的加密的密码是固定长度的值,单向不可逆的。

[lulei@localhost ~]$ encho "123" | md5sum

bash: encho: 未找到命令...

d41d8cd98f00b204e9800998ecf8427e  -

[lulei@localhost ~]$ encho "123345" | md5sum

bash: encho: 未找到命令...

d41d8cd98f00b204e9800998ecf8427e  -

可以看到不同长度的密码最终生成的密文都是同等长度的。

在设置密码的时候强度要足够同时应该经常修改密码。

 

为什么不在/etc/passwd里面放上用户的加密密码。

[lulei@localhost ~]$ ls -l /etc/passwd

-rw-r--r--. 1 root root 2293 12月 27 2016 /etc/passwd

可以看到每个用户都可以对passwd文件进行读取,这样是十分危险的。真正存放密码的地方是shadow文件。

[lulei@localhost ~]$ more /etc/shadow

/etc/shadow: 权限不够

 

[root@localhost lu]# more /etc/shadow

root:$6$bNqwo0NKVixTqJel$LD6SnkXomum5sk2l6Zggy8jc9Z/NCBQ0sKCXlX4.WLK/jtkMUpFloER7v3m/Sk

pkCrwztdF4krXcvHYWiFuAn/::0:99999:7:::

bin:*:17110:0:99999:7:::

daemon:*:17110:0:99999:7:::

adm:*:17110:0:99999:7:::

lp:*:17110:0:99999:7:::

sync:*:17110:0:99999:7:::

shutdown:*:17110:0:99999:7:::

如果删除一个用户里面的密文那么该用户登入就不需要使用密码输入用户名就可以登入了。

如果root用户忘记了密码就可以将该文件里面的密匙进行删除重新登入设置密码即可。

 

root:x:0:0:root:/root:/bin/bash

用户名:密码位:UID:GID:描述信息:宿主目录:shell

 

root:$6$a8fUITZM$cHKJxDBctRd31LmdMeh/oyB.LgaV/HrngmcvljIpjBSLYHg0rhBhYoZRhfehXOj1.FivEjrXnsNvIlB9CXbPS/:17629:0:99999:7:::

用户名:加密密码:最后一次修改时间:要过多少天才可以修改密码:密码多少天后到期:到期前警告期限:账号失效期限,失效了用户登入不了:

 

 

为什么要将密码存放在/etc/shadow下面,可以看到

[root@server ~]# ls -l /etc/shadow

----------. 1 root root 1800 Apr  9 12:42 /etc/shadow

只有管理员root才有读权限。所以密码放在该文件里面十分的安全。

 

上面所诉就是用户配置最重要的两个文件。

[root@localhost lu]# grep root /etc/passwd  /etc/shadow

/etc/passwd:root:x:0:0:root:/root:/bin/bash  存放用户信息

/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin

/etc/shadow:root:$6$bNqwo0NKVixTqJel$LD6SnkXomum5sk2l6Zggy8jc9Z/NCBQ0sKCXlX4.WLK/jtkMUp     存放用户密码

passwd里面的密码位是x,既然没有保存真正的密码为什么不将其去掉呢。其实在添加用户设置密码的时候或者修改密码的时候都是先将密码写到etc/passwd文件里面再转化到shadow里面。

 

可以看到passwd里面密码位上面已经有密码了。

[root@localhost lu]# pwunconv  --这里使用密码转换命令将shadow里面的密码转换到passwd里面了

[root@localhost lu]# grep root /etc/passwd /etc/shadow

/etc/passwd:root:$6$bNqwo0NKVixTqJel$LD6SnkXomum5sk2l6Zggy8jc9Z/NCBQ0sKCXlX4.WLK/jtkMUpFloER7v3m/SkpkCrwztdF4krXcvHYWiFuAn/:0:0:root:/root:/bin/bash

/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin

grep: /etc/shadow: No such file or directory

 

 

[root@localhost lu]# pwconv --将上面passwd里面密码转换到shadow里面去了

[root@localhost lu]# grep root /etc/passwd /etc/shadow

/etc/passwd:root:x:0:0:root:/root:/bin/bash

/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin

/etc/shadow:root:$6$bNqwo0NKVixTqJel$LD6SnkXomum5sk2l6Zggy8jc9Z/NCBQ0sKCXlX4.WLK/jtkMUpFloER7v3m/SkpkCrwztdF4krXcvHYWiFuAn/:17370:0:99999:7:::

 

 

这个先将密码写到/etc/passwd里面之后将密码写到/etc/shadow里面的过程是由系统自动完成的,这个过程是系统自动执行pwconv,将passwd里面的密码写到shadow里面。

 

在用户管理里面最重要的就是配置文件,了解了配置文件就可以在配置文件里面管理用户而不是通过命令行。如添加一个用户不需要使用useradd命令直接在配置文件里面进行用户的添加,而是用vi对配置文件进行修改添加用户。

 

在登入linux的时候对用户进行验证要填入用户账号这个是在/etc/passwd里面验证。对密码的验证就是在/etc/shadow里面进行验证。

 

 

最重要的就是用户配置文件。可以手动的对用户进行增加修改通过配置文件。

新用户信息文件:/etc/skel

所有新用户的信息配置文件都在这个目录下面,每次添加一个用户都会创建一个宿主目录。

[lu@localhost ~]$ ls -a /etc/skel

.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

 

[root@localhost lu]# useradd jack

[root@localhost lu]# ls -a /home/jack   宿主目录

.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

添加一个新用户在宿主目录下面会将skel里面的配置文件自动拷贝过去,手动创建用户也要将/etc/skel里面的配置文件拷贝到宿主目录里面就可以了。

 

 

 

补充:

修改用户家目录:cary这个用户的家目录之前是在根目录下面/cary,现在想迁移到/home/cary下面,下面是步骤

创建目录/home/hello
[root@server ~]# mkdir -p /home/cary

 

把原先/hello目录下的所有文件拷贝过来(.)

 如果用户之前家目录有配置文件,那么就将之前文件拷贝到新目录下面

[root@server ~]# ls -a /home/cary/

.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config

如果之前家目录下面没有什么配置文件

[root@server ~]# cp -a /etc/skel/.[^.]* /home/hello/

 

 

调整cary的家目录设置

[root@server ~]# usermod -d /home/cary    cary

[root@server ~]# grep cary /etc/passwd

cary:x:1007:1007::/home/cary:/bin/bash

 

修改家目录所有者和所在组

[root@server ~]# chown -R cary:cary  /home/cary/

[root@server ~]# ls -la /home/cary/

total 24

drwxr-xr-x.  4 cary cary 4096 Apr  9 13:17 .

drwxr-xr-x. 10 root root 4096 Apr  9 13:15 ..

-rw-------.  1 cary cary    5 Apr  9 13:15 .bash_history

-rw-r--r--.  1 cary cary   18 Apr  9 13:11 .bash_logout

-rw-r--r--.  1 cary cary  193 Apr  9 13:11 .bash_profile

-rw-r--r--.  1 cary cary  231 Apr  9 13:11 .bashrc

drwxrwxr-x.  3 cary cary   17 Apr  9 13:12 .cache

drwxrwxr-x.  3 cary cary   17 Apr  9 13:12 .config

 
useradd命令
1.创建用户vanilla
-c :添加全称
-p :设置密码,但是为了安全性,不进行设置
-s :指定shell,如果不指定默认使用/bin/bash
-d :指定家目录的位置,默认/home/vanilla

-u :指定uid , 200

-G :当创建vanilla用户之后,除了为用户创建vanilla组之外,还会加入togogo组,此时用户会属于两个组
-g togogo -G will: -g不会为vanilla创建私人组,只创建togogo组,加入togogo组,-G同时会加入wheel组

 

usermod命令
实例
改变用户的uid
usermod -u 111 username

改变用户的gid
usermod -g gid username

更改用户家目录
usermod -d /home/linux username

更改登录shell
usermod -s /sbin/nologin username

改变用户扩展组
usermod -G 扩展组名称 username
例:
[root@linux-01 ~]# usermod -G grp1 user1
[root@linux-01 ~]# id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),1012(grp1)

同时为用户user1添加两个扩展组:
usermod -G 扩展组1,扩展组2 username
例:
[root@linux-01 ~]# usermod -G grp1,grp2 user1
[root@linux-01 ~]# id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),1005(grp2),1012(grp1)

查看用户UID、GID和所属组:
#id username
例:
[root@linux-01 ~]# id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1)

 

passwd命令
使用 -n 选项设置密码更改的最短时间
在下面的例子中,grid用户必须果90天后更改密码。0表示用户可以在任何时候更改它的密码。
[root@Database1 skel]# passwd -n 3 grid
Adjusting aging data for user grid.
passwd: Success
[root@Database1 skel]# grep grid /etc/shadow
grid:$6$GVC/mrcu$huMUE9yftkuE.Rv0KrmZGTL1sbBXVHt0NlIy7D6BJtaOiFQGF/iXiQlpm0oj7fS16xQSGe/UC4pRXGSA9Xnll.:17675:3:30:7:4::


使用 -x 选项设置密码最大过期期限
在下面的例子中,grid用户15天后密码过期
[root@Database1 skel]# passwd -x  15 grid
Adjusting aging data for user grid.
passwd: Success
[root@Database1 skel]# grep grid /etc/shadow
grid:$6$GVC/mrcu$huMUE9yftkuE.Rv0KrmZGTL1sbBXVHt0NlIy7D6BJtaOiFQGF/iXiQlpm0oj7fS16xQSGe/UC4pRXGSA9Xnll.:17675:3:15:7:4::

-w 选项在 passwd 命令中用于设置用户的警告期限。这意味着,n天之后,他/她的密码将过期,即在过期前的几天提醒用户密码即将过期。
[root@Database1 skel]# passwd -w  4  grid 4天后密码将会过期
Adjusting aging data for user grid.
passwd: Success
[root@Database1 skel]# grep grid /etc/shadow
grid:$6$GVC/mrcu$huMUE9yftkuE.Rv0KrmZGTL1sbBXVHt0NlIy7D6BJtaOiFQGF/iXiQlpm0oj7fS16xQSGe/UC4pRXGSA9Xnll.:17675:3:15:4:4::


使用 -i 选项设置非活动时间

在 passwd 命令中使用 -i 选项用于设系统用户的非活动时间。当用户(我使用的是linuxtechi用户)密码过期后,用户再经过 n天后没有更改其密码,用户将不能登录。
[root@Database1 skel]# passwd -i 2 grid   2在密码过期的2天之内没有更改密码,两天后用户不能登入
Adjusting aging data for user grid.
passwd: Success
[root@Database1 skel]# grep grid /etc/shadow
grid:$6$GVC/mrcu$huMUE9yftkuE.Rv0KrmZGTL1sbBXVHt0NlIy7D6BJtaOiFQGF/iXiQlpm0oj7fS16xQSGe/UC4pRXGSA9Xnll.:17675:3:15:4:2::

-S选项查看用户密码的状态
[root@Database1 skel]# passwd -S grid
grid PS 2018-05-24 3 15 4 2 (Password set, SHA512 crypt.)采用SHA512对密码加密

-l和-u就不举例了,-l对账户的锁定,-u是对账户的解锁
--------------------- 
作者:风流搞技术 
来源:CSDN 
原文:https://blog.csdn.net/qq_34556414/article/details/81275429 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值