用户账户文件
① /etc/passwd
通过指令vi/etc/passwd打开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
我们先来看一下每个Limux系统都会有的第一-行,就是root这个系统管理员那行,可以明显地看出来,每一行使用冒号分隔开,共有七个域。
(1)账号名称
账号名称用来对应UID.例如,root 的UID对应就是0
(2)口令
早期UNIX系统的口令就是放在这字段上。但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成口令 个数据被窃取,因此后来就将这个字段的口令数据改放到/etc/shadow中了。
(3)UID
这个就是使用者标识符。默认的系统管理员的UID为0,我们添加用户的时候最好使用1000以上的UID, 1~1 000范围的UID最好保留给系统用。
(4)GID
这个与/etc/group有关。其实/etc/ group的观念与/et/passwd差不多,只是它是用来规范组名与GID的对应而已。
(5)用户信息说明栏
这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已!不过,如果使用finger的功能时,这个字段可以提供很多的信息。
(6)家目录
这是用户的家目录,以上面为例,root 的家目录在/root,所以当root 登录之后,就会立刻跑到/root目录里。如果有个账号的使用空间特别大,你想要将该账号的家目录移动到其他的硬盘去该怎么做?可以在这个字段进行修改,默认的用户家目录在/home/ yourname。
(7)Shell
当用户登录系统后就会取得一个Shell 来与系统的核心沟通以进行用户的操作任务。那为何默认Shell会使用bash呢?就是在这个字段指定的!这里比较需要注意的是,有一个Shell可以用来替代成让账号无法取得Shell环境的登录动作,那就是/sbin/nologin,这也可以用来制作纯pop邮件账号者的数据。
②/etc/shadow
通过指令head-n 4 /etc/shadow列举passwd文件部分内容来看看:
bin: * :14126:0:99999:7:::
基本上,shadw 同样以冒号作为分隔符,如果数一 数,会发现共有九个字段,这九个字段的用途如下。
(1)账号名称
由于口令也需要与账号对应,因此,这个文件的第一栏就是账号, 必须要与/etelpasswd相同才行!
(2)口令
这个字段内的数据才是真正的口令,而且是经过编码的口令(加密)。需要特别留意的是,虽然这些加密过的口令很难被解出来,但是很难不等于不会,所以,这个文件的默认权限是“rw — — — — — — —”或者是“— r — — — — — — — — ”亦即只有root才可以读写。
另外,由于各种口令编码的技术不一样,因此不同的编码系统会造成这个字段的长度不相同。举例来说,旧式的DES编码系统产生的口令长度就与目前惯用的MD5不同。MD5的口令长度明显比较长。由于固定的编码系统产生的口令长度必须一致,因此当你让这个字段的长度改变后,该口令就会失效(算不出来)。很多软件透过这个功能,在此字段前加上!或*改变口令字段长度,就会让口令暂时失效了。
(3)最近更改口令的日期
这个字段记录了“更改口令那一天”的日期,不过,很奇怪呀!在例子中怎么会是14126呢?这是因为计算Linux日期的时间是以1970年1月1日作为1而累加的日期,1971年1月1日则为366啦!得注意一下这个数据。上述的14126指的就是2008-09-04那一一天。而想要了解该日期可以使用本章后面chage命令的帮忙!至于想要知道某个日期的累积日数,可使用如下的程序计算:
[root@localhost~]# echo $ (( $ (date— —"date=2008/09/04"十%s)/86400+1))
14126
上述命令中,2008/09/04 为你想要计算的日期,86400 为每一天的秒数,%s为1970/01/01以来的累积总秒数。由于bash仅支持整数,因此最终需要加上1补齐1970/01/01当天。
(4)口令不可被更动的天数(与第三字段相比)
第4个字段记录了这个账号的口令在最近次被更改后需 要经过几天才可以再被变更!如果是0的话,表示口令随时可以更改。这的限制是为了怕口令被某些人一改再改而设计的!如果配置为20天的话,那么当你配置了口令之后,20天之内都无法改变这个口令。
(5)口令需要重新变更的天数(与第三字段相比)。
经常变更口仓是个好习惯!为了强制要求用户变重口令,这个字段可以指定在最近一次更改口令后,在多少天数内需要再次变更口令才行。你必须要在这个天数内重新配置你的口令,否则这个账号的口令将会“变为过 期特性”。而如果像99999 (计算为273年)的话,那就表示口令的变更没有 强制性。
(6)口令需要变更期限前的警告天数(与第5字段相比)。
当账号的口令有效期限快要到的时候(第5字段),系统会依据这个字段的配置,发出警告给这个账号,提醒“再过n天你的口令就要过期了,请尽快重新配置你的口令”,如上面的例子,则是口令到期之前的7天之内,系统会警告该用户。
(7)口令过期后的账号宽限时间(口令失效日) (与第5字段相比)。
口令有效日期为“升级日期(第3字段)”+“重新变更日期(第5段)”,过了该期限后用户依旧没有升级口令,那该口令就算过期了。虽然口令过期但是该账号还是可以用来进行其他工作的,包括登录系统取得bash。不过如果口令过期了,那当你登录系统时,系统会强制要求你必须要重新配置口令才能登录继续使用,这就是口令过期特性。
这个字段的功能是在口令过期几天后,如果使用者还是没有登录更改口令,那么这个账号的口令将会失效,亦即该账号再也无法使用该口令登录了。要注意口令过期与口令失效并不相同。
(8)账号失效日期。
这个日期跟第3个字段一样,都是使用1970年以来的总日数配置。这个字段表示:这个账号在此字段规定的日期之后,将无法再使用。就是所谓的账号失效,此时不论你的口令是否过期,这个账号都不能再被使用!这个字段会被使用通常应该是在收费服务的系统中,你可以规定一个日期让该账号不能再使用。
(9)保留。
最后一个字段是保留的,看以后有没有新功能加入。
/etc/passwd和/etc/shadow是Linux系统中管理用户账户的重要文件。/etc/passwd包含用户账号名称、UID、GID、用户信息、家目录和Shell等信息,以冒号分隔。/etc/shadow则包含更安全的口令信息,如口令更改日期、限制和到期设置,同样以冒号分隔。

677

被折叠的 条评论
为什么被折叠?



