您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > Linux账号管理与ACL权限设定
Linux的账号与群组管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的,并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦!在管理Linux主机的账号时,我们必须先来了解一下Linux到底是如何辨别每一个使用者的!使用者识别码:UID与GID虽然我们登入Linux主机的时候,输入的是我们的账号,但是其实Linux主机并不会直接认识你的『账号名称』的,他仅认识ID啊(ID就是一组号码啦)。由于计算机仅认识0与1,所以主机对于数字比较有概念的;至于账号只是为了让人们容易记忆而已。而你的ID与账号的对应就在/etc/passwd当中哩。Tips:如果你曾经在网络上下载过tarball类型的档案,那么应该不难发现,在解压缩之后的档案中,档案拥有者的字段竟然显示『不明的数字』?奇怪吧?这没什么好奇怪的,因为Linux说实在话,他真的只认识代表你身份的号码而已!那么到底有几种ID呢?还记得我们在第六章内有提到过,每一个档案都具有『拥有人与拥有群组』的属性吗?没错啦~每个登入的使用者至少都会取得两个ID,一个是使用者ID(UserID,简称UID)、一个是群组ID(GroupID,简称GID)。那么档案如何判别他的拥有者与群组呢?其实就是利用UID与GID啦!每一个档案都会有所谓的拥有者ID与拥有群组ID,当我们有要显示档案属性的需求时,系统会依据/etc/passwd与/etc/group的内容,找到UID/GID对应的账号与群组名称再显示出来!我们可以作个小实验,你可以用root的身份vi/etc/passwd,然后将你的一般身份的使用者的ID随便改一个号码,然后再到你的一般身份的目录下看看原先该账号拥有的档案,你会发现该档案的拥有人变成了『数字了』呵呵!这样可以理解了吗?来看看底下的例子:#1.先察看一下,系统里面有没有一个名为dmtsai的用户?[root@~]#grep'dmtsai'/etc/passwddmtsai:x:503:504::/home/dmtsai:/bin/bash==是有这个账号喔![root@~]#ll-d/home/dmtsaidrwx------4dmtsaidmtsai4096Feb618:25/home/dmtsai#瞧一瞧,使用者的字段正是dmtsai本身喔!#2.修改一下,将刚刚我们的dmtsai的503UID改为2000看看:[root@~]#vi/etc/passwd....(前面省略)....dmtsai:x:2000:504::/home/dmtsai:/bin/bash==修改一下特殊字体部分,由503改过来[root@~]#ll-d/home/dmtsaidrwx------4503dmtsai4096Feb618:25/home/dmtsai#很害怕吧!怎么变成503了?因为档案只会记录数字而已!#因为我们乱改,所以导致503找不到对应的账号,因此显示数字!#3.记得将刚刚的2000改回来![root@~]#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的环境来工作时,他需要如何进行呢?首先,他必须要在计算机前面利用tty1~tty7的终端机提供的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啰!那这两个档案的内容就非常值得进行研究啦!底下我们会简单的介绍这两个档案,详细的说明可以参考man5passwd及man5shadow(注1)。/etc/passwd档案结构这个档案的构造是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中!不过需要特别留意的是,里头很多账号本来就是系统正常运作所必须要的,我们可以简称他为系统账号,例如bin,daemon,adm,nobody等等,这些账号请不要随意的杀掉他呢!这个档案的内容有点像这样:Tips:鸟哥在接触Linux之前曾经碰过Solaris系统(1999年),当时鸟哥啥也不清楚!由于『听说』Linux上面的账号越复杂会导致系统越危险!所以鸟哥就将/etc/passwd上面的账号全部删除到只剩下root与鸟哥自己用的一般账号!结果你猜发生什么事?那就是....呼叫升阳的工程师来维护系统@_@!糗到一个不行!大家不要学啊![root@~]#head-n4/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啦~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.上面这样说明可以了解了吗?是的,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的第二个字段上!这样一来很容易被有心人士所窃取的,加密过的密码也能够透过暴力破解法去tryanderror(试误)找出来!因为这样的关系,所以后来发展出将密码移动到/etc/shadow这个档案分隔开来的技术,而且还加入很多的密码限制参数在/etc/shadow里头呢!在这里,我们先来了解一下这个档案的构造吧!鸟哥的/etc/shadow档案有点像这样:[root@~]#head-n4/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才可以读写就是了
本文标题:Linux账号管理与ACL权限设定
链接地址:https://www.777doc.com/doc-3969042 .html