[Linux]/etc/passwd 文件格式详解

今天发现 /etc/passwd 内容如下

#cat/etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:Systemdaemons:/etc:
bin:x:2:2:Ownerofsystemcommands:/bin:
sys:x:3:3:Ownerofsystemfiles:/usr/sys:

passwd 格式

/etc/passwd 中
一行记录对应着一个用户。
每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

用户名

代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

口令

一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于 /etc/passwd 文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了 shadow 技术,把真正的加密后的用户口令字存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”

用户标识号

是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

组标识号

记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

注释性描述

记录着用户的一些信息

主目录

也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

登录 shell

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

伪用户(psuedousers)

这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。
伪用户含义
bin拥有可执行的用户命令文件
sys拥有系统文件
adm拥有帐户文件
uucpUUCP使用
lplp或lpd子系统使用
nobodyNFS使用
拥有帐户文件
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit,cron,mail,usenet等,它们也都各自为相关的进程和文件所需要。

真正的密码(shadow)

由于Linux /etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,`/etc/passwd` 和 `/etc/shadow` 是两个重要的文件,用于存储用户账户信息和密码哈希值。我会分别对它们进行详细解释。 1. `/etc/passwd` 文件: `/etc/passwd` 是一个文本文件,包含了系统中所有用户账户的基本信息。每一行对应一个用户账户,字段之间使用冒号(:)进行分隔,例如: ``` username:password:UID:GID:gecos:home_dir:shell ``` - `username`:用户账户的登录名。 - `password`:用户账户的密码哈希值(现在已经被移至 `/etc/shadow` 文件中)。 - `UID`:用户账户的唯一标识符。 - `GID`:用户账户所属的主要组标识符。 - `gecos`:用户账户的一些额外信息,如全名、电话等(可以为空)。 - `home_dir`:用户账户的主目录。 - `shell`:用户账户的默认Shell程序。 注意:现在 `/etc/passwd` 中的 `password` 字段已经被 'x' 或者 '*' 取代,实际的密码哈希值被移至 `/etc/shadow` 文件中。 2. `/etc/shadow` 文件: `/etc/shadow` 是一个只有 root 用户可读的文件,用于存储用户账户的密码哈希值和一些其他安全相关的信息。每一个用户账户的信息占用一行,由冒号(:)分隔,如下所示: ``` username:password:lastchg:min:max:warn:inactive:expire:disable ``` - `username`:用户账户的登录名。 - `password`:用户账户的密码哈希值。 - `lastchg`:上次修改密码的日期(从1970年1月1日开始算起的天数)。 - `min`:两次修改密码之间所需的最小天数。 - `max`:密码有效期的最大天数。 - `warn`:提前多少天给用户发出密码过期警告。 - `inactive`:密码过期后多少天用户账户被禁用。 - `expire`:用户账户被禁用的日期(从1970年1月1日开始算起的天数)。 - `disable`:用户账户是否被禁用。 `/etc/shadow` 文件中的密码哈希值通常是经过加密且不可逆的,用于验证用户输入的密码是否正确。 总结:`/etc/passwd` 文件存储了用户账户的基本信息,而 `/etc/shadow` 文件存储了用户账户的密码哈希值和其他安全相关的信息。这样通过将密码哈希值存储在 `/etc/shadow` 中,能够增加系统的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值