网站地图

LINUX /etc/passwd 文件结构详解

创建时间:2013-11-29 20:46:30最后修改:2013-11-29 20:49:47

LINUX中/etc/passwd这个文件是用户账号存储的文件。
/etc/passwd的每一行都代表一个账号,有几行就代表该LINUX系统中有几个账号!
注:/etc/passwd里面有些账号是系统正常运行所必须的,是系统账号,例如 bin, daemon, adm, nobody 等等,这些账号不能随便删除!

从上图中可以看出/etc/passwd文件每一行的字段之间都是由冒号(:)分隔开的,共有7个字段:

1、用户名

2、密码

很早之前第二个字段是用来放用户密码的,但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成口令数据被窃取,因此后来就将这个字段的口令数据给他改放到 /etc/shadow 中了。所以这里你会看到一个“x”了。

3、UID
UID这个就是使用者标识符啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:

id 范围该 ID 使用者特性
0
(系统管理员)
当 UID 是 0 时,代表这个账号是『系统管理员』!所以当你要让其他的账号名称也具有 root 的权限时,将该账号的 UID 改为 0 即可。这也就是说,一部系统上面的系统管理员不见得只有 root 喔!不过,很不建议有多个账号的 UID 是 0 啦~
1~499
(系统账号)
保留给系统使用的 ID,其实除了 0 之外,其他的 UID 权限与特性并没有不一样。默认 500 以下的数字让给系统作为保留账号只是一个习惯。

由于系统上面启动的服务希望使用较小的权限去运行,因此不希望使用 root 的身份去运行这些服务,所以我们就得要提供这些运行中程序的拥有者账号才行。这些系统账号通常是不可登陆的,所以才会有/sbin/nologin 这个特殊的 shell 存在。

根据系统账号的由来,通常系统账号又约略被区分为两种:
1~99:由 distributions 自行创建的系统账号;
100~499:若用户有系统账号需求时,可以使用的账号 UID。
500~65535
(可登陆账号)
给一般使用者用的。事实上,目前的 linux 核心 (2.6.x 版)已经可以支持到4294967295 (2^32-1) 这么大的 UID 号码喔!

上面这样说明可以了解了吗?是的, UID 为 0 的时候,就是 root 呦!所以请特别留意一下你的 /etc/passwd 文件!

4、GID
这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范组名与 GID 的对应而已!

5、用户信息说明栏
这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已!不过,如果您提供使用 finger 的功能时,这个字段可以提供很多的信息呢!本章后面的 chfn 命令会来解释这里的说明。

6、用户HOME目录
这是用户的家目录,以上面为例, root 的家目录在 /root ,所以当 root 登陆之后,就会立刻跑到 /root 目录里头啦!呵呵!如果你有个账号的使用空间特别的大,你想要将该账号的家目录移动到其他的硬盘去该怎么作?没有错!可以在这个字段进行修改呦!默认的用户家目录在 /home/yourIDname

7、Shell
当用户登陆系统后就会取得一个 Shell来与系统的核心沟通以进行用户的操作任务。那为何默认 shell 会使用 bash 呢?就是在这个字段指定的啰!这里比较需要注意的是,有一个 shell 可以用来替代成让账号无法取得 shell 环境的登陆动作!那就是/sbin/nologin 这个东西!这也可以用来制作纯 pop 邮件账号者的数据呢!