您的位置:首页 > 其它

用户配置文件(passwd/shadow)

2015-09-13 14:21 141 查看
管理员工作,这是管理帐户的一个非常重要的组成部分。由于整个系统你在的管理, 和所有一般

郄用户帐号申请。所有的,他们会通过你的工作需要得到援助。所以,你需要知道他将如何管理服务器主机挈朋友

帐号! 在管理 Linux 主机的账号时,我们必须先了解一下 Linux 究竟是怎样增删每个使用者!

一、使用者标识符: UID 和 GID

尽管我们登入 Linux 主机的时候,输入的是我们癿账号。可是事实上 Linux 主机开机会直接识别到你账号名称的,他仅认识 数字ID (ID 就是一组号码)。 由于计算机尽认识0 和 1;至于账号是为了讥人们easy让忆而已。

而你的 ID 与账号的相应就在 /etc/passwd 文件里。

每个登入的使用者至少都会取得两个 ID ,一个是使用者 ID (User ID 。简称 UID)、一个是群组 ID (Group ID ,简称 GID)。那么文档怎样推断他的拥有者和群组呢?事实上就是利用 UID 和 GID 。每个档案都会有所谓的拥有者 ID 和拥有群组 ID ,当我们有要显示文件属性的需求时,系统会根据 /etc/passwd 和 /etc/group的内容。 找出 UID / GID 相应的账号和组名再显示出来!我们能够作个小实验,你能够用 root 癿身份vi /etc/passwd
。然后将你的一般身份的使用者的ID 随便改一个号码。然后再刡你的一般身份的文件夹

下看看原先该账号拥有的档案,你会发现该档案的拥有人变成了 数字!

演示样例:

# 1. 先察看一下。系统里面有没有一个名为 dmtsai 癿用户?

[root@www ~]# grep 'dmtsai' /etc/passwd

dmtsai:x:503:504::/home/dmtsai:/bin/bash

[root@www ~]# ll -d /home/dmtsai

drwx------ 4 dmtsai dmtsai 4096 Feb 6 18:25 /home/dmtsai

# 瞧一瞧,使用者的字段正是 dmtsai !

# 2. 改动一下,将刚刚我们癿 dmtsai 癿 503 UID 改为 2000 看看:

[root@www ~]# vi /etc/passwd

....(前面省略)....

dmtsai:x:2000:504::/home/dmtsai:/bin/bash <==改动一下特殊字体部分。由503 改成2000

[root@www ~]# ll -d /home/dmtsai

drwx------ 4 503 dmtsai 4096 Feb 6 18:25 /home/dmtsai

# 由于我们乱改。所以导致 503 找不到相应的账号,因此显示数字!

# 3. 让得将刚刚的2000 改回来!

[root@www ~]# vi /etc/passwd

....(前面省略)....

dmtsai:x:503:504::/home/dmtsai:/bin/bash

你一定要了解的是。上面的样例仅是在说明 UID 与账号的相应性,在一部正常运作的 Linux 主机环境下。上面的动作不可随便进行。 这是由于系统上已经有非常多的数据被建立存在了。任意改动系统上某些账号的 UID 非常可能会导致某些程序无法执行。这将导致系统无法顺利运作的结果。 由于权限的问题啊。

二、使用者账号

Linux 系统上面的用户假设须要登入主机以取得 shell 的环境来工作时,他须要怎样执行呢? 首先,他必须要在计算机前面调用 tty1~tty7 的终端机提供的 login 接口,并输入账号与password后才可以登入。 假设是透过网络的话,那至少使用者就得要学习 ssh 这个功能了 。 那当你输入账号、password后,系统帮你处理了什举呢?

1. 先找寻 /etc/passwd 里面是否有你输入的账号?假设没有则跳出,假设有的话则将该账号相应的

UID 与 GID (在 /etc/group 中) 读出来,另外。该账号的家文件夹与 shell 设定也一并读出;

2. 其次则是核对password表。这时 Linux 会进入 /etc/shadow 里面找出相应癿账号与 UID,然后核对一下你刚刚输入的password与里头的password是否相符?

3. 假设一切都 OK 的话,将进入 Shell 控管的阶段!

那么接下来我们介绍一下/etc/passwd、/etc/shadow

三、 /etc/passwd 档案结构

这个档案的构造是这种:每一行都代表一个账号。有几行就代表有几个账号在你的系统中。 只是需要特别留意的是,里头非常多账号本来就是系统正常运作所必需要的。我们能够简称他为系统账号, 比如bin, daemon, adm, nobody 等等,这些账号请不要任意的杀掉他!

这个档案的内容有点像这样

[root@www ~]# head -n 4 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

我们先来看一下每一个 Linux 系统都会有的第一行,就是 root 这个系统管理员那一行好了。 你能够明显的看出的。每一行使用『:』分隔开。共同拥有七个部分。各自是:

1. 账号名称:

就是账号。用来相应 UID 。比如 root 的 UID 相应就是 0 (第三字段);

2. password:

早期 Unix 系统的password就是放在这字段上!可是由于这个档案的特性是全部的程序都可以读取。这样一来非常easy造成password数据被窃取, 因此后来就将这个字段的password数据给他改放到/etc/shadow 中了。所以这里你会看到一个 * !

3. UID:

这个就是使用者标识符!通常 Linux 对于UID 有几个限限制须要说给您了解一下:

演示样例:id 范围 该 ID 使用者特性

0(系统管理员)

当UID 是 0 时,代表这个账号是系统管理员!

所以当你要让其它的账号名称也具有 root 癿权限时。将该账号的UID 改为 0 就可以。 这也就是说。一部系统上面的系统管理员不见得叧有 root !

只是。不建议有多个账号的UID 是 0 。

1~499(系统账号)

保留给系统使用的 ID,事实上除了 0 之外,其它的 UID 权限与特性并没有丌一样。

默认 500 下面的数字仅仅给系统作为保留账号仅仅是一个习惯。因为系统上面启动的服务希望使用较小的权限去运作,因此不希望使用 root 的身份去执行这些服务, 所以我们就得要提供这些执行中程序的拥有者账号才行。这些系统账号一般是不可登入癿, 所以才会有

/sbin/nologin 这个特殊的 shell 存在。

依据系统账号的由来,通常系统账号又约略被区分为两种:

1~99:由 distributions 自行建立的系统账号;

100~499:若用户有系统账号需求时,能够使用的账号 UID。

500~65535

(可登入账号)

给一般使用者用的。其实。眼下的 linux 核心 (2.6.x 版)已经能够支持到4294967295 (2^32-1) UID。

4. GID:

这个与 /etc/group 有关。事实上 /etc/group 与 /etc/passwd 差点儿相同,仅仅是他是用来规范组名与 GID 的相应而已!

6. 用户信息说明栏:

这个字段基本上幵没有什举重要用递,叧是用杢解释这个账号癿意丿而已!丌过,假设您提供使用 finger 癿功能时。 这个字段能够提供徆多癿讨息呢!

本章后面癿 chfn 挃令会杢解释这里的说明。

7. 家文件夹:

这是用户的家文件夹,以上面为例, root 的家文件夹在 /root 。所以当 root 登入之后,就会立马跑到 /root 文件夹里头。

8. Shell:

当用户登入系统后就会取得一个 Shell 来与系统的核心沟通,以进行用户的操作任务。那为何默认 shell 会使用 bash 呢?就是在这个字段指定的! 这里比較须要注意的是。有一个 shell 能够用来替代成让账号无法取得 shell 环境的登入动作!那就是/sbin/nologin 这个东西!

这也能够用来制作纯 pop 邮件账号者癿数据呢!

四、 /etc/shadow 档案结构

我们知道徆多程序癿运作都不权限有关,而权限不 UID/GID 有关!因此各程序弼然须要读取/etc/passwd 杢了解丌同账号癿权限。

因此 /etc/passwd 癿权限需训定为 -rw-r--r-- 这样癿情况, 尽管早期的password也有加密过。但即放置到 /etc/passwd 癿第二个字段上!这样一来非常easy被有心人士所窃取的, 加密过的password也可以透过暴力破解法去 try and error (试探) 找出来。由于这种关系,所以后来发展出将password存放到 /etc/shadow 这个档案分隔开来癿技术。 并且还增加非常多的password限令參数在
/etc/shadow 里头呢!在这里,我们先来了解一下这个档案的构造吧!

/etc/shadow 档案有点像这样:

[root@www ~]# head -n 4 /etc/shadow

root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7::: <==底

下说明用

bin:*:14126:0:99999:7:::

daemon:*:14126:0:99999:7:::

adm:*:14126:0:99999:7:::

基本上, shadow 相同以『:』作为分隔符。共同拥有九个字段,这九个字段的用途是这种:

1. 账号名称:

因为password也需要与账号相应,因此,这个档案的第一栏就是账号,必需要与/etc/passwd 同样才行!

2. password:

这个字段内的数据才是真正的password,并且是经过编码的password (加密) !

3. 近期更改password的日期:

这个字段记录了更改password那一天的日期。只是。这个是计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 而累加的日期。

1971 年 1 月 1 日则为 366 !

上述的 14126 指的就是 2008-09-04

那一天!

而想要了解该日期能够使用 chage 指令的帮忙!

至亍想要知道某个日期的累积日数。 可使用例如以下的程序计算:

[root@www ~]# echo $(($(date --date="2008/09/04" +%s)/86400+1))

14126

4. password不可被更动的天数:(与第 3 字段相比)

第四个字段记录了这个账号的password在近期一次被更改后须要经过几天才干够再被变更!假设是

0 的话, 表示password随时能够更改。

这的限令是为了怕password被某些人一改再改而设计的!如

果训定为 20 天的话,那么当你训定了password之后, 20 天内都无法改变这个password。

5. password须要又一次变更的天数:(与第 3 字段相比)

6. password须要变更期限前的警告天数:(与第 5 字段相比)

7. password过期后的账号宽限时间(password失效日):(与第 5 字段相比)

password有效日期为『更新日期(第 3 字段)』+『又一次变更日期(第 5 字段)』,过了该期限后用户依然

没有更新password,那该password就算过期了。

尽管password过期可是该账号还是能够用来进行行其它工作。

包含登入系统取得 bash 。只是假设password过期了, 那当你登入系统时,系统会强令要求你必需要

又一次设定password才干登入继续使用,这就是password过期特性。

8. 账号失效日期:

这个日期跟第三个字段一样,都是使用 1970 年以杢的总日数设定。这个字段表示: 这个账号在

此字段规定的日期之后,将无法再使用。 就是所谓的『账号失效』,此时不管你的password是否有过

期,这个『账号』都不能再被使用! 这个字段会被使用通常应该是在『收费服务』的系统中。你

能够设定一个日期让该账号不能再使用!

9. 保留:

最后一个字段是保留的,看以后有没有新功能增加。

演示样例:

假如我的 dmtsai 这个用户的password栏例如以下所看到的:

dmtsai:$1$vyUuj.eX$omt6lKJvMcIZHx4H7RI1V.:14299:5:60:7:5:14419:

先要注意的是 14299 是 2009/02/24 。所以 dmtsai 这个用户的password相关意义是:

因为password差点儿仅能单向运算(由明码计算成为password。无法由password反推回明码),因此由上表的数据

我们无法得知 dmstai 的实际password明文。

此账号近期一次更动password的日期是 2009/02/24 (14299)。

可以再次改动password的时间是 5 天以后,也就是 2009/03/01 曾经 dmtsai 不能改动自己的password;

假设用户还是尝试要更动自己的password。系统就会出现这种消息:

You must wait longer to change your password

passwd: Authentication token manipulation error

返回的消息中告诉我们:你必需要等待更久的时间才可以变更password!

由亍password过期日期定为 60 天后,累积日数为: 14299+60=14359。经过计算得到此日数代表日期为 2009/04/25。

这表示:使用者必需要在 2009/03/01 到 2009/04/25 之间的

60 天限内内去改动自己的password。若 2009/04/25 之后还是没有变更password时,该password就宣告为过期!

? 警告日期设为 7 天,即是password过期日前的7 天,在本例中则代表 2009/04/19 ~ 2009/04/25

这七天。 假设用户一直没有更改password,那么在这 7 天中,仅仅要 dmtsai 登入系统就会发现例如以下的

消息:

Warning: your password will expire in 5 days

假设该账号一直到 2009/04/25 都没有更改password,那么password就过期了。可是由亍有 5 天的宽限天

数, 因此 dmtsai 在 2009/04/30 前都还能够使用旧password登入主机。

只是登入时会出现强制更

改password的情况,画面有点像底下这样:

You are required to change your password immediately (password aged)

WARNING: Your password has expired.

You must change your password now and login again!

Changing password for user dmtsai.

Changing password for dmtsai

(current) UNIX password:

你必需要输入一次旧password以及两次新password后,才可以開始使用系统的各项资源。假设你是在2009/04/30 以后尝试以 dmtsai 登入的话,那举就会出现例如以下的错误消息而且无法登陆系统,由于此

时你的password失效去了、

Your account has expired; please contact your system administrator

假设使用者在 2009/04/25 曾经变更过password,那么第 3 个字段这 14299 的天数将跟随改变

更改,故, 所有的订购日期将按照相对位移!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: