文件的权限、扩展属性以及facl

大纲:
一、前言
二、普通权限
三、特殊权限
四、ext文件的扩展属性
五、文件的访问控制列表(facl)

一、前言

linux中常见的权限有读(r)、写(w)、执行(x),还有3个特殊的权限。因此下面就从普通权限开始介绍起

二、普通权限

rwx:读 写 执行

blob.png

rwxr-xr-x : 读写执行 读_执行 读_执行  (分别对应)属主 属组 其他组

111101101:对应上述位转化成10进制就是755(因此在赋予权限时就可以用 chmod 755 FILE )

在linux里面,有目录及目录中的文件,而上述权限相对应的目录及文件有所不同,如下:

目录:

r:能用ls查看目录中的文件名列表
w:可以在目录中添加/删除文件
x:能够cd进目录,以及使用ls -l 命令查看文件列表

文件:

r:能查看文件内容
w:可以修改文件内容
x:使文件可以启动为一个进程

权限的修改:

1、使用八进制来进行

chmod [-R] MODE FILE  :如 chmod 777 /tmp/123.txt

blob.png

[-R]递归修改:修改一个目录及里面文件的权限,仅对当前文件生效,后追加的不生效 

2、指定一个或多个类别

chmod 类别 = MODE  :如 chmod u=rw /tmp/123.txt

blob.png

同理:chmod ug=rw /tmp/123.txt
    chomd o=  /tmp/123.txt   等同于 chmod o=--- /tmp/123.txt
    chomd a=r /tmp/123.txt   等同于 chmod ugo=r /tmp/123.txt

3、指定类别的权限的+/-

 chmod 类别+/- MODE : 如 chmod u+x /tmp/123.txt

blob.png

注意 chmod +w 仅对u生效 ,r x 是对a生效

4、参考其他文件的权限

chmod --reference=FILE  :如 chmod --reference=/tmp/file

blob.png

三、特殊权限

特殊权限有三类:suid sgid sticky

suid: 

修改方式:chmod u[+/-]s FILE

当进程执行此文件时,将以此文件的属主进行执行,当然前提是此类文件都是可执行程序。

比如:/etc/shadow 是没有权限访问的,但是任何用户都可以修改自己密码,

blob.png

blob.png

当用户(ubuntu)访问这个文件时,实际上是以此文件的属主root发起这个进程,所以可以修改shadow这个文件。

guid:

修改方式:chmod g[+/-]s FILE

类似于sgid

blob.png

那当上图这种情况下,是否可以修改用户的密码?

要回答这个问题,我们先要知道进程访问文件的次序,如下:

进程的属主,是否与被访问的文件属主相同;
进程的属主所属于的组当中,是否有一个与被访问的文件的属组相同;
以other的权限进行访问;

假设我们以ubuntu这个普通用户访问/etc/shadow 时,相当于属主所属的组是root(/usr/bin/passwd 的属组root),去访问/etc/shadow,但是shadow 的属组虽然为root,但是却没有任何可执行权限,因此不能修改用户的密码。

blob.png

那这个guid有什么用呢?

好处如下:如果将目录的属组设置SGID权限之后,所有用户在此目录创建文件的属组不再是用户的基本组,而是目录的属组

blob.png

这样几个用户就可以加入一个附加组,创建一个目录,将其属组改成相同的附加组;从而可以实现在同一目录下,多用户可以进行文件共享的操作了

如: 用户ubuntu 、007的附加组都有一个share,/tmp/share 的属主属组为 root share 

因此 在/tmp/share 里面ubuntu  007 建立的文件可以互相访问以及修改

blob.png

但是用户可以删除其他用户建立的文件,要避免这个问题,需要用到以下的sticky位功能。

sticky

修改方式:chmod o[+/-]t FILE

使用了这个权限,则用户不能删除其他用户创建的文件。如007 删除不了ubuntu用户创建的文件。

blob.png

当然以上三个权限又可以组成一个八进制数值,我们赋值的时候也可以这样做

chmod 7111 FILE  如:chmod 7111 /tmp/share

blob.png

如果是 7000 FILE   如:chmod 7000 /tmp/share

blob.png

这就是权限位大小写字母的区别

四、ext文件的扩展属性

lsattr 查看属性

blob.png

上面有个e,只要能看到这个文件,肯定都存在e属性,表示支持这个扩展属性格式的。

chattr修改属性

chattr [+-=][FILE]

a:只能增加,不能修改。 
c:压缩格式,将会自动的压缩文件。 
d:尚未备份 
i:无法修改

以下以i属性作为介绍,设置而了i属性后,即使root也无法修改文件。

blob.png

五、文件的访问控制列表(facl)

facl也是用到了文件的扩展属性,但是和以上的文件扩展属性没有相关,只是有点近似。

作用:让普通用户透过文件的扩展属性,为其添加额外的用户访问授权机制而无须改变其属主、属组,也不用更改other的权限

命令:     

 设置    setfacl -m   u:USERNAME/UID:MODE FILE
                g:GROUPNAME/GID:MODE FILE
 取消    setfacl  -x  u:USERNAME/UID   FILE                                      g:GROUPNAME/GID  FILE   
 查看    getfacl

举个例子:

用户ubuntu对一个属主是自己的文件进行facl授权,让用户007可以对此文件拥有读写权限。但是007本身是个数字,直接使用007会导致授权到UID为7的用户;因此使用007的uid,即4431进行授权

blob.png

用户007进行文件的更改:

blob.png

设置了facl后,权限应用模型是 自上而下的生效的。属主-用户级别facl-属组-组级别facl-其他

以上是一些体会,还有很多扩展功能还没学到,以后再慢慢分享。

原创文章,作者:麦鲸,如若转载,请注明出处:http://www.178linux.com/3838

(0)
麦鲸麦鲸
上一篇 2015-05-04
下一篇 2015-05-04

相关推荐

  • N22-网路班-第2次作业-冥界之王

    1.linux上文件管理类命令都有哪些,其常用的使用方法极其示例演示。(1).创建目录格式:mkdir [选项]  目录功能:创建目录常用选项说明: -m  创建目录的同时设置访问权限 -p  一次性创建多级目录 -v  显示过程[root@Cent…

    Linux干货 2016-08-22
  • bash脚本编程实例

    bash脚本编程实例 1.写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态 在线的主机使用绿色显示 不在线的主机使用红色显示 #!/bin/bash for i in {1..254};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/…

    Linux干货 2017-08-20
  • Linux系统中硬链接和软链接

    使用对象:linux初学者。   一、硬链接和软链接的概念 硬链接是给已经存在的数据文件另外创建一个名字,通过该名字也可以访问该数据文件。就好像给张三起个绰号叫“小二黑”,通过“张三”这个名字能找到这个人,通过“小二黑”这个名字也能找到这个人。        软链接是给文件名在其…

    Linux干货 2016-10-20
  • 网络管理之基础知识

    Linux的网络配置 IP地址   它们可唯一标识 IP 网络中的每台设备  每台主机(计算机、网络设备、外围设备)必须具有唯 一的地址  IP地址由两部分组成: • 网络ID: • 标识网络 • 每个网段分配一个网络ID • 主机 ID: • 标识单个主机 • 由组织分配给各设备   IPv4地址格式:点分十进制记法  …

    Linux干货 2016-09-10
  • 文件压缩和软件包管理

    Linux压缩打包 压缩是一种通过特定的算法来减小计算机文件大小的机制。有利于文件在网络上的传输,节约带宽。在Linux中,压缩是以后缀名区分文件的。(Linux中很少见)压缩文件都会呈现醒目的红色。 注意!以下压缩软件只能压缩文件而不能压缩目录。不能对目录直接压缩! compress命令 compress这个命令是非常老旧的一款命令,现在基本已经不用了 而…

    Linux干货 2016-08-24
  • linux启动和内核管理

    linux启动和内核管理:1. 加载BIOS 的硬件信息,获取第一个启动设备2. 读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备4. 核心执行init 程序,并获取默认的运行信息5.init 程序执行/etc/rc.d/rc.sysinit 文件6. 启动核心的外挂模…

    Linux干货 2017-03-28