您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 清华linux电子教案第11章
第11章账号管理11.1了解账号管理11.2Linux系统中的归属关系模式11.3超级用户11.4其他特殊用户11.5普通用户11.6用户组策略11.7账号相关的配置文件11.8小结习题Linux系统通过账号管理维护系统的安全性,防止用户非法或越权使用系统资源。本章介绍账号管理以及与用户账号相关的系统资源的归属和用户组的概念。11.1了解账号管理Linux是一个多用户系统,与单用户的MS-DOS有很大的不同。单用户系统可以由使用者本人负责系统的安全性,而多用户系统中的所有用户都可以共享机器中的资源,包括软件资源和硬件资源。系统对每一个普通用户都设置一定的权限,让其在自己的组内自由工作,而不能跨越这种限制。同时对系统资源设置了访问控制表(accesscontrollist),即属主(文件拥有者)、组用户和其他人对资源的访问是可读、可写还是可执行。从这里可以看出,账号管理实际就是一种安全策略。它源自UNIX,在其他的多用户操作系统如WindowsNT中也广为采用。系统的这种安全机制有效地防止了普通用户对系统的破坏。例如存放于/dev目录下的设备文件分别对应于硬盘驱动器、打印机、光盘驱动器等硬件设备,系统通过对这些文件设置用户访问权限,使得普通用户无法通过覆盖硬盘而破坏整个系统,从而保护了系统。用户账号一般包括普通用户账号、管理账号和系统账号。为了鉴别用户身份以及加强系统安全,系统为每个使用它的人分配了一个账号,这就是普通用户账号。每个人拥有一个独立的普通用户账号,每个账号有不同的用户名和密码。用户可以为自己的文件设置保护,允许或限制别人使用它们。用户账号被用来控制对系统的使用,只有拥有账号的人才被允许使用机器。另外,账号还被用来确认用户,保持系统日志,用发送者的名字标记电子邮件,等等。除了普通用户账号外,系统还提供了具有管理功能的账号,例如系统管理员使用的超级用户root,有了这个账号,管理员可以突破系统的一切限制,方便地维护系统。普通用户也可以用su命令使自己转变为超级用户。#supassword:(此处提示输入root的密码)如果想回到原来用户账号,用exit命令即可。系统中还有一些账号不能被人交互使用,通常这些账号只能被系统守护进程使用。它们经常必须以除root及普通用户账号外的某个特殊用户的UID访问某些文件。系统管理员(拥有管理账号的人)的工作之一就是为系统中的所有普通用户添加账号。为了更好地理解账号管理的必要性,下面介绍Linux和UNIX系统中的归属关系模式。11.2Linux系统中的归属关系模式Linux和UNIX一样,其进程和文件都存在一个相关联的归属关系的概念。文件与进程的拥有者对其有绝对的控制权,可以控制文件和进程是否允许其他用户访问,这种权力只有root用户才可以超越。这些归属关系就是通过规划用户的权限来体现的。Linux中,每个文件都有一个属主和属组,属主可以任意设置文件的访问权限。文件的访问权限包括属主的访问权限,属组的访问权限及其他人的访问权限。属主可以用chmod命令去修改,当然,万能的root也可以这样做。另外,root还可以使用chown和chgrp命令分别修改文件的属主和属组,但要注意,属主本身只有chgrp的权限,而没有chown这个权限。例如,文件file1的属主为dongyuan,属组为A,而用户dongyuan同时是A组和B组成员,则dongyuan可以用newgrpB命令改变自己当前的属组,进入B组,然后就可以使用chgrp将自己的文件属组改为组B。例如,dongyuan使用chgrp改变file1的属组键入命令:#chgrpBfile1这样file1的属主仍为dongyuan,而属组变成了B。root用户使用chown可以同时改变file1的属组和属主,例如键入命令:#chownlily:Afile1这样file1的属主仍为lily,而属组变成了A。Linux中的每个进程也有类似的归属关系。每个进程都有4个关联的数值:实际UID,有效UID,实际GID,有效GID。通常情况下,实际ID与有效ID是相同的,进程的属主可以给进程发信号,也可以降低进程的优先级,但不可以升高,除非是root。而在某些特殊情况下(如设置了setuid或setgid位的程序进程),当该进程运行另一个用户的程序文件时,它的有效UID或有效GID分别被临时设置为该程序文件的属主的实际UID或实际GID,从而可以像该属主一样执行该程序文件。比如普通用户用passwd命令修改口令时,可以临时获得root权限,修改/etc/passwd文件的内容。简单地说,就是使程序具备了属主的特权,而不是让程序使用者拥有程序属主的特权。注意,setuid、setgid程序由其他用户执行时,返回的是该用户的shell,而不是程序属主的shell。否则,假如用户执行完这种程序返回后就变成了该程序的属主,那么要获得root身份,只要执行这么一个程序就可以了,系统就没有安全可言了。所以作为系统管理员,对这些程序要格外小心。综上所述,账号管理就像是一把锁。劣质的管理就好比上了一把不用钥匙的锁,人人可以窥探你的隐私。对于如何保障个人权益,答案是两方面的,作为普通用户,不要把你的账号和密码告诉别人;作为管理员,要执行严格的账号管理。11.3超级用户超级用户就是拥有root权限的用户。它在Linux或UNIX系统中拥有至高权限、能够胜任所有管理工作。在系统管理员手中,它是系统的守护神;在黑客手中,它就成为系统和管理员的灾难。11.3.1root的权威性和危险性只要掌管了root,就拥有对系统内所有用户的生杀大权,对所有文件的处置权,以及对所有服务的使用权。当然,如果不小心敲错了命令,就可能给系统带来毁灭性的打击。一个普通用户只能在系统中做有限的事情,例如编辑自己的文件、修改本组的程序、建立自己的目录、决定别人以何种权限(可读、可写、可执行)访问自己的文件及目录,以及同组的用户如何访问它们。而root不受这些限制,不管用户对自己的文件作了何种保护,root都能置之不理。这一方面体现了root的特权性,也从另一方面表现出了极大的危险性。例如,普通用户想删除目录/home/lily目录下的文件,执行以下命令:rm-fr/home/lily但是不小心在home前多了一个空格,命令成了:rm-fr/home/lily在Linux系统中,rm可以接受多个参数,即要删除“/”和“/home/lily”两个目录,而“/”表示整个文件系统。当然作为普通用户权限较小,系统不允许这么做。但是如果用户以root身份执行这个命令的话,没有任何方法阻拦他,可想而知,这对系统将是灾难性的。另外一些特定的操作只能由root执行,如shutdown命令,该命令使用一个系统调用使系统脱机,但普通用户无权执行这个系统调用,否则系统的稳定性将难以预测。例如:#shutdown10TheServerwillbeclosedafter10minutes这个命令通知各个终端用户系统将在10分钟后关机,便于普通用户做好充分准备。以上事实充分说明root是一把双刃剑,所以通常情况下系统管理员要为自己分配一个普通用户账号,必要时才用su命令将自己改变成为root,以避免因疏忽导致的意外错误。正因为root用户拥有这种特殊的地位,保护超级用户的密码也就成了加强系统安全的关键。这样,从某种意义来说,对系统的管理问题也就成了对超级用户密码的管理。系统管理员要严格保护密码,并经常更换,而且密码要足够复杂、足够长,特别是对于重要的系统来说,更要建立严格的密码管理制度。11.3.2root的登录方式前面已经提到一种登录方式,就是系统管理员以普通用户的身份进入系统,必要的时候再用su命令使自己转变成超级用户。不过su命令转换身份有一个环境变量转变的问题,读者可以用env命令查看身份转换前后的环境变量有何变化。假设有一个用户要转变成root身份,请读者比较使用以下两条指令会有什么区别:(1)suroot(2)su-root这里的root是默认值,可以不敲。也可以用su转换成其他用户,前提是知道其密码。格式同上:su用户账号su-用户账号通过比较,我们可以看出使用第一条命令转变成root后,除了少数变量改变外,其他的变量几乎没有变化,好像继承了原用户的环境一样,变化的变量根据不同的发行版本不同,如XLinux与RedHat就有差别。但是加上“-”后,环境变量就跟root直接登录时一样,即“-”的意思就是要使用root的环境变量。同样,这些规则同样适用于用su转换成其他用户账号的情况。这种方式对于远程维护系统是绝对必要的,因为root不能从网络直接telnet登录主机。所以系统管理员要实现远程登录,就必须给自己分配一个普通账号。另外一种登录方式就是从控制台直接登录,对于UNIX和Linux系统来说,前面我们提到超级用户主宰一切,实际上很有可能是“控制台”主宰一切。这里的控制台指的就是直接通过数据线连接到主机的显示终端。对于Linux而言,普通的Intel平台的RedHat系统,只要在Linux启动时输入以下参数即可不需要密码进入单用户模式:boot:linux1而XLinux甚至可以直接从启动菜单中选择。即使启动过程不允许输入参数,也可以通过光盘或软盘启动进入系统,这些在安全部分再做介绍。当然对于商业模式,我们可以采用物理隔离的办法来保护主机。不过对于系统管理员来说,应该重视控制台的安全,养成良好的习惯。11.3.3与root环境变量相关的脚本文件在root根目录下有几个重要的脚本文件,熟知它们的内容有助于更好地控制自己的行为,养成良好的习惯。如PATH环境变量一般没有当前路径“.”,这样就会督促系统管理员使用绝对路径。root跟其他用户一样,其基本行为和环境变量由/etc/bashrc(以bashshell为例)和/etc/profile设定。root根目录下有两个配置文件.bashrc和.bash-profile,这两个文件可以由用户个人修改,以添加一些个人爱好的环境设置。修改后必须执行后方可生效,如修改完“.bashrc”文件后,执行如下:#..bashrc普通用户也可以自行设置自己的环境参数,建议读者动手修改这些脚本,只有试验过才会有更深的体会。11.4其他特殊用户除了root和普通账号之外,系统中还存在一些账号,它们不能供任何人登录使用,只能由系统内核使用。这些账号有bin、sys、nobody、daemon等。这些账号在不同的操作系统中有很大区别,甚至名称也不一样,如AIX中的system就相当于sys。尽管其中许多已经没有被使用,Linux系统中仍保留了这些账号。Linux系统中更多地依赖管理员的安全意识,也体现了它是玩家的宠物,没有过多地考虑操作的安全性。11.5普通用户任何一个提供用户服务的主机都需要对用户账号进行规划、管理,因为系统资源是共享的,又要保证用户的隐私,必须设置足够的安全屏障,一个认真负责的系统管理员就必须建好这个安全屏障。系统管理员一般都有大量的工具软件包,以帮助自己顺利、便捷地完成工作。为了让读者对工具的幕后工作有所了解,11.7节还将介绍如何通过修改配置文件达到目的。11.5.1增加普通用户Linux中有一条管理用户的命令useradd,还有一条命令叫adduser,这两者是一回事,adduser是useradd的符号链接。通常情况下,增加用户可以不必指定用户的组,下面的命令会自动完成相应的工作,例如用下面的命令将为cheng创建一个普通用户账号:#useraddcheng系统默认处理用户ID与组ID相同,但是AIX和Solaris都需要指定用户组。同时命令脚本为用户创建主目录和相应的环境变量。上面的命令实际上完成了以下几个工作:(1)向/etc/passwd、/etc/shadow、/etc/group中写入用户信息(2)建立用户主目录/home/cheng(3)将/etc/skel下的内容拷贝到/home/cheng下,为用户建立环境变量和准备脚本环境读者可以
本文标题:清华linux电子教案第11章
链接地址:https://www.777doc.com/doc-2286482 .html