《基于Linux操作系统文件权限的设置.pdf》由会员分享,可在线阅读,更多相关《基于Linux操作系统文件权限的设置.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于L i n u x 操作系统文件权限的设置孙悦,张姝,李京平,马楠(北京联合大学信息学院,北京1 0 0 1 0 1)摘要:随着L i n u x 操作系统的迅速发展和广泛使用,系统管理人员和软件开发人员开始更多地关注L i n u x 的安全问题。该文主要从文件权限设置的角度讨论了L i n u x 操作系统文件安全的问题,重点强调了开发人员在编程时应注意对文件权限的设置,防止文件和数据被破坏,通过一简单实例对该问题进行了说明并提出了解决办法。关键词:L i n u x;安全;文件权限S e to fF i l eR i g h t sw i t hL i n u xO p e r a
2、t i n gS y s t e mS U NY u e,Z H A N GS h u,L lJ i n g-P i n g,M An a n佃啪噌U n i o nU n i v o m i t 2i n f o r m a t i o nC o _ l o g o,喇1 0 0 1 0 1。P 砖C M n a)A b s t r a c t:W i 切t h eq u i c k l yd e v e l o p m e n ca n dw i d e l yu s e do ft h eL i n u xo p e r a t i n gs y s t e m,m o r ea n d
3、m o r ea t t e n t i o nw 鹋p a i dt ot h es e c u r i t yo fL i n u xb y s y s t e mm a n a g e ra n ds o f t w a r e d e v e l o p e r T h es e c u r i t yo fL i n u xo p e r a t i n gs y s t e mw a 8d i s c u s s e dt h r o u g ht h es e t t i n go ff i l er i g h t si nt h i sp a p e r 1 no r d e
4、 rt oa v o i df i l ea n dd a t ab e i n gd e s t r o y e d,t h ed e v e l o p e rs h o u l d9 a ym o r ea t t e n t i o nt ot h es e t t i n go ff i l er i g h t s d u r i n gp r o g r a m m i n gw a se m p h a s i z e d T h a tq u e s t i o nw a se x p l a i n e db yas i m p l es a m p l ep r o g
5、r a m,a n ds o m ew a y so fs o l u t i o nw e r ep u tf o r w a r d K e yw o r d s:L i n u x,S e c u r e,F i l er i g h t s随着L i n u x 操作系统的迅速发展和广泛使用,越来越多的用户开始关注L i n u x 的安全问题。国际标准化组织将安全服务分为5 类,即认证、访问控制、数据加密、数据完整性和不可抵赖性。其中认证和访问控制及操作系统联系紧密,L i n u x 操作系统也提供了认证和访问控制机制。在L i n u x 中,所有的事物都是文件,所以文件系统是L
6、 i n u x 系统安全的核心。L i n u x 系统中的文件使用了文件存取许可机制,系统中的每个文件都有对应的权限,文件权限是L i n u x文件系统安全的关键。本文主要针对文件的权限进行一些探讨。除了日常使用文件系统外,L i n u x 用户常常需要自己编写一些程序,包括b a s h 脚本和C 语言程序,编写这一部分程序时,如果不在安全性上考虑,就有可能导致文件权限变化,数据的泄漏或被破坏,甚至整个应用系统崩溃。下文将举一简单的实例对此加以说明。1L i n u x 系统中文件的权限L i n u x 系统是一个典型的多用户系统,不同的用户处于不同的地位。为了保护系统的安全性,L
7、 i n u x系统对不同用户访问同一文件的权限做了不同的规定,该安全模型是通过给系统中的文件赋予两个属性来起作用的,这两个属性称为所有者(o w n e r s h i p)和访问权限(a c c e s sr i g h t s)。所谓文件权限,就是指对文件的访问权限。对于一个L i n u x 系统中的文件来说,它的权限可以分为3种:读的权限、写的权限和执行的权限,分别用r,w 和x 表示。不同的用户具有不同的读、写和执行的权限。文件的另一个属性所有者是指每个文件都有一个特定的所有者,也就是对文件具有所有权的用户。同时,由于在L i n u x 系统中,用户是按组分类的,一个用户属于一个
8、或多个组。文件所有者以外的用户3 6又可以分为文件所有者的同组用户和其他用户。因此,L i n u x 系统按文件所有者、文件所有者同组用户和其他用户3 类规定不同的文件访问权限。L i n u x 文件系统采用基于保护位的访问控制机制,文件的属性用1 0位表示,其中第l 位代表文件类型,其余9 位是文件的权限组,通过该权限组可分别针对文件的所有者、所有者所在的组和其他用户定义读、写和执行3 种权限。具体来说,文件类型又分为以下几种:d目录l 符号链接S 套接字文件b 块设备文件C 字符设备文件P 命名管道文件一普通文件其中2 4 位是所有者权限,57 位是所有者组权限,8 一1 0 位是其他
9、用户权限。例如,使用l l 命令查看h e l l o 文 万方数据件的属性,命令如下:【r o o t s u n y u er o o t#Uh e l l o运行结果如下:-r w x r-x r-lr o o tr o o t4 57 月40 9:1 2h e l l or w x r x r 一一是文件的属性,共l O 位,一表示h e l l o 文件是一普通文件,舰【表示文件所有者拥有全部的权限,r-x 表示同组用户可以读和执行这个文件,最后三位r-表示其他用户只能读此文件。1 表示该硬链接的数目,r o o t 表示文件的有者是r o o t,r o o t 表示文件的所有者所
10、在的组是r o o t(缺省则和文件所有者名称相同I4 5 表示文件的长度为4 5 字节l7 月40 9:1 2 表示文件的更新时间。通过这种文件存取许可机制,可以使得每个用户都可以对自己的文件加以保护,以免其他用户非法读取。很显然,系统中各种文件的权限设置对特定用户的数据安全有很大影响,要求用户小心设置。另外,用户改变文件的权限可以用命令c h m o d,改变文件的拥有者可用命令c h o w n,。系统还可用u m a s k 命令控制文件缺省的权限,其不用于屏蔽文件主的的任何权限,只能屏蔽同组用户和其他用户的权限。2L i n u x 下编程时文件权限的设置开发人员在L i n u x
11、 下编程时经常会涉及到文件操作,此时也会进行文件权限的设置,尤其在创建文件时,必须指定对文件的访问权限。其中o p e n 和c r o a t 系统调用都要求设置文件权限。由于下文中的程序实例中使用了c r e a t 系统调用,所以以下主要介绍如何在使用行文件访问权限c r e a t 系统调用的格式:i n tc r e a t(c o n s tc h a r*p a t h n a m e,m o d e _ tm o d e)。返回值:如果正确刨建,返回文件的描述符l 否则返回一l。p a t h n a m e 是要创建文件的路径名。m o d e 用来规定该文件的拥有者,小组用
12、户和其他用户的访问权限,要求用按位逻辑加对S j R U S R,S j W U S R 和S _ I R G R P 等符号常量进行所需的组合。也可以用数字来代表各个位的标志,L i n u x 总共用5 个数字来表示文件的各种权限,第一位表示设置用户I D,第二位表示设置组I D,第三位表示用户自己的权限位,第四位表示组的权限,最后一位表示其他人的权限。每个数字可以取l(执行权限),2(写权限),4(读权限),0(什么也没有)或者是这几个值的和。比如我们要创建一个用户读写执行,组没有权限,其他人读执行的文件,设置用户I D 位,那么我们可以使用的模式是l(设置用户I D)0(组I D 没有
13、设置)7(1+2+4)0(没有权限,使用缺省)5(1+4)即1 0 7 0 5。涉及文件权限的系统调用除了o p e n 和c r e a t 外,对于已经存在的文件,可以使用c h m o d l()系统调用来改变文件的权限。还可以使用a c c e s s函数判断访问权限,用s t a t 函数来访问文件的属性信息,比如文件的用户I D,文件的访问时间等。3L i n u x 下对文件的编程在L i n u x 下编程时,如果对文件的安全性考虑不周全,会导致文件被没有访问权限的用户访问或攻击。下文举了一个简单的实例,对文件访3 7首先以r o o t 身份登录,创建两个用户,u s e r
14、 l 和u s e r 2,创建命令如下:【r o o t s t m y u er o o t#a d d u s e ru s e r lu s e r 2以用户u s e r l 身份登录,创建c o p y f i l e C,程序实现了将某个文件的内容复制到另一文件中,该文件是在程序中创建的文件,要求在程序中对文件的权限进行设置。程序中将R I G H T 设为0 7 4 4,即不设置用户I D 和组I D,文件主可以读写和执行文件,文件所有者所在组和其他用户具有读权限。【u s e r l s u n y u eu s e r l】$v ic o p y f i l e C输入下程
15、序段,并进行编译。#i n c l u d e#i n c l u d e#d e f i n eR I G H T0 7 4 4#d e f i n eB U F S I Z E1 0 2 4c h a r p r o g n a m e)m a i n(a r g c,a r g v)i n ta r g c)c h a r*a r g v 】,i n tf i l e l,f i l e 2,n;c h a rb u f f B U F S I Z E lp r o g n a m e=a r g v 0 ,i f(a r g cI=3)p r i n t f(。p l e a s ei
16、 n p u tt h eS O H C 2f i l ea n dd e s t i n a t i o nf i l ey o uw a n tt o s:”,p r o g n a m e)lf f(f i l e l=o p e n(a r g v 1】,0)=一1)p r i n t f(“c a r l to p e n 矿,a r g v 1】)li f(f i l e 2=c r e a t(a r g v 2 ,R I G H T:D-I)p r i n t f(“c a n tc r e a t es,a r a v 2 )I 万方数据w h i l e(n=r e a d
17、(f i l e l,b u f,B U F S I Z E)Oi f(w d t e(m e 2,b u r,n)!=n)p r i n t f(。w r i t ee r r o r”,(c h a r幸)0)Ic l o s e(f i l e l)#c l o s e(f i l e 2);e x i t(O)I【u s e r l s u n y u eu s e r l$g c c-0c o p y f i l e o u tc o p y f i i e C编译调试程序没有错误后,查看c o p y f i l e o u t 的权限,该文件的权限是系统默认的设置。【u s e
18、r S u n y U eU S e r l】$Uc o p y f i l e o u t结果显示为:一r w x r w x r-xu s e r lu s e r l5 47 月50 8:2 2c o p y f i l e o u t,说明其他用户可以读并执行文件c o p y f i l e o u t。用户u s e r l 创建文件f i l e l,用于复制文件时作为源文件。u s e r l s u n y u eu s e r l l S v if i l e l【u s e r l s u n y u eu s e r l$1 1f f l e l结果显示为:一r w r
19、 w r 一一lu s e r lu s e r l4 57 月50 8:4 2f i l e l,用户u s e r l 执行c o p y f i l e o u t,将文件f n e l 复制到f i l e 2。【u s e r l s u n y u eu s e r l】$c o p y f i l e o u tf i l elf i l e 2查看用户u s e r l 对f i l e 2 的权限。u s e r l s u n y u eu s e r l$1 1f i l e 2结果显示为:一珈r 一一r 一一lu s e r l u s e r l4 57 月50 8:
20、4 6f i l e 2,与用R I G H T 设置的一致。由于用户u s e r 2 要访问用户u s e r l 的文件c o p y f i l e o u t,而该文件在h o m e u s e r l 目录下,所以用户必须首先获得对该目录的访问权限,即对该目录的执行权。使用c h m o d命令将h o m e u s e r l 目录的权限由d r 嘎乃【r 一一改为d r x r w x。以用户u s e r 2 身份登录,登录后转到h o m e u s e r l 目录下,并执行c o p y f i l e o u t。【u s e r 2 s u n y u eu s
21、 e r l$c o p y f i l e o u tf i l e lf i l e 3分别列出f i l e I 和f i l e 3 的访问权限,命令如下 u s e r 2 s u n y u eu e r l$1 1f i l e l结果显示为:一r w r w r 一lu s e r lu s e r l4 57 月50 8:4 2f i l e l,文件f i l e l 的权限没有变化。【u s e r 2 s u n y u eu s e r l$1 1f i l e 3结果显示为:一r w x r 一一r 一lu s e r 2u s e r 25 47 月50 9:2
22、6f i l e 3。上述两个结果说明用户u s e r 2 对文件f i l e l 来说,属于其他用户,权限为可读(r),而在u s e r 2 执行完c o p y f i l e o u t 后,实现了对文件f i l e l 的复制,拥有了文件f i l e l 的副本f i l e 3,由于此时u s e r 2 是文件f i l e 3 的文件主,所以u s e r 2 对文件f i e l 3 的权限是可读可写(r w x)。即用户u s e r 2 对原文件f i l e l 的权限增加,这就给系统带来了不稳定的因素,如果文件f i l e l 是重要文件,用户u s e r
23、 2 可以执行后就可能会对用户u s e r l 的文件系统造成破坏。4 问题的解决方案针对上述文件,为避免以上问题的出现,可以对程序改进,在打开文件f i l e l 之前,判断一下执行此文件的用户对该文件的访问权限,可以使用a c c e 豁函数判断访问权限,如果权限受限,可用s t a t 函数判断文件的用户I D 和文件名,如果不是文件主则不允许实现对该文件的复制。当然,文件主最初设计此程序3 8时,并没有想到会有其他用户访问c o p y f i l e o u t,因此关键是设置权限禁止其他用户访问c o p y f i l e o u t,要求用户对自己的文件和目录设置合适的权限
24、。5 总结随着互联网络的发展,通过网络传输的信息日益增多,安全问题就越发重要。软件开发人员在开发应用程序时也会更多地关注安全的问题。由于上述程序只是一个特例,实际编程中会有各种复杂的情况,所以要求用户在编程时,如果涉及到文件的访问,一定要注意文件权限的设置。日常使用中,每个用户也要合理地管理自己的文件,确保重要文件的安全。国参考文献:【1】D a v i dAW h e e l e r S e c u r ep r o g r a m m i n gf o rL i n u xa n dU n i x【M】L i n u xD o c u m e n t a t i o nP r o j e
25、c t,2 0 0 3【2】任峥惠基于L i n u x 操作系统的安全编程 J】计算机工程与设计,2 0 0 5,2 6(4):1 0 0 9-10 4 0【5】门华江,朱义胜,谢公福L i n u x 系统的安全性研究与分析 J】工业控制计算机,2 0 0 5,1 5(5):17-3 8【4】陈旭,温东阳L I N U X 系统网络安全问题分析及对策 J】合肥工业大学学报,2 0 0 2。2 5(3)【5】张喜英在网络系统中L i n u x 的安全设置与管理【J】网络通讯与安全,2 0 0 7 6】阳富民,涂刚,胡贯荣基于L I N U X的操作系统安全模型【J】计算机工程与应用,2 0
26、 0 1,15 作者简介:孙悦(19 7 2 一),女,硕士生,研究方向为操作系统。收稿日期:2 0 0 7-1 0-17 万方数据基于Linux操作系统文件权限的设置基于Linux操作系统文件权限的设置作者:孙悦,张姝,李京平,马楠,SUN Yue,ZHANG Shu,LI Jing-ping,MA nan作者单位:北京联合大学,信息学院,北京,100101刊名:计算机安全英文刊名:COMPUTER SECURITY年,卷(期):2008(3)参考文献(6条)参考文献(6条)1.阳富民;涂刚;胡贯荣 基于LINUX的操作系统安全模型期刊论文-计算机工程与应用 2001(13)2.张喜英 在网络系统中Linux的安全设置与管理期刊论文-网络通讯与安全 2007(6)3.陈旭;温东阳 LINUX系统网络安全问题分析及对策期刊论文-合肥工业大学学报(自然科学版)2002(03)4.门华江;朱义胜;谢公福 Linux系统的安全性研究与分析期刊论文-工业控制计算机 2005(05)5.任峥惠 基于Linux操作系统的安全编程期刊论文-计算机工程与设计 2005(04)6.David A Wheeler Secure programming for Linux and Unix 2003 本文链接:http:/