linux中passwd文件详解
Linux系统中的/etc/passwd文件是用于存储用户账户信息的关键文件。每个用户在该文件中都有一个对应的记录行,由冒号(:)分隔为七个字段。这些字段分别包含以下信息: 1. 用户名(login_name):代表用户账号的字符串,一般由大小写字母和/或数字组成,长度不超过8个字符。登录名中不能包含冒号,因为它是字段分隔符。为避免混淆,最好不要包含点字符(.),且不使用连字符(-)和加号(+)打头。 2. 口令(passwd):尽管这个字段存放的是用户口令的加密串,但由于/etc/passwd文件对所有用户都是可读的,因此存在安全隐患。为了提高安全性,许多Linux系统会使用shadow技术,将加密后的用户口令字存放到/etc/shadow文件中,而/etc/passwd的口令字段中会存放一个特殊字符,如“x”或者“*”。 3. 用户标识号(UID):这是一个整数,系统内部用它来标识用户。UID为0通常代表超级用户root。1-99之间的UID保留给系统使用,普通用户从100开始。在Linux系统中,该界限通常是500。 4. 组标识号(GID):标识用户所属的用户组,对应的记录在/etc/group文件中。 5. 注释性描述(users):这个字段记录用户的一些个人情况,如真实姓名、电话、地址等,但并没有实际的用途。在不同的Linux系统中,这个字段的格式并没有统一,有的系统存放一段任意的注释性描述文字,如用作finger命令的输出。 6. 主目录(home_directory):用户的起始工作目录,即用户登录系统后所处的目录。通常情况下,各用户的主目录都被组织在同一个特定的目录下,目录名称通常与用户的登录名一致。用户对自己的主目录拥有读、写、执行(搜索)权限,而其他用户对该目录的访问权限则根据具体情况设置。 7. 登录Shell(Shell):用户登录后要启动一个进程,负责将用户操作传给内核,这个进程即为命令解释器或某个特定程序,即Shell。Linux有多种Shell可供选择,如sh、csh、ksh、tcsh、bash等。系统管理员可以根据系统情况和用户习惯为用户指定特定的Shell。如果没有指定Shell,系统默认使用/bin/sh作为登录Shell。登录Shell可以指定为某个特定程序(非命令解释器),这样可以限制用户仅能运行指定的应用程序,在该应用程序运行结束后,用户自动退出系统。 Linux系统中还包括一些系统账号,如daemon、bin等,它们有特殊的用途,通常用于系统管理。这些账号的口令通常用(x)表示,表明它们不能在登录时使用。此外,还有一些标准的伪用户,例如audit、cron、mail、usenet等,它们为相关的进程和文件所需要。 通过理解这些信息,系统管理员可以更好地完成用户管理工作,包括创建、修改以及删除用户账户,设置或更改用户登录Shell,以及管理特殊用途的系统账号和伪用户。