您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > Unix_文件安全与权限
类UNIX系统基础:文件安全与权限黑客基地当创建一个文件的时候,系统保存了有关该文件的全部信息,包括:文件的位置。文件类型。文件长度。哪位用户拥有该文件,哪些用户可以访问该文件。i节点。文件的修改时间。文件的权限位。让我们用touch命令创建一个文件:$touchtemp创建了一个空文件,现在用ls-l命令查看该目录下文件的属性(我这里用中文版):如下:[root@Linux_chenwytemp]#ls-l总用量36-rw-r--r--1rootroot3489010月1920:17httpd.conf-rw-r--r--1rootroot010月1920:16temp总用量36:是ls所列出的入口占用空间的字节数(以K为单位),不是该目录中所有文件占用的空间。1该文件硬链接的数目。root:文件属主。root:文件属组(一般是文件属主所在的缺省组。)34890:字节来表示的文件长度,记住,不是K字节!10月1920:17:件的更新时间。temporhttd.conf:件名。BTW:要检查该目录所有文件占用的空间应该用这个命令:du。譬如说前面说的36是如何计算出来:首先我们要先了解你所用的文件系统的IOBLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IOBLOCK大小是4096Bytes。他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。这个规则也适合于目录,不过不会出现为0的目录,即使是空目录。对于空目录及所有入口占用的空间小于一个block的目录来说,他的空间以一个block的大小来计算。-rw-r--r--:这是该文件的权限位。第一个横杠:指定文件类型,表示该文件是一个普通文件。(所创建的文件绝大多数都是普通文件或符号链接文件)。除去最前面的横杠,一共是9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。对这两个文件的精确解释是:rw-:前三位,文件属主可读、写r--:中间三位,组用户可读r--:最后三位,其他用户只可读在创建的时候并未给属主赋予执行权限,在用户创建文件时,系统不会自动地设置执行权限位。这是出于加强系统安全的考虑BTW:文件的属主组并不一定就是所有者所在的缺省组,而可以是任何一个跟该文件所有者无关的用户组。为了方便,还是统称属主,属组和其它。在-rwxrwxrwx中,红色的一组是指属于文件所有者组的用户对文件所拥有的权限,但是这个组并不必蓝色的权限中文件的所有者所在的组。它们可以是一个,也可以是不同的,甚至可以和这个文件的所有者没有任何的关系。譬如说你新建一个test组,而让root用户不属于test这个组的话,你照样可以用chown:testfilename这个命令让该文件的所有者组为test组,一切的访问照样合用。文件类型前面提到的第一条横杠,表示该文件是普通文件型文件类型有七种,它可以从ls-l命令所列出的结果的第一位看出.七种类型:d目录。l符号链接(指向另一个文件)。s套接字文件。b块设备文件。c字符设备文件。p命名管道文件。-普通文件,或者更准确地说,不属于以上几种类型的文件。文件的权限位中中每一组字符中含有三个权限位:r读权限w写/更改权限x执行该脚本或程序的权限如:r--------文件属主可读,但不能写或执行r--r-----文件属主和属组用户(一般来说,是文件属主所在的缺省组)可读r--r--r--任何用户都可读,但不能写或执行rwxr--r--文件属主可读、写、执行,属组用户和其他用户只可读rwxr-x---文件属主可读、写、执行,属组用户可读、执rwxr-xr-x文件属主可读、写、执行,属组用户和其他用户可读、执行rw-rw----文件属主和属组用户可读、写rw-rw-r--文件属主和属组用户可读、写,其他用户可读rw-rw-rw-文件属主和属组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件使用chmod来改变权限位这一命令有符号模式和绝对模式。符号模式chmod命令的一般格式为:chmod[who]operator[permission]filenamewho的含义是:u文件属主权限。g属组用户权限。o其他用户权限。a所有用户(文件属主、属组用户及其他用户)。operator的含义:+增加权限。-取消权限。=设定权限。permission的含义:r读权限。w写权限。x执行权限。s文件属主和组set-ID。t粘性位*。l给文件加锁,使其他用户无法访问。u,g,o针对文件属主、属组用户及其他用户的操作。t:stickybit,该位可以理解为防删除位.一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户的文件具有写权限.如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件.如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用stickybit位.设置该位后,就算用户对目录具有写权限,也不能删除该文件。它的主要作用就是共享文件,典型的如/tmp分区。###########################以下是测试以test1用户登陆:cd/tmpmkdirtest1lldrwxr-xr-x2test1wheel-512Apr2015:35test1/cdtest1touchtest1touchtest2ll-rw-r--r--1test1wheel-0Apr2015:35test1-rw-r--r--1test1wheel-0Apr2015:35test2这个时候,test1目录的权限是755,因此文件属组没有写权限,因此只有test1用户才能在test1目录下建文件,其它用户只能读、访问test1目录,无法建文件的,用test2用户测试一下:touchtemp1touch:temp1:Permissiondenied现在用test1用户给test1目录加权限:chmodg+wtest1lldrwxrwxr-x2test1wheel-512Apr2015:35test1/现在test1目录权限是775,文件属组有写权限,因此与test1用户同属于wheel组的test2用户应该可以建文件了,测试一下:touchtest3ll-rw-r--r--1test1wheel-0Apr2015:35test1-rw-r--r--1test1wheel-0Apr2015:35test2-rw-r--r--1test2wheel-0Apr2015:39test3现在再把test1目录的权限改回755,用test1用户cd/tmpchmodg-wtest1lldrwxr-xr-x2test1wheel-512Apr2015:40test1/现在试试删除文件,用test2用户删除test1用户的文件。rmtest1overriderw-r--r--test1/wheelfortest1?yrm:test1:Permissiondeniedll-rw-r--r--1test1wheel-0Apr2015:39test1因为test1的权限为644,所以与test1用户同组的test2用户对它没有写权限,所以无法删除。现在用test1用户给test1文件增加权限:chmodg+wtest1lldrwxr-xr-x2test1wheel-512Apr2015:40./-rw-rw-r--1test1wheel-0Apr2015:39test1然后再次用test2用户删除:rmtest1rm:test1:Permissiondenied因为删除文件本身就是在“写”目录,所以必须对目录有“写”权限。而此时test1目录的权限是755,用test1用户把它改成775以后,test2用户就能删除了。rmtest1overriderw-r--r--test1/wheelfortest1?y结论是:文件名是保存在目录中的,因此创建、重命名和删除文件都只需要对目录有写权限,文件权限对这些操作没有影响。或许正如雨丝风片说的那样:“人在屋檐下,怎能不低头”,hehe现在该试stickybit了,换到test1用户下lldrwxr-xr-x2test1wheel-512Apr2016:01test1/chmodg+ttest1lldrwxr-xr-t2test1wheel-512Apr2016:01test1/cdtest1touchtest1touchtest2ll-rw-r--r--1test1wheel-0Apr2016:06test1-rw-r--r--1test1wheel-0Apr2016:06test2这个时候再把test1目录给属组写权限,按照上面的实验test2用户应该可以删除test1、test2文件的,我们来试试:chmodg+wtest1lldrwxrwxr-t2test1wheel-512Apr2016:06test1/现在让test2用户删除一下test1文件:rmtest1overriderw-r--r--test1/wheelfortest1?yrm:test1:Operationnotpermitted现在让test2用户建个文件:touchtest3ll-rw-r--r--1test1wheel-0Apr2016:06test1-rw-r--r--1test1wheel-0Apr2016:06test2-rw-r--r--1test2wheel-0Apr2016:09test3看test1用户是否可以删除:rmtest3overriderw-r--r--test2/wheelfortest3?y为什么哪:因为test1目录是test1用户建立的,因此test1目录内的文件任由test1用户处理,正如那句广告词“我的地盘我做主”,呵呵。这个也正是stickybit的作用所在:test1建立的目录,设置了stickybit之后,只有test1用户可以任意处置test1目录下的文件,而其他用户只能处置自己建的文件,当然前提是test1用户给他赋予了w权限。这个时候换另外一个用户test3,它来删除test3rmtest3overriderw-r--r--test2/wheelfortest3?yrm:test3:Operationnotpermitted它也不行,除非是test1目录的创建者,否则其他用户只能管理自己的文件,当然root除外。###########################chmoda-xtemp//rw-rw-rw-收回所有用户的执行权限chmodog-wtemp//rw-r--r--收回属组用户和其他用户的写权限chmodg+wtemp//rw-rw-r--赋予属组用户写权限chmodu+xtemp//rwxrw-r--赋予文件属主执行权限chmodgo+xtemp//rwxrwxr-x赋予属组用户和其他用户执行权限举如当创建temp文件时,它具有这样的权限:-rw-r--r--1rootroot010月1920:16temp如果要使属主和属组用户具有有执行权限,并取消其他用户(所有其他用户)的写权限,可以用:$chmodug+xtemp$chmodo-wtemp这样,该文件的权限变为:-rwxr--r--1rootroot010月1920:16temp现在已经使文件属主对temp文件具有读、写执行的权限,属组用户真有读写权限,其它用户没有权限了。绝对
本文标题:Unix_文件安全与权限
链接地址:https://www.777doc.com/doc-3955244 .html