8.3 Linux /etc/passwd

简介: Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

首先我们来打开这个文件,看看到底包含哪些内容,执行命令如下:

[root@localhost ~]# vi /etc/passwd
\#查看一下文件内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...省略部分输出...

可以看到,/etc/passwd 文件中的内容非常规律,每行记录对应一个用户。

读者可能会问,Linux 系统中默认怎么会有这么多的用户?这些用户中的绝大多数是系统或服务正常运行所必需的用户,这种用户通常称为系统用户或伪用户。系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。

不仅如此,每行用户信息都以 ":" 作为分隔符,划分为 7 个字段,每个字段所表示的含义如下:

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

接下来,给大家逐个介绍这些字段。

用户名

用户名,就是一串代表用户身份的字符串。

前面讲过,用户名仅是为了方便用户记忆,Linux 系统是通过 UID 来识别用户身份,分配用户权限的。/etc/passwd 文件中就定义了用户名和 UID 之间的对应关系。

密码

"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中(下一节做详细介绍)。

在早期的 UNIX 中,这里保存的就是真正的加密密码串,但由于所有程序都能读取此文件,非常容易造成用户数据被窃取。

虽然密码是加密的,但是采用暴力破解的方式也是能够进行破解的。

因此,现在 Linux 系统把真正的加密密码串放置在 /etc/shadow 文件中,此文件只有 root 用户可以浏览和操作,这样就最大限度地保证了密码的安全。

需要注意的是,虽然 "x" 并不表示真正的密码,但也不能删除,如果删除了 "x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以的),除非特殊情况(如破解用户密码),这当然是不可行的。

UID

UID,也就是用户 ID。每个用户都有唯一的一个 UID,Linux 系统通过 UID 来识别不同的用户。

实际上,UID 就是一个 0~65535 之间的数,不同范围的数字表示不同的用户身份,具体如表 1 所示。

UID 范围 用户身份
0 超级用户。UID 为 0 就代表这个账号是管理员账号。在 Linux 中,如何把普通用户升级成管理员呢?只需把其他用户的 UID 修改为 0 就可以了,这一点和 Windows 是不同的。不过不建议建立多个管理员账号。
1~499 系统用户(伪用户)。也就是说,此范围的 UID 保留给系统使用。其中,1~99 用于系统自行创建的账号;100~499 分配给有系统账号需求的用户。 其实,除了 0 之外,其他的 UID 并无不同,这里只是默认 500 以下的数字给系统作为保留账户,只是一个公认的习惯而已。
500~65535 普通用户。通常这些 UID 已经足够用户使用了。但不够用也没关系,2.6.x 内核之后的 Linux 系统已经可以支持 232 个 UID 了。

GID

全称“Group ID”,简称“组ID”,表示用户初始组的组 ID 号。这里需要解释一下初始组和附加组的概念。

初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手工添加用户 lamp,在建立用户 lamp 的同时,就会建立 lamp 组作为 lamp 用户的初始组。

附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。

举例来说,刚刚的 lamp 用户除属于初始组 lamp 外,我又把它加入了 users 组,那么 lamp 用户同时属于 lamp 组和 users 组,其中 lamp 是初始组,users 是附加组。

当然,初始组和附加组的身份是可以修改的,但是我们在工作中不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。

需要注意的是,在 /etc/passwd 文件的第四个字段中看到的 ID 是这个用户的初始组。

描述性信息

这个字段并没有什么重要的用途,只是用来解释这个用户的意义而已。

主目录

也就是用户登录后有操作权限的访问目录,通常称为用户的主目录。

例如,root 超级管理员账户的主目录为 /root,普通用户的主目录为 /home/yourIDname,即在 /home/ 目录下建立和用户名相同的目录作为主目录,如 lamp 用户的主目录就是 /home/lamp/ 目录。

默认的Shell

Shell 就是 Linux 的命令解释器,是用户和 Linux 内核之间沟通的桥梁。

我们知道,用户登陆 Linux 系统后,通过使用 Linux 命令完成操作任务,但系统只认识类似 0101 的机器语言,这里就需要使用命令解释器。也就是说,Shell 命令解释器的功能就是将用户输入的命令转换成系统可以识别的机器语言。

通常情况下,Linux 系统默认使用的命令解释器是 bash(/bin/bash),当然还有其他命令解释器,例如 sh、csh 等。

在 /etc/passwd 文件中,大家可以把这个字段理解为用户登录之后所拥有的权限。如果这里使用的是 bash 命令解释器,就代表这个用户拥有权限范围内的所有权限。例如:

[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/bin/bash

我手工添加了 lamp 用户,它使用的是 bash 命令解释器,那么这个用户就可以使用普通用户的所有权限。

如果我把 lamp 用户的 Shell 命令解释器修改为 /sbin/nologin,那么,这个用户就不能登录了,例如:

[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/sbin/nologin

因为 /sbin/nologin 就是禁止登录的 Shell。同样,如果我在这里放入的系统命令,如 /usr/bin/passwd,例如:

[root@localhost ~]#vi /etc/passwd
lamp:x:502:502::/home/lamp:/usr/bin/passwd

那么这个用户可以登录,但登录之后就只能修改自己的密码。但是,这里不能随便写入和登陆没有关系的命令(如 ls),系统不会识别这些命令,同时也就意味着这个用户不能登录。

目录
相关文章
|
7月前
|
存储 运维 安全
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
在维护Linux系统的过程中,可能会遇到各种紧急情况,其中/etc/passwd文件的损坏是运维人员特别需要准备应对的一种情形。该文件作为Linux用户账户信息的核心存储,一旦遭到破坏,会直接导致用户无法登录,甚至系统服务失败。这次处理问题的记录会提供一个详细步骤,以帮助恢复损坏的/etc/passwd文件,从而快速解决登录失败危机。
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
|
6月前
|
存储 安全 Linux
在Linux中,`/etc/passwd` 和 `/etc/shadow` 文件分别有什么作用?
在Linux中,`/etc/passwd` 和 `/etc/shadow` 文件分别有什么作用?
|
6月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
176 2
|
6月前
|
存储 域名解析 网络协议
在Linux中,/usr和/etc目录的用途有什么?
在Linux中,/usr和/etc目录的用途有什么?
|
6月前
|
安全 Linux Shell
Linux服务器 /etc/pam.d目录下的文件都是什么作用?
【8月更文挑战第2天】Linux服务器 /etc/pam.d目录下的文件都是什么作用?
857 2
|
8月前
|
存储 安全 Linux
Linux passwd命令:守护账户安全的密钥
`passwd`命令是Linux中管理用户密码的关键工具,确保数据安全。它用于更改密码,采用加密存储,并有锁定/解锁账号、设置密码策略等功能。参数如`-d`删除密码,`-l`锁定账号,`-u`解锁。最佳实践包括定期更改复杂密码,保护root密码,谨慎使用无密码选项。了解和正确使用passwd是保障系统安全的重要步骤。
|
8月前
|
监控 网络协议 Ubuntu
Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓
Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓
1442 1
|
7月前
|
Linux
Linux系统时间不一致咋调,他显示的时区是UTC,第一步,su - 切换成root用户,rm -f /etc/localtime,ln -s /usr/share/zoneinfo/Asia/Sha
Linux系统时间不一致咋调,他显示的时区是UTC,第一步,su - 切换成root用户,rm -f /etc/localtime,ln -s /usr/share/zoneinfo/Asia/Sha
|
8月前
|
关系型数据库 MySQL Shell
深入了解Linux /etc/passwd文件
深入了解Linux /etc/passwd文件
429 0
|
Linux Go
linux中的usermod 修改用户、groupadd 新增组、groupdel 删除组、groupmod 修改组、cat /etc/group 查看创建了哪些组、文件权限类、rwx 作用文件和目录的不同解释、chmod改变权限、修改bigbig.txt文件使其所属主用户只有读权限、修改bigbig.txt文件使其所属组用户具有写权限
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做 了不同的规定。[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前 提条件是对该文件所在的目录有写权第一种方式变更权限 chmod [{ugoa}{±=}{rwx}] 文件或目录。经验技巧 u:所有者 g:所有组 o:其他人 a:所有人(
319 1
linux中的usermod 修改用户、groupadd 新增组、groupdel 删除组、groupmod 修改组、cat /etc/group 查看创建了哪些组、文件权限类、rwx 作用文件和目录的不同解释、chmod改变权限、修改bigbig.txt文件使其所属主用户只有读权限、修改bigbig.txt文件使其所属组用户具有写权限