2009年2月10日星期二

linux设置目录和文件使用权限

ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置。

ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置,首先请执行ls –l指令,看看现在的状况:

lrwxrwxrwx 1 root root 10 Aug 18 …………

权限标识代号 拥有者 群组名称 文件与目录的相关信息

权限的意义

当执行ls –l 或ls –al 指令时所显示的结果,最前面第2-10字符是用来标识权限,第1个字符一般用于区别文件和目录:

d:表示这是一个目录,事实上在ext2fs中,目录是一种特殊的文件。

-:表示这是一个普通的文件;

l:表示这是一个符号链接的文件,实际上它指向另一个文件,详细第13-5节。

b、c:分别代表区块设备和其它的外围设备,是特殊型态的文件。

S、p:这些文件关系到系统的数据结构和管线,通常很少见到。

一般权限

第2-10字符当中每3个为一组,左边3个字符拥有者权限,中间3个字符夫示与拥有者同一群组的用户之权限,右边3个字符是其他用户的权限。关于这3个一组共9个字符,其代表意义如下:

r(Read,读取):对文件而言该用户具有读取文件内容的权限;对目录来说该用户有具有浏览目录内容的权限;

w(Write,写入):对文件该用户具有新增、修改文件内容的权限;对目录来说该用户具有删除、移动目录内文件的权限。

x(eXecute,执行):对文件而言该用户具有执行文件的权限,对目录来说该用户具有进入目录的权限。

-:表示不具有该项权限。

我们举些范例说明会更清楚:

-rwx- - - - - -:文件拥有者对文件具读取、写入与执行的权限。

-rwxr- -r- -:文件拥有者具有读、写与执行的权限;同群组及其它用户则具有读取的权限。

-rw-rw-r-x:文件拥有者与同群组的用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。

drwx- -x- -xx:目录拥有者具有读写与进入目录的权限,同群组及其他用户仅能进入该目录,却无法读取任何数据。

drwx- - - - - -:除了目录拥有者具有完整的权限之外,其他用户对该目录没有任何权限。

在前一章提到每个用户都应拥有自己的专属目录,通常集中放置于/home目录下,这些专属目录的默认权限为:

请注意上面kdeuser、linuxCon和UserAdd用位用户用不一样的方式新增用户帐号,默认权限会有所不同。如果您linuxCon程序或执行 useradd指令,默认的权限是“rwx- - - - - -”,假若使用Kuer程序来建立帐号,则默认权限变成“rwxr-xr-x”。前者表示目录拥有者本身具备所有权限,而同群组与其他用户无法进入该目录。后者代表群组与其他用户权具有进入目录的权限,却无法得知里面有哪些文件。

Root帐号执行mkdir指令所建立的目录,其权限默认为“rwxr-xr-x”,其它帐号的用户执行该指令建立之目录,默认的权限是“rwxrwxr-x”。你可以视实际需求而定,去变更目录的权限。

此外,默认的权限可用umask指令更改,用法非常简单,只需umask 777指令,便代表遮蔽所有的权限,因而之后建立的文件或目录其权限会变成000,依此类推,通常root帐号搭配的数值为027、022与077,一般用户则是采用002,这样所产生的权限依序是755、750、700和775。有关权限的数值标识法,后面将会详细说明。

(注意:umask无法遮蔽特殊权限,关于特殊的信息,请见后面)

在用户登入系统时,用户环境就会自动umask指令,来决定文件、目录之默认权限,这个部份的相关设置位于/etc/profile文件里。



现行目录与上层目录

“.”和“..”是做什么用的?相信用过dos的用户都很清楚,经常到处ftp的用户也熟悉。前者代表这个目录,后者代表上一层目录。这部份在很多操作系统里都是一样。

需要留意Unix之类的操作系统采用绝对路私径,换成dos的讲法来说明,就是当用户招待一个程序时,系统会去搜索path、append所指定的路径,而不会寻找现有所处的目录是否有这个程序。用户要执行现行目录中的程序,必须在程序前面标明./或干脆指出完整的路径。


特殊权限

其实文件与目录的权限设置不只如此,还有所谓的特殊权限存在。由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞、甚至摧毁系统。

s或S(SUID,setUID):一个可执行的文件搭配这个权限,该文件便能得到特权,任意存取该文件拥有者能使用的全部系统资源。注意具备SUID权限的文件,怪客经常利用这种特性,以SUID配上root帐号拥有者,无声无息地在系统里开扇后门,供日后进出使用。

s 或S(SUID,setGID):套用在文件上面,其效果和SUID相同,只不过将文件拥有者换成群组,该文件就可以任意存取整个群组所能使用的系统资源。套用在目录上面,则所有被复制到这个目录下的文件,其所属的群组都会被重设为和这个目录一样,除非在复制文件时加上-p(divserve,保留文件属性)的参数,。才能保留原来所属的群组设置。

t或T(sticky,粘着):曾提到/tmp和/var/tmp两个目录,开放供所有用户暂时存放文件,亦即每位用户都拥有完整的权限进入该目录,去浏览、删除和移动文件。假使碰到某位用户存心搞鬼,恣意乱删其他用户放置的文件。暂存目录将形同危险地带,造成没有任何用户能够安心利用这些目录。我们把暂存目录的sticky权限找开之后,存放在该目录的文件,仅准许其拥有者去删除、移动它,避免不守法的用户之无故骚扰。假使对文件启用这个权限,则该文件的最后更新时间(last modified time)将不会改变。

注意:Linux系统下“执行文件”其扩展名毋须非.exe不可,只要加上可执行的权限,该文件就是执行文件。Linux也没有隐藏属性、系统属性的问题,在权限许可下什么都能够看到。

因为SUID、SGID、Sticky占用X的位置来表示,所以在表示上有大小写之分,假若同时设打开执行权限和SUID、SGID与Sticky,权限标识字符是小写的形式:

-rwsr-sr-t 1 root root 9Aug 19 21:47 showme

倘若关闭执行的权限,则标识字符会变成大写:

-rwSr-Sr-T 1 root root 9Aug 19 21:47 showme

改变权限

要更改文件或目录的权限,有多种方法可以选择,下面我们将一一介绍。

文件管理员

在linux中,图形界面的文件管理员能够轻易地改变文件、目录的权限,无讼使用GNOME的gmc或KDE的kfm都可:

方法:在要改变的文件和目录上面点击右键/属性/权限

数字改变法

文件或目录的权限标识,是用“rwx”这3个字符重复3次形成9个字符,分别代表拥有者、群组和其他用户的权限。有些时候9个字符似乎过于麻烦,因此还有另外一种方法,是以数字来表示权限,而且仅需3个数字就能搞定。

r:对应数值为4;

w:对应数值为2;

x:对应数值为1;

-:对应数值为0。

遵循上述法则,“rwx”合起来就是4+2+1=7,一个“rwxrwxrwx”权限全开的文件,它的数字标识为“777”;而完全不开放的权限文件“- - - - - - - - - ”,它的数值标识为“000”。下面我们举几个例子说明:

-rwx- - - - - :等于数字标识700;

-rwxr- -r- - :等于数字标识744;

-rw-rw-r-x:等于数字标识665;

drwx- -x- -x:等于数字标识711;

drwx- - - - - -等于数字标识700。

文字模式下可执行chmod指令去改变文件与目录的权限,我们先执行ls –l指令观察目录的情况。

执行下列指令更改nohup.out文件的权限:

[*@* *]$chmod 777 nohup.out 将权限改为777

[*@* *]$ ls –l 再观察一次目录

我们可以看到nohup.out文件的权限已经更改为“rwxrwxrwx”。

假若要加上特殊权限,就必须使用4位数字方能表示。特殊权限的对应数值为:

s或S(SUID):对应数值为4。

s或S(SGID):对应数值为2。

t或T:对应数值为1。

用同样的方法更改文件权限即可。

文字改变法

除了数字表示可以更改权限之外,还能使用文字表示法去设置权限。第2-10字符亦能以“rwx”每3个一组,分别用“u”“g”与“o”来表示:

用chmod指令配合文字参数就能改变权限设置,下面举例说明:

“u+rw”:赋予文件拥有者读取和写入的权限。

“g-x”:将同群组用户的执行权限取消。

“g+x,o+rx”:赋予同组用户执行的权限,共他用户读取、执行之权限。

“u+rwx,g-w,o-w”打开文件或目录拥有者完整的权限,并且关闭同群组其用户的执行权限。

“o=rx”: 赋予其他用户读取和执行的权限。

“ugo+x”或“a+x”:同时打开拥有者、群组、其他用户的执行权限,“ugo”可以合称为“a”

“+x”:和“ugo+x”、“a+x”的意义相同,没有指定u、g、o或a时,即代表全部。

“o+T”:打开sticky特殊权限。

“u+s,g+s”打开SUID和SGID特殊权限。

假若想一次更改某个目录下的所有文件权限,包括子目录中的文件权限也要更改,请使用参数-R表示运行递归处理,有无递归处理的差别在于:

chmod 777 cassia TEST:仅把cassia TEST目录的权限改为“rwxrwxrwx”。

Chmod –R 777 cassia TEST:将整个cassia TEST目录与世隔绝当中的文件和子目录之权限统统改成“rwxrwxrwx”。

Chmod指令

Chmod指令可用来把文件或目录移转给其他的用户或群组,执行的指令格式为:

[*@* *]# chmod “指定该文件的拥有者”. “指定该文件所属的群组” “文件”

只要变更拥有者,请执行[*@* *]# chmod “指定该文件的拥有者” “文件”;仅需变换所属群组,则执行[*@* *]# chmod “指定该文件所属的群组

没有评论: