日期:2014-05-16  浏览次数:20767 次

Linux文件权限介绍

Linux文件权限

??? 在Linux系统中,每一个文件都包含有访问权限,通过这些权限可控制哪些用户能访问这些文件(目录)。

一、文件权限概述

??? 在Linux中,将文件访问权限分为3类用户来进行设置:文件所有者(u)、同组用户(g)和其他用户(o),可分别为这3类用户设置不同的操作权限。

??? 对于每类用户,又可以设置3种权限:读(r)、写(w)和执行(x),这3种权限可以叠加组合。例如,文件所有者对文件具有读和写的权限(rw)。

??? 当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。

??? 如果文件只有读(r)权限而没有写(w)权限,表示该文件是只读文件,不能对文件内容进行修改。

??? 对于3类用户,可分别设置3种不同的权限,因此就构成了一个有9种类型的权限组合。

二、.权限位

??? 使用ls命令显示文件的全部信息时,最左侧显示有10个字符,除第1个字符表示文件的类型之外,其他9个字符都表示文件的权限。

??? 1.??? 如果使用( ls –l)命令查看当前工作目录中的文件,会出现以下权限:

?????????????????????

?

??? 2.?? 对于文件或目录,权限字符所代表的意义不同,具体如下:

第一个字符表示文件类型主要有:

??? “—”表示这是一个普通文件。

??? “d”表示这是一个目录文件。

??? “l”表示这是一个符号连接文件,实际上它指向另一个文件。

??? “b”表示块设备,如硬盘、光盘或U盘等。

??? “c”表示外围设备,是特殊的文件类型。

??? “s”表示系统的套接字文件。

???? “p”表示系统的管道文件。

后面的9个字符表示权限:

???? “r”(Read):读取权限。如果文件具有该权限,表示对应用户可读取文件的内容;如果目录具有该权限,表示对应用户可浏览目录。

??? “w”(Write):写入权限。如果文件具有该权限,表示对应用户可对文件进行新增、修改内容;如果目录具有该权限,表示对应用户可删除、移动目录内的文件。

??? “x”(eXecute):执行权限。如果文件具有该权限,表示对应用户可执行该文件(前提是该文件必须是可执行的文件);如果目录具有该权限,表示对应用户可进入该目录。

???? “-”:若对应位置权限位为字符“-”,表示对应用户没有该权限。

例如:

1. drwx r-x r-x
??? 表示目录所有者(root)可对目录进行各种操作,而同组用户具有浏览权限(r)和进入目录的权限(x),其他用户也具有浏览权限和进入目录的权限。

??? 在实际使用中,还可使用八进制数字来表示文件的访问权限。八进制数的每一位表示3位二进制,而在权限设置中每种类型的用户权限也正好有3位。因此,可用3位二进制数来表示文件的访问权限,若某一位具有权限,则该位为1,若某位没有权限,则该位为0。

?? 1.?? 字符表示:???? rwx???? r-x????? r-x

?? 2.?? 二进制表示: 111???? 101???? 101

?? 3.?? 八进制表示: 7????? 5?????? ?? 5


根据以上规则,可知道文件的权限代码和八进制数(或二进制数)的对应关系,如下:

?????? 权 限?? 二进制??? 八进制?? 权 限?? 二进制?? 八进制
???????? ---?????? 000?????????? 0??????? r--????????? 100????????? 4
???????? --x?????? 001?????????? 1??????? r-x????????? 101????????? 5
???????? -w-????? 010?????????? 2??????? rw-????????? 110????????? 6
???????? -wx????? 011?????????? 3??????? rwx????????? 111????????? 7

三、 修改文件权限

?? 使用chmod命令可修改文件的权限。只有文件的所有者和超级用户才能修改其权限。

??? chmod命令有两种用法:一种是通过权限字母和操作符表达式的方法来设置权限;另一种是使用数字来设置权限。

??? 1.使用权限字符设置

使用权限字符设置权限的命令格式如下:

chmod [用户类型] [+ | - | =] [权限字符] 文件名

"用户类型"可用以下字母中的任一个或者它们的组合来表示需要设置权限的部分:

??? u:表示对文件的所有者设置权限。

??? g:表示对文件所有者相同组的所有用户设置权限。

??? o:表示对其他用户设置权限。

??? a:表示对所有用户设置权限(这是系统默认值)。

紧跟在用户类型后面的是操作符,这3个符号的意义如下:

??? +:添加某个权限。

??? -:取消某个权限。

??? =:赋予给定权限并取消其他所有权限。

??? 而权限字符可使用r、w或x的组合。另外也可使用s,表示在文件执行时把进程的属主或组ID提升为该文件的文件属主。

?? 设文件myfile.txt的权限是"rw-r--r--",如果该文件允许同组用户和其他用户也具有修改权限(即将同组用户和其他用户添加写权限),可使用以下命令进行修改。

??? # chmod go+w myfile.txt

执行以上命令后,再使用ls命令查看文件myfile.txt,可看到其权限已被修改

提示:使用“-”号即可取消对应位置的权限。

?? 使用以下命令可设置目录test的setgid位:

??? 1. # chmod g+s test

?? 执行以上命令后,使用ls命令查看test目录,可看到该目录的同组权限由原来的"r-x"变为"r-s"了。

??? 为test目录设置好setgid权限后,在test目录下创建新的目录时,该目录将继承父目录的权限。

??? 提示:为文件或目录设置s权限后,如果文件原来位置有x权限,执行该命令后其权限字符s为小写,若文件原位置没有x权限(即显示为"-"),则设置s权限后将显示为大写字符S。

??? 2.使用数字设置权限

?? 用数字表示权限的组合,该组合由3位八进制数来表示文件的3类用户的权限组合。

?? 命令格式如下:

??? 1.?? chmod [数字组合] 文件名

将上例中修改权限的命令改为用数字法进行,可使用以下命令:

??? 1.??? # chmod 666 myfile.txt

??? 执行以上命令,表示将文件myfile.txt的设置为所有者、同组、其他用户具有读和写的权限。

?? 四、 修改所有者

??? 使用chown命令可以修改文件的所有者和组,该命令的格式如下:

??? 1.??? chown 所有者:组 文件

??? 该命令将指定文件的所有者修改为指定的所有者,同时可以指定用户所有的组。

??? 注意:只有root用户可以更改文件的所有者,root用户或文件所有者才可以更改文件的组。如果是文件所有者但不是root用户,则只能

?? 将组更改为当前用户所在组。

??? 如将myfile.txt文件的所有者修改为my,组也修改为my,可使用以下命令:

??? 1.