首页 > 常识 > 互联网 > 网站制作 > 数据安全

文件的访问权限和安全

作者:  时间:2016-06-28
描述:Linux作为一种网络操作系统,允许多个用户使用。为了保护用户的个人文件不被其他用户侵犯,Linux提供了文件权限的机制。
《生活宝典shenghuobaodian.com》讯  Linux作为一种网络操作系统,允许多个用户使用。为了保护用户的个人文件不被其他用户侵犯,Linux提供了文件权限的机制。这种机制使得一个文件或目录归一个特定的用户所有,这个用户有权对他所拥有的文件或目录进行存取或其他操作,也可以设置其他用户对这些文件或目录的操作权限。

setuid Linux 权限掩码

Linux还用到了用户组的概念。每个用户在建立用户目录时都被放到至少一个用户组中(当然,系统管理员可以将用户编进多个用户组中)。用户组通常是根据使用计算机的用户的种类来划分的。例如,普通用户通常属于usrs组。另外,还有几个系统定义的组(如bin和admin),系统使用这些组来控制对资源的访问。

普通文件的权限有三部分:读、写和执行。分别用“r”、“w”、“x”来表示。目录也有这三种表示方式,分别表示:列出目录内容、在目录中建立或删除文件、进入和退出目录。以一个例子来解释文件权限的概念。

我们用带-l选项的ls命令来显示包括文件权限的长格式信息。

/ $ ls -l /home/user1/file1 
-rw-r--r-- 1 user1 usrs 490 JUN 28 21:50 file1

在这个文件的长格式信息中,第一列代表的就是文件的类型和权限。其中,第一个字母表示文件的类型,“-”表明这是一个普通文件。接下来九个字符每三个一组依次代表文件的所有者、所有者所在用户组和组外其他用户对该文件的访问权限,代表文件权限的三个字符依次是读、写和执行权限,当用户没有相应的权限时, 系统在该权限对应的位置上用“-”表示。所以,本例表示用户user1自己对该文件有读和写的权限,但没有执行权限,而user1所在usrs组的其他用户和组外的用户对该文件只有读权限,没有写和执行权限。
 
有时候,我们会看到权限的执行位上出现了“s”,而不是“x”。这涉及到进程中的概念。一个进程,除了进程标识号(PID)外,还有四个标识号表示进程的权限。它们是:

· real user ID 实际用户标识号 
· real group ID 实际用户组标识号 
· effective user ID 有效用户标识号 
· effective group ID 有效用户组标识号

实际用户标识号就是运行该进程的用户的UID,实际用户组标识号就是运行该进程的用户的GID。一般情况下,有效用户标识号、有效用户组标识号分别和实际用户标识号、实际用户组标识号相同。但如果设置setuid位和setgid位,则这两个标识号在对文件进行操作时自动转换成该文件所有者和所有组的标识号。setuid位和setgid位设置与否,就是看文件权限位上是否有“s”,如果用户的执行权限位为“s”,则设置了setuid位,如果用户组的执行权限位为“s”,则设置了setgid位。

这两个标识位的设置正确与否关系到整个系统的安全,所以非同小可,我们以两个例子来说明。

/bin/passwd就是一个设置了setuid位的文件。当/bin/passwd被执行时,它要在/etc目录下找一个也叫passwd的文件,该文件是个文本文件,里面记录了全部用户的数据,如口令、用户标识号等。该文件显然不能让超级用户以外的人修改,所以该文件的存取权限是rw-r--r--。但是,普通用户在更改它自己的口令时,必须改动这个文件,解决这个问题的方法便是设置setuid的位,使指令在被执行时有和root相同的权利,这样就可以修改这个文件了。

setuid位的设立是有风险的!如果某个普通进程执行一个设置了setuid位,且所有者是“root”的文件,立刻具有了超级用户的权利,万一该程序有BUG,就留下了被人入侵系统的可能。因此,把文件按性质分类,再用设置setgid位来达到分享的目标是一个不错的办法。

Linux中有一个叫/etc/kmem的字符设备文件,目的为存储一些核心程序要用到的数据。当用户注册到系统时所输入的口令都存在其中,所以这个文件不能给普通用户读写,以免给企图侵入系统者可乘之机,但将使用权限设为“rw-------”也不行,这样一般用户无法用ps等显示系统状态的指令(这类显示系统状态的指令必须要读取kmem的内容)。如果将存取权限设置成“rw-r-----”,再把组标识号改成与kmem一样,最后再设置setgid位,这样,无论谁执行ps,该进程的组标识号都变得和ps一样,从而就能读取kmem的数据了。

作为一个系统管理员,能用setgid来代替setuid就尽量用setgid,因为它的风险小得多!

还有一个不引人注意的现象,就是在其他用户的执行权限位上可能出现“t”,而不是“x”,这表示该文件被装入内存后,将一直保留在内存中,好象dos下TSR程序,这样可以减少程序的装入时间,增加程序的反应速度。因此,系统管理员可以对一些使用频率较高的工具程序设置该位。

创建一个新文件时,需要提供文件的访问权限位,但是,新文件的权限位并不就是根据这个数设置的,还必须参考另一个值:文件权限的掩码,这是一个9位的二进制数,对应于9个权限位,如果这个数某一位上置1,则新创建文件相应权限位被强制置0,而不管所提供的权限位是怎样的。这种机制使的一个新文件在创建时被限制为一个合适的权限。可以用umask命令看到这个值,它以3位八进制数显示,默认为022,即000010010,所以一个新文件创建时,除了文件拥有者外,其它用户是没有写权限的。在VFS的fs_struct结构中有一个umask域,存储的就是这个文件权限的掩码。

文件建立后,文件拥有者可以用chmod改变访问权限。每一组权限位的设置可以用一个八进制数表示,这样,用三个八进制数就可以表示9个权限位了。
例如chmod 755 
/home/user1/file1, 则该文件的权限表示为 
wxr-xr-xr。如果要设置setuid、setgid位,则需要用到第四个八进制数,该数为4,则setuid位被设置;该数为2,则setgid位被设置,该数为1,则是其他用户的执行位被设置成“t”。

Ext2索引节点中的i_mode就是用来存储文件的属性、用户标识号、用户组标识号和访问权限等信息的,这是一个16位的字段,其中0到8位用来表示文件的访问权限,第9位用来控制文件是否驻留内存,10、11位即setgid、setuid位,12到15位的组合用来表示文件类型。

文件访问权限和安全
 
打开文件,读取内容或者修改这是最常见的操作,其中一个权限的涉及则是关乎操作系统安全的重要部分。文件操作分为读,写,执行3块,如果你想去对某个文件操作,它的权限检查会从高到低3个方面去判断是否可以这么做。
 
1.物理上,物理上根本不存在的东西,无论你想任何办法,你也无法对其进行操作的。人们自然不会犯这种错误,但偶尔我们会写错一些代码,比如,向一个没有刻录功能的DVD让发出命令,让它将内容刻录到光盘,不管操作系统会不会给你报错,你的目的都达不到。
 
2.授权进程,这类进程凌驾于下面文件权限保护之上(linux中称为权限控制机制DAC)。比如超级用户,用root登录的用户对所有文件都享有和文件主一样的待遇,包括最终极的权利,修改文件权限和文件主。拥有这类权限的进程叫做授权进程。一般是系统管理员启动的进程,当然也包括其它的一些,不过数量不多。
 
3.权限控制机制,只是最低级别的判定。不过也是用的最多的判定。文件主享有最终极的权利,赋予其它人对文件操作的权利。还享有修改文件主的权利。防止文件被盗取:物理上不存在的东西,骇客自然也没办法拿到,不过我们可以通过一些物理上的手段防止一 ...
 
文章来源 : shenghuobaodian.com

从手机浏览器访问《生活宝典》

站内搜索
  • 如何允许 Google 访问我的需要登录的网页?
  • 安装 Firefox 扩展文件 xpi 的方法
  • 电脑本地安全性策略
  • 如何提高IIS 6.0的安全性?
  • 如何修改Linux系统的文件权限
  • 安全配置Windows2000服务器
  • 如何修改 hosts 文件?
  • 从数据库修改文件后前台不能够生效的问题
  • 谈谈Linux下文件夹权限的问题
  • Linux 上的文件和目录权限介绍
  • 微商帮
    世界网站大全
    中国科研团队:大象的长鼻子是如何越变越长了
    中国科研团队:大象的长
    自己是否能够像自己想的那样做成一件事,身旁人的判断会比自己准确
    自己是否能够像自己想
    火宫殿:吃喝玩乐看,烧香拜神佛,红火的庙会经济
    火宫殿:吃喝玩乐看,烧香
    眼见为实也不为实,更须谨慎看到的并非全貌
    眼见为实也不为实,更须