用户管理文件
ls 命令可以查看目录中文件信息。
【命令格式】
ls [path name]
【常用选项】
无
【参数说明】
[path name]:路径名
以下是 ls 命令查看/etc 目录的执行结果:
# cd /etc/
# ls
passwd group shadow fs_init.sh qtenv.sh qtln_4.8.6.sh startup.sh profile pointercal
SylixOS 中用户账号信息是由 /etc/passwd 和 /etc/shadow 文件共同维护的,用户组信息由 /etc/group 文件维护。在这三个文件中,每个用户都有一个相应的记录。当利用控制台等终端注册,按照系统提示输入用户名和密码后,系统会根据用户提供的用户名检查 /etc/passwd 文件,然后根据用户提供的密码,利用同一加密算法加密后再与 /etc/shadow 文件中的密码字段进行比较,同时检查其他诸如密码有效期等字段。如果通过了验证码,按照 /etc/passwd 文件指定的主目录和命令解释程序,用户即可进入自己的主目录。
除了用户名和密码外,每个用户的用户 ID、用户组 ID、主目录和命令解释程序等相关信息分别存放在/etc/passwd 和/etc/shadow 文件中。
/etc/passwd 文件
/etc/passwd 文件包含了 SylixOS 中除密码之外的主要用户信息,每个用户信息占用一行,每一行由 7 个字段组成,字段之间以冒号“:”作为分隔符。/etc/passwd 文件的格式定义如下:
username:password:uid:gid:comment: login info:home_dir:login_shell
- username:用户名,由 2 个以上字符组成,在 SylixOS 中用户名唯一的。
- password:这个字段原为用户密码,但是密码现已移至 /etc/shadow 文件中。因此如果用户设有密码,这个字段将包含一个小写字母“x”,加密后的密码存储在 /etc/shadow 文件中,如果这个字段为“!!”,表示相应的用户无密码无法正常地注册到系统,如果这个字段内容不是以上两种情况,则表示相应的用户为禁止状态。
- uid:用户 ID(用户标识),用户 ID 是系统分配给每个用户的唯一数字标识,是系统识别每个用户的主要手段。当系统需要了解用户信息(如账号字段的内容)时,通常均以用户 ID 作为索引,检索/etc/passwd 文件。用户 ID 是一个 32 位的无符号整数,其中 0~99 保留为系统用户使用,自定义的普通用户 ID 应位于 100~60000 范围内。考虑到与其他系统的兼容性,SylixOS 建议使用 16 位无符号整数的最大值 65535 作为用户 ID 的上限。
- gid:用户组 ID(用户组标识),SylixOS 中的每个用户均应属于某个用户组,每个用户组除组名之外,也有一个相应的用户组 ID。同样,ID 号 0~99 保留为系统用户使用。
- comment:注释信息,通常包含用户全名、用户职能等用户信息。
- login info:登录信息。
- home_dir:用户主目录(全路径名)。用户主目录是分配给用户的一个子目录,供用户存储个人文件使用,也是用户注册后的起始工作目录。通常,SylixOS 采用 /home/username 形式的用户主目录结构,其中 username 为注册的用户名。
- login_shell:指定用户注册后调用的 Shell(命令解释程序)。
这些字段包含在 <pwd.h> 中定义的 passwd 结构中,对应关系,如下表所示。
功能描述 | struct passwd 成员 | /etc/passwd字段 |
---|---|---|
用户名 | pw_name | username |
加密口令 | pw_passwd | password |
用户ID | pw_uid | uid |
用户组ID | pw_gid | gid |
注释 | pw_comment | comment |
登录信息 | pw_gecos | login info |
初始工作目录 | pw_dir | home_dir |
初始Shell | pw_shell | login_shell |
SylixOS 中 /etc/passwd 文件初始内容如下:
# cat passwd
root:x:0:0:root::/root:/bin/sh
sylixos:x:1:1:developer::/home/sylixos:/bin/sh
apps:x:2:2:application::/home/apps:/bin/sh
tty:!:3:3:tty owner::/home/tty:/bin/false
anonymous:!:4:4:anonymous user::/home/anonymous:/bin/false
/etc/shadow 文件
/etc/shadow 是一个限制普通用户访问的系统文件,其中存有加密形式的密码以及其他相关的信息。与 /etc/passwd 文件相对应,/etc/shadow 文件中的每个用户密码信息占用一行,每行由 9 个字段组成,其中以冒号“:”作为分隔符。其文件格式定义如下:
username:password:lastchanged:mindays:maxdays:warn:inactive:expire:reserve
- username:用户名,参见 /etc/passwd 文件相应部分。
- password:加密形式的密码(crypt_safe 函数生成)。如果这个字段为“!!”,则表示相应的用户没有设置密码。
- lastchanged:从 1970 年 1 月 1 日开始算起,直至最后一次修改密码之日的天数。
- mindays:保持密码稳定不变的最小天数,仅当超过此限,才能修改密码。这个字段必须大于等于 0,才能启用密码有效期检查。
- maxdays:保持密码有效的最大天数。超过此限,系统将会强制提醒用户更换密码。
- warn:指定在密码有效期到期之前需要提前多少天向用户发出警告信息。
- inactive:指定在密码有效期到期之后一直不能访问系统,但仍保证其账号信息有效的最多天数,超过此限将禁用此用户的账号。
- expire:指定用户账号有效期的截止日期。到期后,账号将自动失效,用户无法再注册到系统。
- reserve:保留字段。
这些字段包含在 < shadow.h> 中定义的 spwd 结构中,对应关系,如下表所示。
功能描述 | struct spwd成员 | /etc/shadow字段 |
---|---|---|
用户名 | sp_namp | username |
加密口令 | sp_pwdp | password |
上次更改口令以来经过的时间 | sp_lstchg | lastchanged |
经过多少天后允许更改 | sp_min | mindays |
要求更改剩余天数 | sp_max | maxdays |
到期警告天数 | sp_warn | warn |
账户不活动之前剩余天数 | sp_inact | inactive |
账户到期天数 | sp_expire | expire |
保留 | sp_flag | reserve |
SylixOS 中 /etc/shadow 文件初始内容如下:
# cat shadow
root:$1$qY9g/6K4$/FKP3w1BsziKGCP3uLDnG.:0:0:99999:7:::
sylixos:$1$qY9g/6K4$WFEx17sxu/3aL3wE.u8NZ1:0:0:99999:7:::
apps:$1$qY9g/6K4$buV57yqE0kMbApOVI/jKM1:0:0:99999:7:::
anonymous:!!:0:0:99999:7:::
/etc/group 文件
/etc/group 文件包含用户组信息,每个用户组信息占用一行,每一行由 3 个字段组成,字段之间以冒号“:”作为分隔符。/etc/group 文件的格式定义如下:
username:password:gid:members
- username:用户名,由 2 个以上字符组成,在 SylixOS 中用户名是唯一的。
- password:这个字段原为用户密码,但是密码现已移至 /etc/shadow 文件中。因此,如果用户设有密码,这个字段将包含一个小写字母“x”,加密后的密码存储在/etc/shadow 文件中,如果这个字段为“!!”,表示相应的用户无密码无法正常地注册到系统,如果这个字段内容不是以上两种情况,则表示相应的用户为禁止状态。
- gid:用户组 ID(用户组标识),SylixOS 中的每个用户均应属于某个用户组,每个用户组除组名之外,也有一个相应的用户组 ID。同样,ID 号 0~99 保留为系统用户使用。
- members:此用户组的用户成员。
这些字段包含在 < grp.h> 中定义的 group 结构中,对应关系,如下表所示。
功能描述 | struct passwd 成员 | /etc/passwd 字段 |
---|---|---|
用户名 | pw_name | username |
加密口令 | pw_passwd | password |
用户 ID | pw_uid | uid |
用户组 ID | pw_gid | gid |
注释 | pw_comment | comment |
登录信息 | pw_gecos | login info |
初始工作目录 | pw_dir | home_dir |
初始 Shell | pw_shell | login_shell |
SylixOS 中 /etc/group 文件初始内容如下:
# cat group
root:x:0:root
sylixos:x:1:sylixos
apps:x:2:apps,hanhui,sylixos
tty:x:3:tty
anonymous:x:4:anonymous