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

2011年9月7日 由 edsionte 留言 »

/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的为普通用户,否则为系统用户。

后记:本文发出后,有几个朋友指出这个办法只适合ubuntu系统,因此希望大家注意使用范围。

广告位

11 条评论

  1. MgaMPKAy说道:

    其实但靠UID是区分不了的,/etc/login.defs和/etc/default/useradd还有adduser的参数都能影响、改新加用户的UID,不同的发行版有不同的默认设置,例如Fedora新加用户的UID是从500开始的(/etc/login.defs里设置)。Debian的UID分配就和文中的有点像,1000以下是系统用户。
    再仔细想普通用户、系统用户的概念也有问题。root是最高、其他都只是普通用户。“系统用户”也只是普通用户而已,只是可能没有建home目录等等。它们作用通常就是充分利用权限设置来运行程序,免得邪恶的人利用被运行程序的漏洞拿到root权限。

    [回复一下]

    edsionte 回复:

    @MgaMPKAy, 那应该按照什么标准来区分?

    [回复一下]

    MgaMPKAy 回复:

    @edsionte, 其实我也没什么好想法,根据shell和家目录可以分个大概,因为很少会无故污染/home的,用/sbin/nologin做shell的也不会是普通用户。
    适用于各种环境的方法还是太难了。
    或者可以看看GDM之类的是怎样得到用户列表的。

    [回复一下]

    edsionte 回复:

    @MgaMPKAy, 不过还是谢谢你,请问你认识我吗?

    [回复一下]

    MgaMPKAy 回复:

    @edsionte, 严格意义上来说,我是不认识你的。最初是看你的关于内核的文章,感觉很好,后来就订阅RSS了。

    [回复一下]

    edsionte 回复:

    @MgaMPKAy, 谢谢支持。你目前是工作还是上学呢?

  2. 李洋说道:

    支持MgaMPKAy的说法!

    [回复一下]

    edsionte 回复:

    @李洋, 那更好的办法是?

    [回复一下]

  3. 李洋说道:

    不同的平台是不一样的,但是RHEL家族系列的都是500(包括500)以后的都是普通用户。

    [回复一下]

    edsionte 回复:

    @李洋, 这里的普通用户和系统用户有什么使用上的区别,也就是说系统用户什么时候会用到?

    [回复一下]

    李洋 回复:

    @edsionte, 任何一个进程执行都需要权限的,开机了一系列系统的初始化,各种守护进程的执行,linux下各种服务的运行,都需要用户去给与这个权限!

    [回复一下]

发表回复

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key