下面来介绍一下关于用户管理的/etc/passwd和/etc/shadow这两个个文件。
/etc/passwd的构造
它是一个纯文本文件,每行采用了相同的格式:
name:password:uid:gid:comment:home:shell ,如下面这段:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/sh
daemon:x:2:2:daemon:/sbin:/bin/sh
.............
说明:
--- 在这个文件中,每一行代表一个帐号,有几行就代表在系统中有几个帐号
--- 每一行使用“:”符合分割各项,共有7项,分别是:
1)“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)“口令”一些系统中,存放着加密后的用户口令字。。虽然这个字段存放的只是用户口令的加密串,不是 明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多 Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
3)“用户标识号”是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
4)“组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
5)“注释性描述”字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
6)“主目录”,也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell 是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
/etc/shadow的构造
为了系统的安全,linux对密码采用了“影子机制”,用户的密码被转存到/etc/shadow文件中,次文件只要root能读,而同时/etc/passwd的密码只保留x,这样最大限度保证密码的安全。
/etc/shadow文件的每行是8个冒号分割的9个域,格式如下:
username: passwd: lastchg: min: max: warn: inactive: expire: flag ,如下面这段:
root:$1$xkigrtllfgw4rhrm5nwQn:11979:7:::
bin:*:11979:0:99999:7:::
..................
其中:
和/etc/passwd一样,每行代表一个用户,使用符号“:”分割。
1、 username:用户名
2、 passwd:密码,如果为空,表示用户密码为空,如果是“*”,表示该用户有效但不能登录。
3、 lastchg:表示从1970年1月1日起到上次修改口令所经过的天数。
4、 min:表示两次修改口令之间至少经过的天数。
5、 max:表示口令还会有效的最大天数,如果是99999则表示永不过期。
6、 warn:表示口令失效前多少天内系统向用户发出警告。
7、 inactive:表示禁止登陆前用户名还有效的天数。
8、 expire:表示用户被禁止登陆的时间,其算法而3相同。
9、 flag:无意义,未使用,留做扩展。