为什么root下不能使用passwd命令_神奇的/etc/shadow文件和/etc/passwd文件

在/etc/passwd中保存着所有用户(包括系统管理员)的账号和基本信息,其中大部分都是伪用户,/etc/passwd对所有用户可读,只有系统管理员才可以修改。

其实早些时候加密后密码也是保存在passwd文件中的。
ls -l passwd shadow
-rw-r--r-- 1 root root 2543 7月 11 14:12 passwd
-rw-r----- 1 root shadow 1544 7月 11 14:12 shadow

可以看到passwd是对所有用户都可读,虽然密码加密过了但是这仍是一个安全隐患。所以将密码单独保存在/etc/shadow中,而shadow文件只有管理员才有读写权限

passwd文件

用head -2 passwd查看一下passwd的前两行

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

可以看到在/etc/passwd文件中的每一行都对应着一个用户,记录着这个用户的基本属性。每行又被“:”分隔开,其格式和具体含义如下:

用户名:口令:用户标识号(uid):组标识号(gid):备注:用户主目录:登录Shell

  • 用户标识号就是uid,系统内部用它来标识用户。组标识号就是gid,用来标识用户组,还有这里的gid是用户的初始组。
  • 用户名只是为了方便我们记忆,系统是通过uid来区分用户分配权限的。如果几个用户对应的用户标识号是一样的,系统内部会把它们视为同一个用户。
  • Linux把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,像“x”或者“*”。
  • Shell是Linux的命令解释器,用户和Linux内核之间沟通的桥梁。Shell命令解释器的功能就是将用户输入的命令转换成系统可以识别的语言。通常情况下,Linux系统默认使用的命令解释器是/bin/bash

以root用户为例:
root:x:0:0:root:/root:/bin/bash意味着root用户uid为0,gid为0,备注root,用户主目录为/root,shell类型为bash

我们同样可以通过passwd文件查看和修改用户信息,例如说:

1useradd tt #创建一个用户tt2vim /etc/passwd #在passwd文件中找到tt那一行,将uid改为03su - tt #转换成用户tt

用户tt变为了超级用户,在系统看来tt就是root用户,用userdel我删不掉(亲测,uid改了才删掉)。。。

可以用man 5 passwd来查看passwd的详细信息(当然是全英的)

shadow文件

查看一下shadow文件的前两行:
sudo head -2 /etc/shadow
root:$6$4OrZx9ie$yn7PSn.Q2DCK4l0dX94H0w0webV6WJV8RPFiZk0zkfIiktAzGMBS0kufBRm7gQyvTWYGwXKxrQxzKCji2sug/1:17990:0:99999:7:::
daemon:*:17937:0:99999:7:::

同passwd一样,一行代表一个用户,同样用“:”分隔。

文件中字段主要含义为:
登录名:加密口令:最后一次修改时间:最短存活时间:最大存活时间:警告时间:缓冲时间:失效时间:保留字段(并没有啥用)
下面介绍一下各个字段的具体含义:

  • 登录名就是用户名咯
  • shadow文件的密码部分由三个部分组成,由'$'分割,即$id$salt$encrypted。
    id表示用的哪种加密方法,最常见的3种加密方法有:
    1:MD5加密
    5:SHA-256加密
    6:SHA-512加密
    salt是加密参数,salt和明文密码通过加密函数产生密文encrypted,其实本质上来说salt就是一段随机字符串。
    如果口令字符串为*,代表帐号被锁定不能登录,如果字符串为!,则表示用户名被禁用。
  • “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。一般都是1970年1月1日。
  • “密码的最短存活时间”指的是两次修改口令之间所需的最小天数或者说冷却时间(滑稽),0表示随时可以更改。
  • “密码最多活多久”指的是口令保持有效的最大天数。99999表示不需要变更。
  • “警告时间”字段表示的是用户密码正式失效之前,系统会提前多少天来警告用户。
  • “缓冲时间”表示密码过期后的宽限天数,密码过期后,预留几天给账号修改密码。
  • “失效时间”期满后,该账号就不再是一个合法的账号了。
f55d4a145f7cc8508a8ac9f68a76d715.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值