在/etc/passwd中得到普通用户列表


/etc/passwd文件用来保存系统中当前所有的用户信息,该文件对所有用户都可见。在该文件中,每行信息代表一个用户。每个用户的信息由7部分组成:

用户名:加密后的用户密码:用户ID(UID):用户所在组ID(GID):用户全名以及用户信息:用户主目录:该用户登录时所用的命令解释器

在该文件中,有些用户并不是用户建立的,而是系统帐号。比如在上述passwd文件中,sys、bin等用户就是系统所保留的用户。

edsionte@edsionte-desktop:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
…………
guest:x:1001:1001:guest,,,,:/home/guest:/bin/bash
lc:x:1002:1002:lc,,,,:/home/lc:/bin/bash

现在有一个项目需求,即从/etc/passwd文件中将普通用户的用户名解析出来。要完成这个要求,关键是找出系统用户和普通用户之间的差别。在useradd命令的man手册中关于-u选项有这样的描述:

-u uid 使 用 者 的 ID 值 。 必 须 为 唯 一 的 ID 值 , 除 非 用 -o 选 项 。 数 字 不 可 为 负 值。预设 为 最 小 不 得 小 于 999 而 逐 次 增 加 。 0~ 999 传 统 上 是 保 留 给 系 统 帐 号 使 用。

因此,可以通过UID来区分普通用户和系统用户,即UID大于999的为普通用户,否则为系统用户。

相关内容