2021-09-16--Linux-shadow文件

2021-09-16--Linux-shadow文件,第1张

1)/etc/shadow 概说;

/etc/shadow文件是/etc/passwd 的影子文件,这个文件并不由/etc/passwd 而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效期限等;这个文件只有root权限可以读取和 *** 作,权限如下:

-r-------- 1 root root 1.5K 10月 16 09:49 /etc/shadow

/etc/shadow 的权限不能随便改为其它用户可读,这样做是危险的。如果您发现这个文件的权限变成了其它用户组或用户可读了,要进行检查,以防系统安全问题的发生;

如果我们以普通用户查看这个文件时,应该什么也查看不到,提示是权限不够:

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

/etc/shadow: 权限不够

2)/etc/shadow 的内容分析;

/etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割;我们以如下的例子说明;

beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::

linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:

第一字段: 用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;

第二字段: 密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;

第三字段: 上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;

第四字段: 两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;

第五字段: 两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;

第六字段: 提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;

第七字段: 在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;

第八字段: 用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;

第九字段: 保留字段,目前为空,以备将来Linux发展之用;

在 Linux 中本地登录时会使用 shadow 认证机制。Shadow 是一种安全的用户密码管理方案,它将用户密码保存在单独的 shadow 文件中,并限制对密码文件的访问权限,从而增强系统的安全性。

在 Linux 中,当用户登录时,系统会首先验证用户的用户名和密码是否匹配。系统会读取 /etc/shadow 文件中的加密密码信息,并将用户输入的密码与之进行比较,如果匹配成功,则允许用户登录。否则,系统会拒绝用户登录请求。

需要注意的是,为了保护系统的安全, /etc/shadow 文件的访问权限被设置为仅允许超级用户访问。这意味着普通用户无法直接读取和修改 shadow 文件中的密码信息。同时,为了保护密码信息的安全,Linux 还提供了许多密码策略,例如密码长度、密码复杂度、密码失效时间等,以提高系统的安全性。

总之,Linux 使用 shadow 作为本地登录的认证机制,这一机制可以提高系统的安全性,保护用户密码信息的安全。

以下为干货。

shadow文件中第二列的格式,它是加密后的密码,它有些玄机,不同的特殊字符表示特殊的意义:

①.该列留空,即"::",表示该用户没有密码。

②.该列为"!",即":!:",表示该用户被锁,被锁将无法登陆,但是可能其他的登录方式是不受限制的,如ssh公钥认证的方式,su的方式。

③.该列为"*",即":*:",也表示该用户被锁,和"!"效果是一样的。

④.该列以"!"或"!!"开头,则也表示该用户被锁。

⑤.该列为"!!",即":!!:",表示该用户从来没设置过密码。

⑥.如果格式为"$id$salt$hashed",则表示该用户密码正常。其中$id$的id表示密码的加密算法,$1$表示使用MD5算法,$2a$表示使用Blowfish算法,"$2y$"是另一算法长度的Blowfish,"$5$"表示SHA-256算法,而"$6$"表示SHA-512算法,目前基本上都使用sha-512算法的,但无论是md5还是sha-256都仍然支持。$salt$是加密时使用的salt,hashed才是真正的密码部分。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/6128611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存