Linux /etc/shadow 文件

2023-10-30

基于 Linux 的系统以其强大的安全措施而闻名,可隔离敏感数据以确保最大限度地减少未经授权的访问。其中一项数据就是用户密码。与某些人的想法相反,这些密码不再以纯文本形式存储,甚至不再存储在 /etc/passwd 文件中。相反,它们以加密方式驻留在 /etc/shadow 文件中。本文深入探讨与 /etc/shadow 文件相关的结构、用途和实用程序。

一、背景和目的

在 Unix 早期,用户密码以加密形式存储在 /etc/passwd 文件中。然而,由于该文件必须是世界可读的才能允许各种系统实用程序运行,因此它带来了安全风险。攻击者可以轻松复制此文件并运行离线密码破解尝试。

为了减轻这种风险,引入了 /etc/shadow 文件。该文件以世界无法读取的格式存储加密的用户密码,从而减少敏感信息的暴露。

2. 文件结构

/etc/shadow 文件由与每个用户帐户相对应的行组成。典型的线路看起来像这样:


username:$6$KOhWkFd$K8B7:18333:0:99999:7:::
  

请参阅下面的屏幕截图以更好地理解:

Understanding the /etc/shadow File
Understanding the /etc/shadow File

/etc/shadow 文件中所有字段的基本概述如下:

  • 用户名:用户帐户的名称。
  • Encrypted password: The encrypted password for the user account. The encrypted password is stored using a one-way hashing function, so it is not possible to retrieve the original password from the encrypted version. The initial letters of the encrypted password tell about the encryption methods used to create the password.
    • $1$: MD5
    • $2a$:河豚
    • $2b$:河豚
    • $2y$:河豚
    • $5$:SHA-256
    • $6$:SHA-512
    • $y$: 是的加密
  • 上次密码更改(日期):用户上次更改密码的日期,表示为自 1970 年 1 月 1 日以来的天数。
  • 密码最短使用期限:允许用户再次更改密码之前必须经过的最短天数。
  • 密码最长使用期限:用户密码在必须更改之前的最大有效天数。
  • 密码警告期:设置用户密码到期之前用户将收到警告的天数。
  • 密码闲置期:不活动的天数,超过该天数后用户的密码将过期并且帐户将被锁定。
  • 帐户到期日期:用户帐户将被禁用的日期,表示为自 1970 年 1 月 1 日以来的天数。

请注意,/etc/shadow 文件只有 root 用户可读,因此普通用户无法查看该文件的内容或检索其他用户的加密密码。

3. 实用程序和命令

在开始之前,需要注意的是,修改/etc/影子应谨慎处理文件,因为任何错误都可能危及系统上用户帐户的安全。建议做好备份/etc/影子进行任何更改之前的文件。

  1. 更改用户密码
  2. 我们可以使用`passwd`允许我们更新密码并更新的命令/etc/影子文件。例如,要更改您自己帐户的密码,只需键入:

    passwd 
    

    要替换其他用户帐户的密码,我们可以使用以下命令:

    sudo passwd USERNAME 
    

  3. 设置密码时效
  4. 使用 passwd 命令设置密码时效是一个简单的过程。您需要做的就是打开终端窗口并输入以下命令:

    1
    2
    ## 句法
    passwd -l USERNAME -u NUMBER_OF_DAYS -x NUMBER_OF_DAYS

    将 USERNAME 替换为要为其密码设置时效的用户名。代替NUMBER_OF_DAYS您希望用户密码保持有效的天数。例如,如果您希望用户的密码在 90 天后过期,您可以使用以下命令:

    passwd -l USERNAME -u 90 -x 7 
    

    此命令会将密码最长生存期设置为 90 天,并将密码过期警告期设置为 7 天。

    设置密码时效规则后,您可以使用以下命令检查用户密码的状态:

    passwd -S USERNAME
    

    此命令将为您提供有关用户密码的信息,包括密码到期时间和最长密码生命周期。

4. 安全考虑

  • 文件权限:默认情况下,/etc/影子文件的权限设置为 0400 或-r--------。这意味着只有 root 用户才能读取该文件,从而确保加密的密码不会被窥探。
  • 加密,未散列:虽然术语“加密”很常用,但密码/etc/影子在技​​术上使用加密哈希算法进行哈希处理。这意味着它们无法反转回纯文本。哈希算法(例如SHA-512)被设计为计算密集型以抵御暴力攻击。
  • 账户锁定: 如前所述,一个`!` or `*`密码字段中的 表示帐户已被锁定。这对于创建不应通过密码登录访问的帐户非常有用。

结论

了解/etc/影子文件对于任何想要有效管理或保护 Linux 系统的人来说都是必不可少的。该文件在维护用户身份验证机密方面发挥着关键作用,因此需要小心处理。通过遵循最佳实践并确保只有授权人员才具有 root 访问权限,可以维护 Linux 系统的完整性和安全性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux /etc/shadow 文件 的相关文章

  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 使用 awk 读取文件并搜索另一个文件

    我正在读取一个文件 每行都有数字 我需要搜索另一个满足这些数字和其他条件的文件 我正在尝试使用 awk 来做到这一点 但遇到了问题 File a txt 1476 1477 1497 现在我需要打印第 12 列包含这些数字的行以及第 3 列
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 快速将阴影绘制到 uibezierpath

    我有一个奇怪的问题 尽管我确实阅读了很多有关如何执行此操作的教程 但最终结果仅显示贝塞尔线 而不显示任何阴影 我的代码非常简单 let borderLine UIBezierPath borderLine moveToPoint CGPoi
  • 如何使用 open with 语句打开文件

    我正在研究如何在 Python 中进行文件输入和输出 我编写了以下代码 将一个文件中的名称列表 每行一个 读取到另一个文件中 同时根据文件中的名称检查名称并将文本附加到文件中出现的位置 该代码有效 可以做得更好吗 我想用with open
  • 将 Eclipse 中的路径/文件名复制到剪贴板

    是否有将当前路径 文件复制到剪贴板的快捷方式 Just select the file tab and hit Ctrl C to copy file basename into clipboard Hit Alt Enter to bri
  • Android 自定义文件扩展名

    我希望我的 Android 应用程序能够通过蓝牙 电子邮件 wifi direct 等 标准共享方法 共享文件 我想将我的数据解析为具有自定义扩展名的文件 并通过某种共享方法 例如蓝牙 发送它 收件人应该能够打开该文件 然后我的应用程序启动
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • 如何将图片保存到文件中?

    我正在尝试使用标准意图来拍照 然后允许批准或重新拍摄 然后我想将图片保存到文件中 这是我正在使用的意图 Intent intent new Intent android provider MediaStore ACTION IMAGE CA
  • 检查文件是否要上传?代码点火器

    我有一个带有很少输入和一个文件输入的表单 我想检查文件输入是否为空 如果为空则不要尝试上传 如果不是则尝试上传 我尝试过这样的事情 upld file this gt upload gt data if empty upld file Up
  • python 打开相对文件夹中所有以.txt结尾的文件

    我需要打开并解析文件夹中的所有文件 但我必须使用相对路径 类似于 input files 我知道在 JavaScript 中你可以使用 path 库来解决这个问题 我怎样才能在Python中做到这一点 这样您就可以获得路径中的文件列表作为列
  • Python:使用Excel CSV文件仅读取某些列和行

    虽然我可以读取 csv 文件而不是读取整个文件 但如何仅打印某些行和列 想象一下这是 Excel A B C D E State Heart Disease Rate Stroke Death Rate HIV Diagnosis Rate
  • Java 扫描仪问题 (JFrame)

    我正在尝试使用扫描仪来编辑塔防游戏的级别 但是 它不会将级别 图块图像 更新为自定义文件的级别 0 是草 1 是石头 1 是什么都没有 等等 我发现了错误 但如何修复它 我需要添加 更改什么才能消除这个错误 java lang NullPo
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • MySQL学习笔记(基础篇)

    一 SQL语言的规则与规范 1 SQL大小写规范 建议遵守 MySQL 在 Windows 环境下是大小写不敏感 推荐采用统一的书写规范 数据库名 表名 表别名 字段名 字段别名等都小写 SQL 关键字 函数名 绑定变量等都大写 2 注释
  • spark端口作用配置及修改

    spark端口作用配置及修改 Master节点的web端口是8080 仅在 standalone模式使 配置方式在spark env sh加一行 export SPARK MASTER WEBUI PORT 8080 work节点的web端
  • 汇编指令对应的十六进制表示

    空 nop jmp 32位立即数 jmp a E9 a jmp 内存地址 jmp 0x8d8d3a FF25 0x8d8d3a jmp far 内存地址 jmp far 0x8d8d3a FF2D 0x8d8d3a 直接远跳 jmp 0x8
  • 外键SQL语句的编写

    学习目标 能够写出删除外键约束的SQL语句 1 外键约束作用 外键约束 对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证 数据如果不合法则更新和插入会失败 保证数据的有效性 2 对于已经存在的字段添加外键约束 为cls id字段
  • chatGPT之Python API启用上下文管理

    chatGPT已经爆火一段时间了 我想大多数的开发者都在默默的在开发和测试当中 可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧 为什么别人的机器人能联想之前的语料 而你的却像个每次都只如初见的高冷机器人 我也是参考
  • vue 开发插件二

    接上一篇 vue 开发插件 一 完善插件交互逻辑 插件讲究高度配置化 弹框提示的插件要始终保持一个 并且要保证上一个弹框已经关闭 处理配置参数 定义一个方法来接受弹框内容和配置进行处理参数 并且有默认的参数 同时判断显示隐藏 如果只是传入一
  • QT_QPalette、背景颜色

    catalog 设置主 子widget背景颜色 Obsolete setColor setBrush 设置背景颜色 设置主 子widget背景颜色 this palette setColor QPalette Window QColor r
  • 内部类访问权限

    内部类 一种隐藏和组织代码的模式 1 普通内部类拥有其外围类的所有元素的访问权 没有任何限制 2 静态内部类只能访问外部类的静态成员变量 class Outer static int x static class Inner void te
  • jQuery手记 —— jQuery 中 .attr() .prop() .data() 的区别

    未完待续
  • sed 将文件中的某一列与另一列互换

    使用sed 将文件中的某一列与另一列互换 我们将一个文件中的第1列和第2列互换 其实就是将每行的第1个字符和第2个字符互换 步骤 1 将每行文本拆分为 第1个字符 第2个字符 剩下的所有字符 三个部分 2 然后通过替换操作重排顺序为 2 1
  • WebMvcConfigurer实现跨域请求

    添加一个配置类WebMvcConfiguration 在类上添加 Configuration注解 实现WebMvcConfigurer Configuration public class WebMvcConfiguration imple
  • C#中Replace的用法

    使用sql replace 需要替换的 替换用的字段 var replace hello welcome to New York city Console WriteLine replace var chang replace Replac
  • 书签列表

    我自己的书签列表 guid root title index 0 dateAdded 1638246398224000 lastModified 1693836173694000 id 1 typeCode 2 type text x mo
  • 怎么把计算机上打印任务解除,如何终止打印机任务_如何停止打印机任务-win7之家...

    我们在使用打印的时候 会遇到打印机卡纸或者没纸的情况 但是打印机任务还在继续 是需要把打印任务给停止了 但有些用户还是不会终止打印任务 那么要如何终止打印机任务呢 下面小编给大家分享停止打印机任务的方法步骤 解决方法 方法一 1 右键点击桌
  • LoadRunner获取登录验证码

    原理很简单 用一个请求去刷新认证码返回页面 然后通过关联将返回的图片保存为硬盘的一个文件 然后用ocr去识别这个文件内容 保存结果到txt 最后用LR读这个文本就可以得到认证码 方法都是在网上搜的 但是本人经过实验验证成功了 代码如下 Ac
  • keyError:255 (Python连接数据库时)出错的解决办法:

    用Python连接数据库时的出现错误 解决办法 把pymysql包升级一下就好了 如果是用anaconda安装的Python 则在相应的环境中把pymysql 更新 update 一下
  • 如何在 AWS 实例上设置 WHM 和 cPanel

    WHM cPanel 是广泛用于 Linux 托管环境的基于 Web 的系统管理控制面板 要在AWS环境上使用WHM cPanel 我们将面临正常实例的问题 因此 我们更喜欢在aws中使用VPC 虚拟私有云 来安装WHM和cPanel服务器
  • 如何在 Debian 10 上安装 Google Cloud SDK

    谷歌云SDK提供了一组用于管理 Google Cloud Platform GCP 上托管的资源的工具 Cloud SDK 软件开发工具包 提供 gcloud gsutil 和 nd bq 命令 能够通过终端访问 Google Cloud
  • 如何在 Ubuntu 上安装和配置 Dovecot

    Dovecot 是一款开源 IMAP 和 POP3 电子邮件服务器 因其可靠性 可扩展性和易用性而被广泛使用 POP3 邮局协议 3 和 IMAP 互联网消息访问协议 都是用作消息访问代理的协议 这些协议用于从邮件服务器上的用户收件箱中获取
  • Linux /etc/shadow 文件

    基于 Linux 的系统以其强大的安全措施而闻名 可隔离敏感数据以确保最大限度地减少未经授权的访问 其中一项数据就是用户密码 与某些人的想法相反 这些密码不再以纯文本形式存储 甚至不再存储在 etc passwd 文件中 相反 它们以加密方