Linux账号管理与ACL权限设定.doc_第1页
Linux账号管理与ACL权限设定.doc_第2页
Linux账号管理与ACL权限设定.doc_第3页
Linux账号管理与ACL权限设定.doc_第4页
Linux账号管理与ACL权限设定.doc_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux 的账号与群组管理员的工作中,相当重要的一环就是管理账号啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦! 在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的!使用者识别码: UID 与 GID虽然我们登入 Linux 主机的时候,输入的是我们的账号,但是其实 Linux 主机并不会直接认识你的账号名称的,他仅认识 ID 啊 (ID 就是一组号码啦)。 由于计算机仅认识 0 与 1,所以主机对于数字比较有概念的;至于账号只是为了让人们容易记忆而已。 而你的 ID 与账号的对应就在 /etc/passwd 当中哩。Tips:如果你曾经在网络上下载过 tarball 类型的档案, 那么应该不难发现,在解压缩之后的档案中,档案拥有者的字段竟然显示不明的数字?奇怪吧?这没什么好奇怪的,因为 Linux 说实在话,他真的只认识代表你身份的号码而已! 那么到底有几种 ID 呢?还记得我们在第六章内有提到过, 每一个档案都具有拥有人与拥有群组的属性吗?没错啦每个登入的使用者至少都会取得两个 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 的用户?rootwww # grep dmtsai /etc/passwddmtsai:x:503:504:/home/dmtsai:/bin/bash =是有这个账号喔!rootwww # ll -d /home/dmtsaidrwx- 4 dmtsai dmtsai 4096 Feb 6 18:25 /home/dmtsai# 瞧一瞧,使用者的字段正是 dmtsai 本身喔!# 2. 修改一下,将刚刚我们的 dmtsai 的 503 UID 改为 2000 看看:rootwww # vi /etc/passwd.(前面省略).dmtsai:x:2000:504:/home/dmtsai:/bin/bash =修改一下特殊字体部分,由 503 改过来rootwww # ll -d /home/dmtsaidrwx- 4 503 dmtsai 4096 Feb 6 18:25 /home/dmtsai# 很害怕吧!怎么变成 503 了?因为档案只会记录数字而已!# 因为我们乱改,所以导致 503 找不到对应的账号,因此显示数字!# 3. 记得将刚刚的 2000 改回来!rootwww # vi /etc/passwd.(前面省略).dmtsai:x:503:504:/home/dmtsai:/bin/bash =赶紧改回来!你一定要了解的是,上面的例子仅是在说明 UID 与账号的对应性,在一部正常运作的 Linux 主机环境下,上面的动作不可随便进行, 这是因为系统上已经有很多的数据被建立存在了,随意修改系统上某些账号的 UID 很可能会导致某些程序无法进行,这将导致系统无法顺利运作的结果。 因为权限的问题啊!所以,了解了之后,请赶快回到 /etc/passwd 里面,将数字改回来喔!Tips:举例来说,如果上面的测试最后一个步骤没有将 2000 改回原本的 UID,那么当 dmtsai 下次登入时将没有办法进入自己的家目录! 因为他的 UID 已经改为 2000 ,但是他的家目录 (/home/dmtsai) 却记录的是 503 ,由于权限是 700 , 因此他将无法进入原本的家目录!是否非常严重啊? 使用者账号Linux 系统上面的使用者如果需要登入主机以取得 shell 的环境来工作时,他需要如何进行呢? 首先,他必须要在计算机前面利用 tty1tty7 的终端机提供的 login 接口,并输入账号与密码后才能够登入。 如果是透过网络的话,那至少使用者就得要学习 ssh 这个功能了 (服务器篇再来谈)。 那么你输入账号密码后,系统帮你处理了什么呢?1. 先找寻 /etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的 UID 与 GID (在 /etc/group 中) 读出来,另外,该账号的家目录与 shell 设定也一并读出;2. 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?3. 如果一切都 OK 的话,就进入 Shell 控管的阶段啰! 大致上的情况就像这样,所以当你要登入你的 Linux 主机的时候,那个 /etc/passwd 与 /etc/shadow 就必须要让系统读取啦 (这也是很多攻击者会将特殊账号写到 /etc/passwd 里头去的缘故),所以呢,如果你要备份 Linux 的系统的账号的话,那么这两个档案就一定需要备份才行呦!由上面的流程我们也知道,跟使用者账号有关的有两个非常重要的档案,一个是管理使用者 UID/GID 重要参数的 /etc/passwd ,一个则是专门管理密码相关数据的 /etc/shadow 啰!那这两个档案的内容就非常值得进行研究啦! 底下我们会简单的介绍这两个档案,详细的说明可以参考 man 5 passwd 及 man 5 shadow (注1)。 /etc/passwd 档案结构这个档案的构造是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中! 不过需要特别留意的是,里头很多账号本来就是系统正常运作所必须要的,我们可以简称他为系统账号, 例如 bin, daemon, adm, nobody 等等,这些账号请不要随意的杀掉他呢! 这个档案的内容有点像这样:Tips:鸟哥在接触 Linux 之前曾经碰过 Solaris 系统 (1999 年),当时鸟哥啥也不清楚!由于听说Linux 上面的账号越复杂会导致系统越危险!所以鸟哥就将 /etc/passwd 上面的账号全部删除到只剩下 root 与鸟哥自己用的一般账号!结果你猜发生什么事?那就是.呼叫升阳的工程师来维护系统 _!糗到一个不行!大家不要学啊! rootwww # head -n 4 /etc/passwdroot:x:0:0:root:/root:/bin/bash =等一下做为底下说明用bin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologin我们先来看一下每个 Linux 系统都会有的第一行,就是 root 这个系统管理员那一行好了, 你可以明显的看出来,每一行使用:分隔开,共有七个咚咚,分别是:1. 账号名称:就是账号啦!用来对应 UID 的。例如 root 的 UID 对应就是 0 (第三字段);2. 密码:早期 Unix 系统的密码就是放在这字段上!但是因为这个档案的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取, 因此后来就将这个字段的密码数据给他改放到 /etc/shadow 中了。所以这里你会看到一个 x ,呵呵!3. UID:这个就是使用者识别码啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:id 范围该 ID 使用者特性0(系统管理员)当 UID 是 0 时,代表这个账号是系统管理员! 所以当你要让其它的账号名称也具有 root 的权限时,将该账号的 UID 改为 0 即可。 这也就是说,一部系统上面的系统管理员不见得只有 root 喔! 不过,很不建议有多个账号的 UID 是 0 啦1499(系统账号)保留给系统使用的 ID,其实除了 0 之外,其它的 UID 权限与特性并没有不一样。预设 500 以下的数字让给系统作为保留账号只是一个习惯。由于系统上面启动的服务希望使用较小的权限去运作,因此不希望使用 root 的身份去执行这些服务, 所以我们就得要提供这些运作中程序的拥有者账号才行。这些系统账号通常是不可登入的, 所以才会有我们在第十一章提到的 /sbin/nologin 这个特殊的 shell 存在。根据系统账号的由来,通常系统账号又约略被区分为两种:199:由 distributions 自行建立的系统账号;100499:若使用者有系统账号需求时,可以使用的账号 UID。50065535(可登入账号)给一般使用者用的。事实上,目前的 linux 核心 (2.6.x 版)已经可以支持到 4294967295 (232-1) 这么大的 UID 号码喔!4. 上面这样说明可以了解了吗?是的, UID 为 0 的时候,就是 root 呦!所以请特别留意一下你的 /etc/passwd 档案!5. GID:这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范群组名称与 GID 的对应而已!6. 使用者信息说明栏:这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已!不过,如果您提供使用 finger 的功能时, 这个字段可以提供很多的讯息呢!本章后面的 chfn 指令会来解释这里的说明。7. 家目录:这是使用者的家目录,以上面为例, root 的家目录在 /root ,所以当 root 登入之后,就会立刻跑到 /root 目录里头啦!呵呵! 如果你有个账号的使用空间特别的大,你想要将该账号的家目录移动到其它的硬盘去该怎么作? 没有错!可以在这个字段进行修改呦!预设的使用者家目录在 /home/yourIDname8. Shell:我们在第十一章 BASH 提到很多次,当使用者登入系统后就会取得一个 Shell 来与系统的核心沟通以进行使用者的操作任务。那为何预设 shell 会使用 bash 呢?就是在这个字段指定的啰! 这里比较需要注意的是,有一个 shell 可以用来替代成让账号无法取得 shell 环境的登入动作!那就是 /sbin/nologin 这个东西!这也可以用来制作纯 pop 邮件账号者的数据呢! /etc/shadow 档案结构我们知道很多程序的运作都与权限有关,而权限与 UID/GID 有关!因此各程序当然需要读取 /etc/passwd 来了解不同账号的权限。 因此 /etc/passwd 的权限需设定为 -rw-r-r- 这样的情况, 虽然早期的密码也有加密过,但却放置到 /etc/passwd 的第二个字段上!这样一来很容易被有心人士所窃取的, 加密过的密码也能够透过暴力破解法去 try and error (试误) 找出来!因为这样的关系,所以后来发展出将密码移动到 /etc/shadow 这个档案分隔开来的技术, 而且还加入很多的密码限制参数在 /etc/shadow 里头呢!在这里,我们先来了解一下这个档案的构造吧! 鸟哥的 /etc/shadow 档案有点像这样:rootwww # head -n 4 /etc/shadowroot:$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. 账号名称:由于密码也需要与账号对应啊因此,这个档案的第一栏就是账号,必须要与 /etc/passwd 相同才行!2. 密码:这个字段内的数据才是真正的密码,而且是经过编码的密码 (加密) 啦! 你只会看到有一些特殊符号的字母就是了!需要特别留意的是,虽然这些加密过的密码很难被解出来, 但是很难不等于不会,所以,这个档案的预设权限是-rw-或者是-r-,亦即只有 root 才可以读写就是了!你得随时注意,不要不小心更动了这个档案的权限呢!另外,由于各种密码编码的技术不一样,因此不同的编码系统会造成这个字段的长度不相同。 举例来说,旧式的 DES 编码系统产生的密码长度就与目前惯用的 MD5 不同(注2)!MD5 的密码长度明显的比较长些。由于固定的编码系统产生的密码长度必须一致,因此当你让这个字段的长度改变后,该密码就会失效(算不出来)。 很多软件透过这个功能,在此字段前加上 ! 或 * 改变密码字段长度,就会让密码暂时失效了。 3. 最近更动密码的日期:这个字段记录了更动密码那一天的日期,不过,很奇怪呀!在我的例子中怎么会是 14126 呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 而累加的日期,1971 年 1 月 1 日则为 366 啦! 得注意一下这个资料呦!上述的 14126 指的就是 2008-09-04 那一天啦!了解乎? 而想要了解该日期可以使用本章后面 chage 指令的帮忙!至于想要知道某个日期的累积日数, 可使用如下的程序计算:rootwww # echo $($(date -date=2008/09/04 +%s)/86400+1)14126上述指令中,2008/09/04 为你想要计算的日期,86400 为每一天的秒数, %s 为 1970/01/01 以来的累积总秒数。 由于 bash 仅支持整数,因此最终需要加上 1 补齐 1970/01/01 当天。4. 密码不可被更动的天数:(与第 3 字段相比)第四个字段记录了:这个账号的密码在最近一次被更改后需要经过几天才可以再被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!5. 密码需要重新变更的天数:(与第 3 字段相比)经常变更密码是个好习惯!为了强制要求使用者变更密码,这个字段可以指定在最近一次更改密码后, 在多少天数内需要再次的变更密码才行。你必须要在这个天数内重新设定你的密码,否则这个账号的密码将会变为过期特性。 而如果像上面的 99999 (计算为 273 年) 的话,那就表示,呵呵,密码的变更没有强制性之意。6. 密码需要变更期限前的警告天数:(与第 5 字段相比)当账号的密码有效期限快要到的时候 (第 5 字段),系统会依据这个字段的设定,发出警告言论给这个账号,提醒他再过 n 天你的密码就要过期了,请尽快重新设定你的密码呦!,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。7. 密码过期后的账号宽限时间(密码失效日):(与第 5 字段相比)密码有效日期为更新日期(第3字段)+重新变更日期(第5字段),过了该期限后使用者依旧没有更新密码,那该密码就算过期了。 虽然密码过期但是该账号还是可以用来进行其它工作的,包括登入系统取得 bash 。不过如果密码过期了, 那当你登入系统时,系统会强制要求你必须要重新设定密码才能登入继续使用喔,这就是密码过期特性。那这个字段的功能是什么呢?是在密码过期几天后,如果使用者还是没有登入更改密码,那么这个账号的密码将会失效, 亦即该账号再也无法使用该密码登入了。要注意密码过期与密码失效并不相同。8. 账号失效日期:这个日期跟第三个字段一样,都是使用 1970 年以来的总日数设定。这个字段表示: 这个账号在此字段规定的日期之后,将无法再使用。 就是所谓的账号失效,此时不论你的密码是否有过期,这个账号都不能再被使用! 这个字段会被使用通常应该是在收费服务的系统中,你可以规定一个日期让该账号不能再使用啦!9. 保留:最后一个字段是保留的,看以后有没有新功能加入。 举个例子来说好了,假如我的 dmtsai 这个使用者的密码栏如下所示:dmtsai:$1$vyUuj.eX$omt6lKJvMcIZHx4H7RI1V.:14299:5:60:7:5:14419:这表示什么呢?先要注意的是 14299 是 2009/02/24 。所以 dmtsai 这个使用者的密码相关意义是: 由于密码几乎仅能单向运算(由明码计算成为密码,无法由密码反推回明码),因此由上表的数据我们无法得知 dmstai 的实际密码明文; 此账号最近一次更动密码的日期是 2009/02/24 (14299); 能够再次修改密码的时间是 5 天以后,也就是 2009/03/01 以前 dmtsai 不能修改自己的密码;如果使用者还是尝试要更动自己的密码,系统就会出现这样的讯息:You must wait longer to change your passwordpasswd: Authentication token manipulation error画面中告诉我们:你必须要等待更久的时间才能够变更密码之意啦! 由于密码过期日期定义为 60 天后,亦即累积日数为: 14299+60=14359,经过计算得到此日数代表日期为 2009/04/25。 这表示:使用者必须要在 2009/03/01 到 2009/04/25 之间的 60 天限制内去修改自己的密码,若 2009/04/25 之后还是没有变更密码时,该密码就宣告为过期了! 警告日期设为 7 天,亦即是密码过期日前的 7 天,在本例中则代表 2009/04/19 2009/04/25 这七天。 如果使用者一直没有更改密码,那么在这 7 天中,只要 dmtsai 登入系统就会发现如下的讯息:Warning: your password will expire in 5 days 如果该账号一直到 2009/04/25 都没有更改密码,那么密码就过期了。但是由于有 5 天的宽限天数, 因此 dmtsai 在 2009/04/30 前都还可以使用旧密码登入主机。 不过登入时会出现强制更改密码的情况,画面有点像底下这样: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:你必须要输入一次旧密码以及两次新密码后,才能够开始使用系统的各项资源。如果你是在 2009/04/30 以后尝试以 dmtsai 登入的话,那么就会出现如下的错误讯息且无法登入,因为此时你的密码就失效去啦!Your account has expired; please contact your system administrator 如果使用者在 2009/04/25 以前变更过密码,那么第 3 个字段的那个 14299 的天数就会跟着改变,因此, 所有的限制日期也会跟着相对变动喔!_ 无论使用者如何动作,到了 14419 (大约是 2009/07/24 左右) 该账号就失效了 透过这样的说明,您应该会比较容易理解了吧?由于 shadow 有这样的重要性,因此可不能随意修改喔! 但在某些情况底下你得要使用各种方法来处理这个档案的!举例来说,常常听到人家说:我的密码忘记了, 或者是我的密码不晓得被谁改过,跟原先的不一样了,这个时候怎么办? 一般用户的密码忘记了:这个最容易解决,请系统管理员帮忙, 他会重新设定好你的密码而不需要知道你的旧密码!利用 root 的身份使用 passwd 指令来处理即可。 root 密码忘记了:这就麻烦了!因为你无法使用 root 的身份登入了嘛! 但我们知道 root 的密码在 /etc/shadow 当中,因此你可以使用各种可行的方法开机进入 Linux 再去修改。 例如重新开机进入单人维护模式(第二十章)后,系统会主动的给予 root 权限的 bash 接口, 此时再以 passwd 修改密码即可;或以 Live CD 开机后挂载根目录去修改 /etc/shadow,将里面的 root 的密码字段清空, 再重新开机后 root 将不用密码即可登入!登入后再赶快以 passwd 指令去设定 root 密码即可。 Tips:曾经听过一则笑话,某位老师主要是在教授 Linux 操作系统,但是他是兼任的老师,因此对于该系的计算机环境不熟。 由于当初安装该计算机教室 Linux 操作系统的人员已经离职且找不到联络方式了,也就是说 root 密码已经没有人晓得了! 此时该老师就对学生说:在 Linux 里面 root 密码不见了,我们只能重新安装.感觉有点无力 又是个被 Windows 制约的人才! 关于群组: 有效与初始群组、groups, newgrp 认识了账号相关的两个档案 /etc/passwd 与 /etc/shadow 之后,你或许还是会觉得奇怪, 那么群组的设定档在哪里?还有,在 /etc/passwd 的第四栏不是所谓的 GID 吗?那又是啥? 呵呵此时就需要了解 /etc/group 与 /etc/gshadow 啰 /etc/group 档案结构这个档案就是在记录 GID 与群组名称的对应了鸟哥测试机的 /etc/group 内容有点像这样:rootwww # head -n 4 /etc/grouproot:x:0:rootbin:x:1:root,bin,daemondaemon:x:2:root,bin,daemonsys:x:3:root,bin,adm这个档案每一行代表一个群组,也是以冒号:作为字段的分隔符,共分为四栏,每一字段的意义是:1. 群组名称:就是群组名称啦!2. 群组密码:通常不需要设定,这个设定通常是给群组管理员使用的,目前很少有这个机会设定群组管理员啦! 同样的,密码已经移动到 /etc/gshadow 去,因此这个字段只会存在一个x而已;3. GID:就是群组的 ID 啊。我们 /etc/passwd 第四个字段使用的 GID 对应的群组名,就是由这里对应出来的!4. 此群组支持的账号名称:我们知道一个账号可以加入多个群组,那某个账号想要加入此群组时,将该账号填入这个字段即可。 举例来说,如果我想要让 dmtsai 也加入 root 这个群组,那么在第一行的最后面加上,dmtsai,注意不要有空格, 使成为 root:x:0:root,dmtsai 就可以啰 谈完了 /etc/passwd, /etc/shadow, /etc/group 之后,我们可以使用一个简单的图示来了解一下 UID / GID 与密码之间的关系, 图示如下。其实重点是 /etc/passwd 啦,其它相关的数据都是根据这个档案的字段去找寻出来的。 下图中, root 的 UID 是 0 ,而 GID 也是 0 ,去找 /etc/group 可以知道 GID 为 0 时的群组名称就是 root 哩。 至于密码的寻找中,会找到 /etc/shadow 与 /etc/passwd 内同账号名称的那一行,就是密码相关数据啰。图 1.3.1 、账号相关档案之间的 UID/GID 与密码相关性示意图至于在 /etc/group 比较重要的特色在于第四栏啦,因为每个使用者都可以拥有多个支持的群组,这就好比在学校念书的时候, 我们可以加入多个社团一样! _。不过这里你或许会觉得奇怪的,那就是:假如我同时加入多个群组,那么我在作业的时候,到底是以那个群组为准? 底下我们就来谈一谈这个有效群组的概念。 有效群组(effective group)与初始群组(initial group)还记得每个使用者在他的 /etc/passwd 里面的第四栏有所谓的 GID 吧?那个 GID 就是所谓的初始群组 (initial group) !也就是说,当使用者一登入系统,立刻就拥有这个群组的相关权限的意思。 举例来说,我们上面提到 dmtsai 这个使用者的 /etc/passwd 与 /etc/group 还有 /etc/gshadow 相关的内容如下:rootwww # usermod -G users dmtsai =先设定好次要群组rootwww # grep dmtsai /etc/passwd /etc/group /etc/gshadow/etc/passwd:dmtsai:x:503:504:/home/dmtsai:/bin/bash/etc/group:users:x:100:dmtsai =次要群组的设定/etc/group:dmtsai:x:504: =因为是初始群组,所以第四字段不需要填入账号/etc/gshadow:users:dmtsai -c 说明栏 -d 家目录绝对路径 -s shell 使用者账号名选项与参数:-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;-g :后面接的那个群组名称就是我们上面提到的 initial group 啦 该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。-G :后面接的群组名称则是这个账号还可以加入的群组。 这个选项与参数会修改 /etc/group 内的相关资料喔!-M :强制!不要建立使用者家目录!(系统账号默认值)-m :强制!要建立使用者家目录!(一般账号默认值)-c :这个就是 /etc/passwd 的第五栏的说明内容啦可以随便我们设定的啦-d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!-r :建立一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)-s :后面接一个 shell ,若没有指定则预设是 /bin/bash 的啦-e :后面接一个日期,格式为YYYY-MM-DD此项目可写入 shadow 第八字段, 亦即账号失效日的设定项目啰;-f :后面接 shadow 的第七字段项目,指定密码是否会失效。0为立刻失效, -1 为永远不失效(密码只会过期而强制于登入时重新设定而已。)范例一:完全参考默认值建立一个使用者,名称为 vbird1rootwww # useradd vbird1rootwww # ll -d /home/vbird1drwx- 4 vbird1 vbird1 4096 Feb 25 09:38 /home/vbird1# 预设会建立使用者家目录,且权限为 700 !这是重点!rootwww # grep vbird1 /etc/passwd /etc/shadow /etc/group/etc/passwd:vbird1:x:504:505:/home/vbird1:/bin/bash/etc/shadow:vbird1:!:14300:0:99999:7:/etc/group:vbird1:x:505: =预设会建立一个与账号一模一样的群组名其实系统已经帮我们规定好非常多的默认值了,所以我们可以简单的使用 useradd 账号 来建立使用者即可。 CentOS 这些默认值主要会帮我们处理几个项目: 在 /etc/passwd 里面建立一行与账号相关的数据,包括建立 UID/GID/家目录等; 在 /etc/shadow 里面将此账号的密码相关参数填入,但是尚未有密码; 在 /etc/group 里面加入一个与账号名称一模一样的群组名称; 在 /home 底下建立一个与账号同名的目录作为使用者家目录,且权限为 700 由于在 /etc/shadow 内仅会有密码参数而不会有加密过的密码数据,因此我们在建立使用者账号时, 还需要使用 passwd 账号 来给予密码才算是完成了使用者建立的流程。如果由于特殊需求而需要改变使用者相关参数时, 就得要透过上述表格中的选项来进行建立了,参考底下的案例:范例二:假设我已知道我的系统当中有个群组名称为 users ,且 UID 700 并不存在, 请用 users 为初始群组,以及 uid 为 700 来建立一个名为 vbird2 的账号rootwww # useradd -u 700 -g users vbird2rootwww # ll -d /home/vbird2drwx- 4 vbird2 users 4096 Feb 25 09:59 /home/vbird2rootwww # grep vbird2 /etc/passwd /etc/shadow /etc/group/etc/passwd:vbird2:x:700:100:/home/vbird2:/bin/bash/etc/shadow:vbird2:!:14300:0:99999:7:# 看一下,UID 与 initial group 确实改变成我们需要的了!在这个范例中,我们建立的是指定一个已经存在的群组作为使用者的初始群组,因为群组已经存在, 所以在 /etc/group 里面就不会主动的建立与账号同名的群组了! 此外,我们也指定了特殊的 UID 来作为使用者的专属 UID 喔!了解了一般账号后,我们来瞧瞧那啥是系统账号 (system account) 吧!范例三:建立一个系统账号,名称为 vbird3rootwww # useradd -r vbird3rootwww # ll -d /home/vbird3ls: /home/vbird3: No such file or directory =不会主动建立家目录rootwww # grep vbird3 /etc/passwd /etc/shadow /etc/group/etc/passwd:vbird3:x:100:103:/home/vbird3:/bin/bash/etc/shadow:vbird3:!:14300:/etc/group:vbird3:x:103:我们在谈到 UID 的时候曾经说过一般账号应该是 500 号以后,那使用者自己建立的系统账号则一般是由 100 号以后起算的。 所以在这里我们加上 -r 这个选项以后,系统就会主动将账号与账号同名群组的 UID/GID 都指定小于 500 以下, 在本案例中则是使用 100(UID) 与 103(GID) 啰!此外,由于系统账号主要是用来进行运作系统所需服务的权限设定, 所以系统账号预设都不会主动建立家目录的!由这几个范例我们也会知道,使用 useradd 建立使用者账号时,其实会更改不少地方,至少我们就知道底下几个档案: 使用者账号与密码参数方面的档案:/etc/passwd, /etc/shadow 使用者群组相关方面的档案:/etc/group, /etc/gshadow 使用者的家目录:/home/账号名称 那请教一下,你有没有想过,为何 useradd vbird1 会主动在 /home/vbird1 建立起使用者的家目录?家目录内有什么数据且来自哪里?为何预设使用的是 /bin/bash 这个 shell ?为何密码字段已经都规范好了 (0:99999:7 那一串)?呵呵!这就得要说明一下 useradd 所使用的参考档案啰! useradd 参考档其实 useradd 的默认值可以使用底下的方法呼叫出来:rootwww # useradd -DGROUP=100=预设的群组HOME=/home=预设的家目录所在目录INACTIVE=-1=密码失效日,在 shadow 内的第 7 栏EXPIRE=账号失效日,在 shadow 内的第 8 栏SHELL=/bin/bash=预设的 shellSKEL=/etc/skel=使用者家目录的内容数据参考目录CREATE_MAIL_SPOOL=yes =是否主动帮使用者建立邮件信箱(mailbox)这个数据其实是由 /etc/default/useradd 呼叫出来的!你可以自行用 vim 去观察该档案的内容。搭配上头刚刚谈过的范例一的运作结果,上面这些设定项目所造成的行为分别是: GROUP=100:新建账号的初始群组使用 GID 为 100 者系统上面 GID 为 100 者即是 users 这个群组,此设定项目指的就是让新设使用者账号的初始群组为 users 这一个的意思。 但是我们知道 CentOS 上面并不是这样的,在 CentOS 上面预设的群组为与账号名相同的群组。 举例来说, vbird1 的初始群组为 vbird1 。怎么会这样啊?这是因为针对群组的角度有两种不同的机制所致, 这两种机制分别是:o 私有群组机制:系统会建立一个与账号一样的群组给使用者作为初始群组。 这种群组的设定机制会比较有保密性,这是因为使用者都有自己的群组,而且家目录权限将会设定为 700 (仅有自己可进入自己的家目录) 之故。使用这种机制将不会参考 GROUP=100 这个设定值。代表性的 distributions 有 RHEL, Fedora, CentOS 等;o 公共群组机制:就是以 GROUP=100 这个设定值作为新建账号的初始群组,因此每个账号都属于 users 这个群组, 且预设家目录通常的权限会是 drwxr-xr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论