小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-05-13 / 14 阅读
0
0

Linux /etc/shadow | /etc/passwd 详解

在Linux操作系统中,/etc/shadow 文件用于存储用户的密码信息,这是一个重要的系统安全文件。由于密码信息是敏感的,/etc/shadow 文件的权限设置非常严格,通常只有root用户可以读取和修改它。

文件结构

/etc/shadow 文件中的每一行代表一个用户账号的密码信息,各个字段使用 :分隔,通常包括以下信息:

  1. 用户名:与 /etc/passwd 中的用户名相对应。
  2. 加密密码:用户的加密密码。如果这一字段为 !*,表示用户无法登录。如果为空,表示用户无需密码即可登录。
  3. 上次密码修改时间:自1970年1月1日以来的天数。
  4. 密码最小天数:从上次修改密码后,需要经过多少天才可以再次修改密码。
  5. 密码最大天数:密码使用多少天后必须更改密码。
  6. 密码警告天数:在密码过期前多少天提醒用户更改密码。
  7. 密码禁用天数:密码过期后,账户被禁用的天数。
  8. 账号过期时间:自1970年1月1日以来的天数,表示账号在此之后将无法使用。
  9. 保留字段:目前未使用。

例子

下面是一个 /etc/shadow 文件的示例行:

root:$6$rounds=656000$J9rLl5R6AK3lcl9$wvLx7Z7e9ltk6V4lG.2j2GhG5i2Tq0ja4/.a7bbNeX7/4qK6E2jDzj5Ou7ZsG4Y5/.HqVYDpG4W4FwZ1bQ3.:18453:0:99999:7:::

这个例子表示的是root用户的密码信息:

  • 用户名:root
  • 加密密码:$6$rounds=656000$J9rLl5R6AK3lcl9$wvLx7Z7e9ltk6V4lG.2j2GhG5i2Tq0ja4/.a7bbNeX7/4qK6E2jDzj5Ou7ZsG4Y5/.HqVYDpG4W4FwZ1bQ3.(使用了SHA-512算法)
  • 上次密码修改时间:18453(表示从1970年1月1日开始的第18453天)
  • 密码最小天数:0(可以立即更改密码)
  • 密码最大天数:99999(密码几乎永不过期)
  • 密码警告天数:7(在密码过期前7天警告用户)
  • 密码禁用天数:未设置
  • 账号过期时间:未设置
  • 保留字段:未设置

综合应用

在实际应用中,系统管理员会使用各种命令来管理 /etc/shadow 文件中的密码策略。例如,使用 passwd 命令可以更改用户的密码,chage 命令可以更改密码策略,如最小天数、最大天数等。
例如,要设置用户 john 的密码最短使用期限为5天,最常使用期限为60天,可以使用以下命令:

sudo chage -m 5 -M 60 john

要检查用户 john 的密码信息,可以使用以下命令:

sudo passwd -S john

请注意,操作 /etc/shadow 文件需要具有相应的权限,通常只有root用户可以执行这些操作。在执行这些操作时,应

在Linux系统中,/etc/passwd 文件是一个文本文件,它包含了系统上所有用户账户的信息。这个文件对系统上的所有用户都是可读的,因为它不包含密码信息(出于安全原因,密码信息存储在 /etc/shadow 文件中)。

文件结构

/etc/passwd 文件中的每一行代表一个用户账户,各个字段使用 : 分隔,通常包括以下信息:

  1. 用户名:用户登录时使用的名称。
  2. 加密密码:在早期的Linux系统中,密码会存储在这里,但现在通常是一个 x,表示密码信息存储在 /etc/shadow 文件中。
  3. 用户ID(UID):用户的数字标识符,用于系统内部识别用户。
  4. 用户组ID(GID):用户所属的主组的数字标识符。
  5. 用户全名或描述:用户的注释信息,通常包括全名。
  6. 家目录:用户登录后所在的目录。
  7. 登录Shell:用户登录后使用的Shell程序。

例子

下面是一个 /etc/passwd 文件的示例行:

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

这个例子表示的是root用户的账户信息:

  • 用户名:root
  • 加密密码:x(密码在 /etc/shadow 文件中)
  • 用户ID(UID):0(root用户的UID通常是0)
  • 用户组ID(GID):0(root用户所属的主组ID通常是0)
  • 用户全名或描述:root
  • 家目录:/root
  • 登录Shell:/bin/bash

综合应用

/etc/passwd 文件是Linux系统管理用户账户的一个重要文件。系统管理员可以使用各种命令来查看和管理这个文件中的信息。
例如,要查看系统上所有用户的列表,可以使用以下命令:

cat /etc/passwd | cut -d ':' -f 1

要添加一个新的用户账户,可以使用 useradd 命令:

sudo useradd -m -s /bin/bash newuser

这条命令会创建一个名为 newuser 的新用户,并为其创建家目录和设置 /bin/bash 作为默认的Shell。
要删除一个用户账户,可以使用 userdel 命令:

sudo userdel -r newuser

这条命令会删除名为 newuser 的用户账户及其家目录。
请注意,操作 /etc/passwd 文件通常需要管理员权限。在执行这些操作时,应

/etc/shadow密码详解

在Linux系统中,/etc/shadow 文件用于存储用户的密码信息,这个文件只有root用户可以读取。文件中的每一行代表一个用户,每行由多个字段组成,字段之间用冒号(:)分隔。下面是 /etc/shadow文件中一个典型用户密码行的格式:

username:password:last_password_change:minimum_password_age:maximum_password_age:password_warning_period:account_expiration:reserved

下面是对每个字段的解释:

  1. username: 用户名,与 /etc/passwd中的用户名相对应。
  2. password: 加密后的密码或密码标记。密码字段可能包含多种不同的字符,这些字符有不同的含义:
    • !*:表示该账号被锁定,无法使用。
    • !!:表示该账号没有密码,通常用于禁止用户登录。
    • $ 后跟加密算法标识和加密的密码字符串:这是最常见的格式,表示密码已被加密。常见的加密算法有 $1$(MD5)、$2a$(Blowfish)、$5$(SHA-256)和 $6$(SHA-512)。
  3. last_password_change: 表示自1970年1月1日(UTC)起,密码最后一次被更改的天数。
  4. minimum_password_age: 密码被更改后,需要等待多少天才能再次更改密码。
  5. maximum_password_age: 密码的有效期,从最后一次更改密码开始计算,到达这个天数后,用户将被要求更改密码。
  6. password_warning_period: 在密码过期前多少天开始警告用户。
  7. account_expiration: 账号将被禁用的日期,表示自1970年1月1日(UTC)起的天数。如果这个字段为空,表示账号永远不会过期。
  8. reserved: 保留字段,目前未使用。
    请注意,直接操作 /etc/shadow文件是非常危险的,因为这可能会导致系统安全问题或用户无法登录。通常,密码管理应该使用专门的命令,如 passwd,来进行操作。

评论