码迷,mamicode.com
首页 > 其他好文 > 详细

文件权限

时间:2016-07-03 23:46:04      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:文件权限

文件的权限

当运行如下命令时:

[root@marvel ~]# ll /etc/passwd

出现下面结果:

-rw-r--r--. 1 root root 1933 May 19 11:14 /etc/passwd

解释如下:

1)- 代表文件类型

-:普通文件

d:目录文件

l:软连接文件

s:套接字文件

p:管道文件

c:字符设备文件 无缓存,顺序访问

b:块设备文件 有缓存,随机访问


2)rw-r--r-- 代表文件的权限

能使用此文件的用户分为三类,属主,属组的用户和其他用户

从左到右,每三位分别代表三类用户的权限

r:读权限

w:写权限

x:执行权限

-:代表没有相应位置的权限

 

对于文件,读写执行分别代表的含义:

r:可用文件查看类工具获取文件内容

w:可修改其内容,只有此权限时,不能查看再修改,但是可以用重定向修改

x:可以把文件提交给内核,启动一个进程来执行

 

对于目录来说,读写执行分别代表的含义:

r:可以数用ls查看此目录中的文件列表

w:可以在目录中创建/删除文件

x:可以使用ls -l查看此目录中文件列表的详细信息,也可以用cd进入此目录

 

Attention:对于某个用户来说,目录有w权限,无论里面文件是否有w权限,都可被删除

 

基本的文件权限就用这9位来表示,这样将其功能位置固定,用10表示对应其功能开关,那么就是一个9位的二进制数,再将每三为捆绑加以区分对每类用户的权限,这样就可以清晰的看到每类用户的权限了

e.g.rw-r----- 对应二进制 110 100 000 再将每三位捆绑 变成三位的八进制数。 640 属主读写权限,属组读权限,其他无权限,这通常是一个文件的默认权限 目录默认 755


3). 如果有此项,则代表该文件有selinux标签,使用ll -Z查看,如果是目录则用ll -dZ

Following the file mode bits is a single character that specifies

     whether an alternate access method such as an access control list

     applies to the file.  When the character following the file mode

     bits is a space, there is no alternate access method.  When it is

     a printing character, then there is such a method.

    在文件权限位后面,附加有一个单字符。用来表示是否有一个

    可替换的访问控制措施应用在这个文件上。例如,访问控制列表(ACL,access control list)。

    当文件权限位后面附加的是一个空格时,表示系统没有可替换的访问控制措施。

    当是一个可打印字符时,表示系统存在这样一个访问控制措施。

     GNU `ls‘ uses a `.‘ character to indicate a file with an SELinux

     security context, but no other alternate access method.

     GNU的ls命令使用‘.’字符表示文件使用了selinux

     安全上下文,但是没有其他可替代的访问控制措施

     A file with any other combination of alternate access methods is

     marked with a `+‘ character.

    在使用SElinux安全上下文的同时,混用其他访问控制措施的文件用+字符标记


4) 1代表硬链接或软链接的数量(参见MyNewDocument/New_1/文件系统下/inode)


5)文件的属主


6)文件的属组


7)时间戳


8)文件或目录名字




1.修改文件权限

  chmod [option] OCTAL/MODE file/directory

     -R 递归修改权限 修改目录权限采用

     OCTAL 八进制数,在上一节上中描述了八进制数的由来,跟此处的八进制数一致

      chmod 644 file 

      将文件权限设为644 即 rw- r-- r-- 

     

     MODE [u,g,o] [+/-/=] [rwx]

       u:代表要设置属主权限

       g: 代表要设置属组权限

       o:代表要设置其他权限

       a:代表所有人

       这三个可以组 例如 ug= uo+等

       

       +:某一类用户增加权限

       -:某一类用户减少权限

       =:指定某一类用户的权限

       

       rwx:最多3位,要什么权限就写什么权限,没有不写

        这是基本权限位,除此还有st

chmod --reference=rfile file 依据rfile的权限来设置file的权限

小窍门:

设置一个目录本身及目录中的所有文件和目录的权限,对于所有人来说,使文件具有读写权限,目录具有读写执行权限

chmod -R a=rwX dir

只有x位有大写的权限,除此之外,大写,还有ST

2.改变文件的属主和属组

chown [option] [owner][:group] file

     -R 递归修改

      owner 只修改属主

      owner:Group 修改属主和属组

      :group 修改属组

      Attention:“:”可以被.代替

chown --reference==rfile file 依据rfile的属主属组来设置file的属主属组


3.umask 参见 MyDocument/1/umask


4.特殊权限 SUID SGID Stickybit

1)安全上下文

前提:进程有属主和属组(但是没有基本组和附加组的概念),文件有属主和属组

(1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否有执行权限

(2)执行文件启动为进程之后,其进程的属主为发起者,进程的属组为发起者的属组

(3)进程访问文件时的权限,取决于进程的发起者

(a)进程的发起者,就是文件的属主,则应用文件属主的权限

(b)进程的发起者,属于文件的属组,则应用文件属组的权限

(c)应用文件“其他”权限

2)可执行文件上的SUID

(1)作用对象:二进制可执行文件

(2)标记,二进制可执行文件的属主的执行权限位:

s:代表在设置SUID之前,这个二进制可执行文件属主有x权限

S:代表在设置SUID之前,这个二进制可执行文件属主没有x权限

(3)意义:

任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否有执行权限

执行文件启动为进程之后,其进程的属主不是发起者,而是可执行程序文件的属主

以可执行二进制文件的属主身份启动进程,而后进程访问的文件的权限,都要看二进制可执行文件的属主,而非此二进制可执行文件的发起者(当前用户)

(4)设置在目录上无意义

chmod u+/-s file

3)SGID权限

   (1)作用对象:二进制可执行文件或目录

 (2)标记,二进制可执行文件或目录的属组的执行权限位:

s:代表在设置SGID之前,这个二进制可执行文件或目录的属组有x权限

S:代表在设置SGID之前,这个二进制可执行文件或目录的属组没有x权限

(3)意义:

(a)作用在二进制可执行文件上

任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否有执行权限

执行文件启动为进程之后,其进程的属主不是发起者,而是可执行程序文件的属组

以可执行二进制文件的属主身份启动进程,而后进程访问的文件的权限,都要看二进制可执行文件的属组,而非此二进制可执行文件的发起者(当前用户)

(b)作用在目录上

有这样一种需求,有一组用户加入了同一个组gp1,在磁盘上想创建一个目录pub,作为gp1组的公共目录,每个人都可以在这个目录中,增删文件,修改组内成员的文件

mkdir pub

chown -R :gp1 pub

这样组内成员都可以在pub中增删文件,但创建的文件的属组还是自己的属组,也只能删除自己的文件。

我们似乎可以这样做

chown -R :gp1 pub

但是每每有人创建文件或目录,管理员都要执行此操作,实在显得有些难堪

那么这就是目录上SGID的发挥的地方了

默认情况下,在某目录中,用户创建文件或目录时,其属组为用户的属组

一旦某目录被设定了SGID,则对此目录有写权限的用户(可能是目录的属主,属组用户,或其他用户)在此目录中,创建的文件或子目录所属的组为此目录的属组,而权限要应用对应用户的umask,

Attention:子目录继承sgid,且目录(也就是前面子目录的父目录)设置sgid之前,其目录内已存在的文件或目录不会的属组不会被修改,sgid权限也不会被修改(特指已存在的目录)

(4)设置权限

chmod g+/-s DIR/file

4)Sticky

(1)作用对象:目录

(2)标记目录的其他用户的执行权限位:

x:代表在设置sticky之前,这个目录的属组有x权限

X:代表在设置sticky之前,这个目录的属组没有x权限

(3)意义:

    通常,对于某目录,用户有写权限,那么这个用户就可以删除该目录下的任意文件或目录(包括root的文件或目录)

    在目录上设置sticky位,只有文件或目录的所有者或root可以删除文件或目录,但是否能修改为文件和目录,还是要看这个文件和目录对于用户来说有无权限,

    Attention:设置了sticky位的目录的子目录不继承sticky

    sticky设置在文件上无意义

 

(4)设置权限

chmod o+/- dir


  5)特殊权限的数字表示法

  三个特殊权限的二进制位,组成了一个8进制数,在数字表示法中放在普通权限前面

  如chmod 4640 file 代表给文件设置了suid

 

 

 

5.另外的特定属性

chattr +i file 不能删除,改名和更改

dir  不能删除,改名和创建和删除文件

chattr +a file/dir 只能增加

lsattr 显示这里的特定属性

Attention:这个属性和cp --preserve=xattr中的xattr不是一回事

 

 


文件权限

标签:文件权限

原文地址:http://bloodhero.blog.51cto.com/4496010/1795316

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!