4.2 与用户和组管理相关的文件
与用户管理相关的文件有/etc/passwd、/etc/shadow、/etc/group、/etc/login.defs、/etc/default/useradd等,用于对用户设置和登录项目进行控制。
4.2.1 /etc/passwd
/etc/passwd是系统用户数据库文件,它包括系统内所有已经注册用户的信息。该文件是一个文本文件,它的每一行描述一个用户的信息,为由“:”分隔的七个字段。结构为:
username:[password]:uid:gid:[comment]:dir:[shell]
username:用户名,必须以字符开始,不要使用大写字母。
password:密码。在Linux系统中此项一般设置为“x”,用于表示使用影子密码,此时密码在/etc/shadow文件中。
uid:用户标志号。不同的UNIX/Linux系统,该项的取值范围可能不同,在Linux系统中,该项的取值范围在/etc/login.defs文件中定义。一般用户uid满足条件是UID_MIN uid 否UID_MAX。
gid:组标志号。说明同uid。
comment:说明域。一般包括用户的详细说明信息,如用户全称、住址、电话号等,此项内容中不能包含冒号,但可以为空。
dir:用户家目录($HOME),即用户登录成功后所在的工作目录。
shell:用户登录成功后所使用的shell程序,也可是用户实用程序,当为空时,系统默认的/bin/sh。如果想让用户登录后直接执行某个程序,如/usr/bin/my_shell,则可修改此项内容为/usr/bin/my_shell。若此项设置为一个不存在或不可执行的文件,则用户不能成功登录。
以下为/etc/passwd文件中的部分内容:
root:x:0:0:root, supper user:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
第一行是root用户的信息,用户名为root,uid和gid均为0,描述信息为“root,supper user”,家目录为/root,使用shell为/bin/bash。
在/etc/passwd内有很多用户,事实上它包含了系统内的所有用户。用户有很多类型,设置用户也有不同目的。有的是真实用户,可以用来登录系统,而有的则不能,但可用它的身份完成指定的任务。这种不能用于登录的用户被称为伪用户,伪用户的登录shell一般为nolgin。例如,daemon用户用于系统服务进程;bin用户拥有可执行的命令文件;lp用户被打印机子系统使用。
4.2.2 /etc/shadow
/etc/shadow是影子密码文件。当系统启用影子密码时,用于存放系统内用户加密后的密码和用户登录控制信息。其结构为:
username:password:lastchanged:min:max:warn:inactive:expired:resv
username:与passwd内容对应的用户名。
password:加密后的密码。若为空,表示无密码;当开头的两个字符为“!!”时,表示用户被上锁,现在不可使用。一般情况下,新创建的用户是被上锁的。
lastchanged:最后修改日期。从19700101到上次修改密码的间隔天数。
min:必须修改密码的剩余天数。
max:密码的最长有效天数。
warn:更换前警告的天数。
inactive:账号被取消激活前的天数。
expired:账号不活跃的天数。
resv:保留。
一般情况下,用户不需要直接操作/etc/shadow文件。
4.2.3 /etc/group
/etc/group是组定义文件。它是一个文本文件,每行描述一个组。结构为:
groupname:password:gid:userlist
groupname:组名。
password:组密码。如果此域为空,则不使用密码。在Linux系统中设置为“x”。可用gpasswd设置此密码,并由newgrp等命令使用。
gid:组标志号。
userlist:组成员,为以逗号分隔的用户名。
以下是/etc/group文件的一行:
bin:x:1:root,bin,deamon
说明组名为bin,gid为1,组员有root、bin和deamon。
4.2.4 /etc/login.defs
/etc/login.defs文件定义了与用户创建和密码管理相关的参数。其内容如下:
#grep -v "^#" /etc/login.defs MAIL_DIR /var/spool/mail #mail目录 PASS_MAX_DAYS 99999 #密码可用的最大天数 PASS_MIN_DAYS 0 #两次修改密码之间的最小天数 PASS_MIN_LEN 5 #密码最小长度 PASS_WARN_AGE 7 #密码到期前给出警告的天数 UID_MIN 500 #自动选择时的最小uid UID_MAX 60000 #自动选择时的最大uid GID_MIN 500 #自动选择时的最小gid GID_MAX 60000 #自动选择时的最大gid CREATE_HOME yes #在创建用户时,创建家目录
由文件的内容可知,在创建用户时默认创建家目录,因为CREATE_HOME为yes。若其值为no,则不创建,尽管已经指定了家目录。
4.2.5 其他文件
在不同UNIX/Linux系统的实现中,所使用的配置与管理文件可能是不同的。Linux中创建用户相关的文件有创建用户的默认信息文件/etc/default/useradd、框架目录/etc/skel和其他相关的配置文件。/etc/default/useradd是创建用户的默认属性参考值,而/etc/skel是一个框架目录,其中的内容都是隐藏的,当新用户创建后要将其中的文件和目录复制到新用户的家目录,并重新设置用户、用户组和权限,以作为新用户从不同界面登录时的默认配置。