【Linux 学习】文件普通、默认和特殊权限

Linux 文件普通和默认权限

Linux系统中,几乎所有的资源都是以文件的形式存在的,比如常用的设备等。而文件的权限对于一个文件的管理来说至关重要,现就来谈谈Linux系统中的文件的权限。

1、文件所属对象与权限

Linux为每一个文件增加3个所属对象:文件的拥有者、文件所属的群组以及其他人。由于Linux系统是一个多用户多任务的系统,经常会有多用户登录并在自己的home目录下面建立自己的文件与文件夹。Linux为了更好地管理这些多用户下的文件,因此设置3个所属对象。文件的拥有者一般为当前登录并创建该文件的用户。文件的所属群组是为了更方便地在这些多用户中实现这些文件的共享。而其他人则是为了更好地对非共享者针对该文件的管理。

针对每一个Linux文件,3种文件所属对象各自对应有3种权限rwxr(可读)w(可写)x(可执行)。例如某文件夹下面输入如下命令ls -al便可以列举该文件夹下面所有文件的一些属性:

[root@www ~]#ls -al

total 156

drwxr-x---   4    root   root     4096   Sep  8 14:06 .

drwxr-xr-x  23    root   root     4096   Sep  8 14:21 ..

-rw-------   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg

-rw-------   1    root   root      199   Sep  8 17:14 .bash_history

-rw-r--r--   1    root   root       24   Jan  6  2007 .bash_logout

-rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile

图中的列出了6个文件,每个文件具有7个属性(按列):

[权限]  [连结数目]  [文件拥有者]  [文件所属组]  [文件大小bytes]  [创建或修改时间]  [名称]

而在文件权限那一栏(列)的格式是:-rwxrw-rw-

该列中的第1个字符表示这个文件的类型:d/-/l/b/c(分别表示:目录/文件/连结文件/可供存储的接口设备/串行端口设备)

该列中的第2个字符到第4个字符表示这个文件的拥有者所具有的权限:rwx

该列中的第5个字符到第7个字符表示这个文件所属的组所具有的权限:rw-,其中-表示不具有“可执行权限”

该列中的第8个字符到第10个字符表示其他人对于这个文件所具有的权限:rw-,其中-表示不具有“可执行权限”

2、修改文件权限和所属对象

2.1 更改文件拥有者

chown -R 新的文件拥有者 文件或目录

chown -R 新的文件拥有者:新的文件所属组 文件或目录

选项-R表示对该目录下面所有文件或者目录执行相同更改文件权限操作。

2.2 更改文件所属组

chgrp -R 新的文件所属组 文件名或者文件夹名

其中选项-R2.1类似。

2.3 更改权限

2.3.1  利用数字更改

Linux下,r对应4w对应2,x对应1,从而rwx对应4+2+1=7rw-对应4+2=6等等。

chmod -R xyz 文件名或目录名

其中xyz分别表示文件拥有者、文件所属组和其他人对应的权限的数值。例如某文件新的权限为rwxrw-r--,那么xyz=764

2.3.2  利用r/w/x更改

chmod -R u=rwx,g=rw,o=rx 文件名或文件夹名(等号指定方式)

cmod -R u+r,g-w,o-x 文件名或文件夹名(加减修改方式)

chmod -R a=rw- 文件名或文件夹名

上面的u表示文件拥有者,g表示文件所属群组,o表示其他人,a表示所有。

3、权限对于目录和文件的区别

对于文件:

R:表示可读

W:表示可写,但不可以删除

X:表示该文件是Linux下面可以执行的文件,比如*.sh*.bat

对于目录:

R:表示可以查询读取该目录下面的文件名(目录存放的是文件名),即ls

W:建立和移动文件与目录、删除已经存在的文件与目录、更改名称

X:该权限表示对应的用户是否能够进入该目录内

4、默认权限

前面介绍的是文件的权限以及修改,而Linux系统在我们建立文件和文件夹时是分配了默认权限的。对于文件而言,一般我们都是仅仅需要其记录数据而非执行,因此Linux系统针对文件分配的默认权限为644(666-022=644)。其中666为系统针对文件而取出其“x”属性而得来的,022为umask(即为计算系统默认权限需要减掉的权限)。同样,针对目录而言,目录是允许进入的(权限“x”决定),系统为目录分配的默认权限是755(777-022),022仍然为umask。

umask并不是一成不变的,其是可以修改配置的:

[root@www ~]# umask 002
当配置umask=002时,建立文件时,文件的默认权限为666-002=664,即rw-rw-r--,建立目录时,目录的默认权限为777-002=775,即rwxrwxrw-。

5、特殊权限

5.1 set UID(SUID)

该权限只能用于二进制的程序文件,并且需要该权限配置到二进制程序文件的拥有者的“x”位置处,比如-rwsr-----。当程序的使用者(相对于该文件为others而非拥有者)具备“x”权限时,该程序的使用者就相当于程序的拥有者并执行(s权限位于“x”位置)该二进制程序。

5.2 set GID(SGID)

相对于SUID而言,该权限需要配置到二进制程序文件或目录所属组的“x”位置处。当程序的使用者(相对于文件为others而非拥有者)具备“x”权限时,该程序的使用者便可以获得群组的权限并执行(s权限位于“x”位置)该二进制程序。而对于目录而言,若使用者相对该目录的拥有者而言具有rx权限,同时具有w权限时,该使用者在该目录下创建的文件的所属组即为此目录的所属组。

5.3 Sticky Bit(SBIT)

这个权限仅仅针对目录,该权限配置到others其他人的“x”位置处。如果用户相对于该目录是该目录的所属群组中用户的或者其他人,并且具有w和x权限(rwxrwxrwx),则表示可以新建文件或者目录,但如果该文件已经被设置SBIT权限后,用户建立的文件或者目录只能被自己或者root删除



猜你喜欢

转载自blog.csdn.net/bible_reader/article/details/76795215