您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 第14章-Linux 账号管理与 ACL 权限设定
第十四章、Linux账号管理与ACL权限设定要登入Linux系统一定要有账号与密码才行,否则怎么登入,您说是吧?不过,不同的使用者应该要拥有不同的权限才行吧?我们还可以透过user/group的特殊权限设定,来规范出不同的群组开发项目呢~在Linux的环境下,我们可以透过很多方式来限制用户能够使用的系统资源,包括十一章、bash提到的ulimit限制、还有特殊权限限制,如umask等等。透过这些举动,我们可以规范出不同使用者的使用资源。另外,还记得系统管理员的账号吗?对!就是root。请问一下,除了root之外,是否可以有其他的系统管理员账号?为什么大家都要尽量避免使用数字型态的账号?如何修改用户相关的信息呢?这些我们都得要了解了解的!1.Linux的账号与群组1.1使用者标识符:UID与GID1.2使用者账号:/etc/passwd档案结构,/etc/shadow档案结构1.3关于群组:/etc/group档案结构,有效与初始群组,groups,newgrp,/etc/gshadow2.账号管理2.1新增与移除使用者:useradd,useradd参考档,passwd,chage,usermod,userdel2.2用户功能:finger,chfn,chsh,id2.3新增与移除群组:groupadd,groupmod,groupdel,gpasswd群组管理员2.4账号管理实例3.主机的细部权限规划:ACL的使用3.1什么是ACL3.2如何启动ACL3.3ACL的设定技巧:setfacl,getfacl,ACL的设定(user,groupmask,default)4.使用者身份切换4.1su4.2sudo:sudo指令,visudo(/etc/sudoers)(账号,群组,限制指令,别名,时间间隔,配合su)5.用户的特殊shell与PAM模块5.1特殊的shell:/sbin/nologin,nologin.txt5.2PAM模块简介5.3PAM模块设定语法:验证类别(type)、控制标准(flag)、模块与参数5.4常用模块简介:securetty,nologin,pam_cracklib,login流程5.5其他相关档案:limits.conf,6.Linux主机上的用户讯息传递6.1查询使用者:w,who,last,lastlog6.2使用者对谈:write,mesg,wall6.3使用者邮件信箱:mail7.手动新增使用者7.1一些检查工具:pwck,pwconv,pwunconv,chpasswd7.2特殊账号,如纯数字账号的手工建立7.3大量建置账号模板(适用passwd--stdin选项)7.4大量建置账号的范例(适用于连续数字,如学号)8.重点回顾9.本章习题10.参考数据与延伸阅读11.针对本文的建议:=23887Linux的账号与群组管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的,并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦!在管理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/passw
本文标题:第14章-Linux 账号管理与 ACL 权限设定
链接地址:https://www.777doc.com/doc-3352282 .html