精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● Linux>>Linux之安装篇>>文件权限的介绍

主题:文件权限的介绍
发信人: skybird(晓湖)
整理人: blainelinar(2001-08-07 09:20:57), 站内信件
文件权限的介绍(晓湖原创)

    Linux操作系统和Windows系列最大的一个区别就是文件的权限。

文件所有权(File Ownership):
———————————————
    所有Linux上的文件都属于一个用户,或者一个用户组。当一个用户建立了一个文件的时候,这个文件就属于这个用户。Root还可以通过chown命令来改变一个文件的所有权。一个文件所属的用户组在最开始的时候是被指定到创建这个文件的用户组的。因为用户可以属于多个用户组,所以他可以用chgrp命令来改变任何一个文件所属的用户组到他所在的那些组里面。你可以用groups这个命令知道你是属于哪个用户组的。

命令(Command):
    chown [用户名] [文件名]
    chgrp [用户组] [文件名]
    groups [用户名]

文件权限(File Permissions):
———————————————
    文件权限指的是对某个文件可以处理的能力,主要包括四个类型(其他扩展以后的权限这里就不作介绍了)。用户权限(User Permissions)指的是一个用户对某个文件的处理能力,用户组权限(Group Permissions)指的是一个用户组对某个文件的处理能力。通用权限(World Permissions)或者其他权限(Other Permissions)可以让所有用户或者除了以上所列举的其他用户对文件进行处理。
    每个权限类型基本可以用三个位(Bits)来表达,也就是三个可以开关的域(Fields):
    1、可读(Read)- 表示用户可以获取一个文件的内容,或者一个目录里面的文件列表。
    2、可写(Write)- 表示用户可以修改一个文件的内容,或者建立和删除一个目录里面的文件列表。除非你获得了一个目录的写权限,否则你不可以真正删除里面的文件。
    3、可执行(Execute)- 表示用户可以运行一个文件,或者进入一个目录。

如何表示文件权限?
—————————
    Linux下有两种表示文件权限的方法:字符表示法(Symbolic Representation)和数字表示法(Numeric Representation)。

字符表示法:
    文件权限可以用字母或者其他人类熟悉的符号来表示。这样可以让我们很好的明白一个我们可以对一个文件做什么。运行“info chmod”,里面有详细的字符表达法的介绍。

数字表示法:
    这种表示法没有字符表达法那么直观,所以我会很详细的介绍的。
    因为每个文件的权限包括三个域,所以我们可以用一组八进制的数字来表示。八进制中每一数位的最大值为7。可读权限(第三个域)可以用4来表示。可写权限(第二个域)可以用2来表示。可执行权限(第一个位)可以用1来表示。要得到一个组合权限,我们只需要把这些数字加起来就行了。比如说,我们想要一个权限包括可读和可写,就可以用6来表示;我们可以用7来表示一个包括可读、可写、可执行的权限;0就表示这个文件什么权都没有。
    现在,我们如果要用四个数位来定义一个组合权限。第一个数位定义了扩展权限(后面会介绍的),几乎什么时候都是0。第二个数位表示用户权限,第三个数位表示用户组权限,还有第四个数位表示通用权限。所以,如果要表示一个用户权限为可读可写可执行,用户组权限为只读加可执行,通用权限为只读的文件,我们可以用:0754 (看起来像广东那边的电话区码)

命令:
    chmod [指定的权限] [文件名]

扩展文件权限(Extended File Permissions):
—————————————————————
    suid位和sgid位其实很简单——尽管第一眼看起来好像很复杂。它们只是用于可执行文件和目录。
    每当一个程序执行的时候,这个文件的任务权限就会被指定到运行这个程序的用户和这个用户所在的用户组。这样就对这个文件有了限制。Linux里面有很多关于这个权限的“规章制度”,但不在我们讨论的范围之类。毕竟还有很多很好的书籍里面有详细的介绍。
    有时候,你想让一个普通用户的程序可以做一些root才可以做的事情,或者你希望只能让某个用户或者用户组来执行这个程序,这个时候就要用到suid位和sgid位。如果一个文件加入了suid位的话,那么这个文件只能让它所属的那个用户来执行。注意,suid位对目录是不起作用的。在数字表示法里面,我们用数字4来表示suid位。
    sgid位表示当前这个文件的执行权限只属于这个文件所属的用户组。sgid位通常对目录是没有作用的,但是在某些Unix系统上,它表示所指定的那个目录下的所有文件只能让那个目录所属的用户组来执行。在数字表达法里面,我们用数字2来表示sgid位。
    这两个扩展文件权限如果用的不好的话,会造成一个很大的安全漏洞。所以使用的时候一定要特别小心,如果有更好的方法,就不要用了。还有更多关于文件权限安全方面的知识我还没有介绍,毕竟我的知识也非常有限。如果你知道更多的东西,请发电子邮件给我:[email protected]

参考资料:
—————
    info chmod
    info groups
    info chgrp 

————
晓湖附:终于考完期末考试了,微积分考得不好不坏。嗯,赶快写一篇冬冬发表出来庆祝一下!


----
我的Linux配置:
P200/96M EDO RAM/4.3G+1.5G HD/Cirrus 5446显示卡(2M RAM)/10M Network Adapter with REDHAT 7.1 

http://wangxiaohu.126.com   ICQ:3340023 

[关闭][返回]