20170724 文件权限

作者: 哈喽别样 | 来源:发表于2017-07-25 17:51 被阅读15次

概要

linux文件权限
linux文件特殊权限
ACL 访问控制列表

一、linux文件权限

(一)linux文件属性

ls -l 命令可以看到文件相关属性,每个字段的意义如下:


1. chown 设置文件所有者

  • 语法:chown [OPTION]... [OWNER][:[GROUP]] FILE...
  • 用法:
chown hellopeiyang a.txt            <!--改变a.txt文件所有者为hellopeiyang-->
chown hellopeiyang:natasha b.txt    <!--改变b.txt文件所有者为hellopeiyang,所属组为natasha-->
chown :natasha c.txt                <!--改变c.txt文件所属组为natasha-->
chown hellopeiyang: d.txt
<!--改变d.txt文件所有者为hellopeiyang,所属组为所有者的主组hellopeiyang-->
chown -R hellopeiyang test1 
<!--递归改变test目录和以下所有文件目录的所有者为hellopeiyang-->
  • 实验结果如下图:



2. chgrp 设置文件所属组

  • 语法:chgrp [OPTION]... GROUP FILE...
  • 选项:-R 递归设置
  • chgrp的功能chown也能够实现

(二)linux文件权限

linux定义了以下三类用户:

  • 所有者 (owner,u)
  • 所属组 (group,g)
  • 其他人 (other,o)

linux文件为每类用户规定了三种权限

  • 读权限 (readable,r)
  • 写权限 (writable,w)
  • 可执行权限 (executable,x)

1. 三种权限在文件与目录中的不同效果

  • 文件:
    • r: 可以查看文件内容
    • w: 可以修改文件内容
    • x: 可以被系统运行
  • 目录:
    • r: 可以通过ls命令查看目录内文件列表
    • w: 可以在目录下新建、删除文件
    • x: 可以通过cd命令进入目录内
    • X:只给目录x权限,不给文件x权限

2. 文件权限描述方法

  • 描述方法一:模式法
    用户描述:u:所有者,g:所属组,o:其他人,a:所有三类用户
    权限变化描述:+:增加权限,-:减少权限,=:将权限赋值
    例如:
u+w:所有者增加写权限
g-x:所属组减少可执行权限
a=rw:所有用户的权限赋值为读、写权限
  • 描述方法二:数值法
    读权限赋值为4,写权限赋值为2,可执行权限赋值为1,通过对权限的赋值相加得出相应的权限组合如下:
rwx 7=4+2+1   rw- 6=4+2+0   r-- 4=4+0+0
-wx 3=0+2+1   -w- 2=0+2+0   
--x 1=0+0+1
--- 0=0+0+0

用三位数字描述文件三类用户的权限修改情况如下:

764 rwxrw-r--     <!--所有者权限:全部,所属组权限:读写,其他人权限:读-->
620 rw--w----     <!--所有者权限:读写,所属组权限:写,其他人权限:无-->

3. chmod 修改文件权限

  • 语法:
chmod [OPTION]... MODE[,MODE]... FILE...      <!--模式法-->
chmod [OPTION]... OCTAL-MODE FILE...          <!--数值法-->
  • 选项:-R 递归设置
  • 实验:1、将文件abc的权限设置为所有者全部都有,所属组只有读权限,其他人没有权限;2、将文件def的权限所有者删去可执行权限,所属组增加读权限,其他人的权限赋值为全部没有。
  • 命令:
chmod 740 abc
chmod u-x,g+w,o= def

(三)umask值:新建文件和目录的默认权限

  • umask默认值:root用户为022,普通用户为002
  • umask值计算新建文件和目录的权限的方法:
    • 对于目录,用777-umask值即可
    • 对于文件,用666-umask值后,将出现的奇数位权限值加1其他不变
  • 演示umask值对新建文件目录的影响


  • umask -S 模式方式显示
  • umask -p 输出结果前加"umask",可以使umask值被调用,如将umask值添加至用户设置~/.bashrc命令为umask -p >> ~/.bashrc,若为系统设置则输出至/etc/bashrc

二、linux文件特殊权限

一般来说,用户是否能够访问文件取决于被访问文件的权限设置。但是,linux文件的特殊权限(SUID,SGID)表现在:用户继承了访问文件使用的可执行程序文件的权限设置。

(一) SUID

  • 用户运行程序后,用户身份切换至程序所有者的身份。文件能否被访问取决于程序所有者在文件权限中的设置。
  • 用法:
chmod u+s FILE...     <!--先前位置的x会被s代替-->
chmod u-s FILE...     <!--s会恢复成x-->
chmod 4720 FILE...    <!--用数值法描述时,在原三位数字前添加数字4-->
  • 注意:SUID只在作用于二进制可执行文件上才有效,作用于目录上无意义。
  • 实验:
    1、在普通账户下,cat命令无法查看文件/etc/shadow
    2、在root账户下,给cat增加SUID权限,切换回普通账户,此时cat可以查看/etc/shadow。这是因为普通用户执行cat命令时身份临时切换为cat二进制程序的所有者root,从而获得了查看/etc/shadow的权限

    3、在root账户下,修改cat的所有者为普通账户,发现SUID属性自动失去,再为其添加SUID属性。切换回普通账户,cat命令无法查看文件/etc/shadow。这是因为普通用户执行cat命令后身份切换后仍旧是普通用户,而/etc/shadow文件除root外谁也不能访问,所以此时无法访问/etc/shadow

(二)SGID

1. 可执行文件上的SGID权限

  • 用户运行程序后,用户身份切换至程序所属组的身份,文件能否被访问取决于程序所属组在文件权限中的设置。
  • 用法:
chmod g+s FILE...     <!--先前位置的x会被s代替-->
chmod g-s FILE...     <!--s会恢复成x-->
chmod 2770 FILE...    <!--用数值法描述时,在原三位数字前添加数字2-->
  • 实验:
    1、当前普通用户(不属于natasha组)无法用cat命令访问abc文件
    2、将cat程序文件的所属组改为abc文件的所属组natasha,并为其赋予SGID权限
    3、此时普通用户可以访问abc文件了。这是因为执行cat命令时,普通用户的身份切换为cat命令文件的所属组,而abc文件的所属组与cat的相同并且具备读权限,所以普通用户也可以访问了。


2. 目录上的SGID权限

  • 一般情况下,用户建立文件的所属组为用户所属主组。当目录被赋予了SGID权限,在目录下新创建文件的所属组为此目录的所属组。
  • 用于创建协作目录
  • 用法:
chmod g+s DIR...     <!--先前位置的x会被s代替-->
chmod g-s DIR...     <!--s会恢复成x-->
chmod 2770 DIR...    <!--用数值法描述时,在原三位数字前添加数字2-->

(三)Sticky 粘滞位

  • 一般情况下,具有对目录写权限的用户可以删除目录下的任意文件,而不需考虑文件的所有者。
  • 当对目录赋予Sticky权限,目录内的文件只能由其所有者和root用户删除,其他用户即使对目录具有写权限也不能删除别人的文件。
  • 用法:
chmod o+t DIR...     <!--先前位置的x会被t代替-->
chmod o-t DIR...     <!--t会恢复成x-->
chmod 1647 DIR...    <!--用数值法描述时,在原三位数字前添加数字1-->

特殊权限的大小写区别

  • SUID:
    s:所有者拥有x权限
    S:所有者没有x权限
  • SGID:
    s:所属组拥有x权限
    S:所属组没有x权限
  • Sticky:
    t:其他人拥有x权限
    T:其他人没有x权限
  • 由于特殊权限都赋予在二进制可执行文件或目录上,这些文件的x权限都比较重要,失去x权限而赋予特殊权限,将无法实现很多功能,所以大写的权限一般视作一种故障状态。

(四)设定文件特定属性

chattr +i     <!--不能删除,改名,更改-->
chattr +a     <!--只能追加内容-->
lsattr        <!--显示特定属性-->

三、ACL访问控制列表

  • ACL能够专门对个别用户进行权限控制,实现更加灵活的权限管理
  • CentOS 7下的分区自动具备ACL功能;
  • CentOS 6下的分区:若分区是在系统安装时划定的,则自动具备ACL功能;若分区是安装后增加的,则默认不具备ACL功能,需要手动修改。
// 手动开启ACL功能
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
  • setfacl 设置文件ACL
  • 语法:setfacl [option] [{-m|-x} acl_spec] file ...
  • 用法:
-m 修改 -x 删除 
option:-R 递归 -b 清空 -k 删除默认acl权限
u:hellopeiyang:rwx     <!--设定用户hellopeiyang的所有者权限为rwx-->
g:natasha:rw     <!--设定组natasha的所属组权限为rw-->
m::rw    <!--设定mask值为rw-->
setfacl -m u:hellopeiyang:rw hello     <!--设置文件hello的ACL权限为自定义用户拥有读写权限-->
setfacl -b hello     <!--清空hello文件的ACL权限-->
  • mask值限定了ACL中除所有者、其他人外其他用户能够达到的最高权限。修改个别自定义用户、自定义组的权限会导致umask值变化,进而影响其他权限,故umask只能在自定义用户与自定义组权限设置完毕后再统一调整。
  • getfacl 查看文件ACL getfacl file ...
  • ACL生效顺序:所有者,自定义用户,自定义组,其他人
  • 复制文件保留ACL设置:cp -p

相关文章

  • 20170724 文件权限

    概要 linux文件权限linux文件特殊权限ACL 访问控制列表 一、linux文件权限 (一)linux文件属...

  • Linux学习--文件权限

    February 1, 2017 常用的文件类型 文件权限 目录文件的权限 特殊权限 常用的文件类型 文件权限 目...

  • 第十六天课堂笔记 3月21号

    学习内容【文件】权限 【目录】权限***、 【文件】权限 【目录】权限*** 字符和数字(8进制)权限知识****...

  • 操作系统(5)——文件权限

    一、文件权限设置 1、文件权限概念: 2、文件权限设置 3、文件属主和属组设置

  • shell命令整理(四)之文件权限管理(下)

    文件权限--高级权限 高级权限的类型 设置权限方法 Set UID 1、SUID权限仅对命令文件(二进制文件)有效...

  • Linux--常用命令--权限问题

    一.权限 > 关于权限查看 文件类型 文件权限 个数 文件所属者 文件所属组 文件大小 - rw-...

  • 预习2019-03-20

    #权限知识及应用实践 文件权限简介:Linux系统中的文件权限和文件对应的用户及用户组关联很大。 文件权限为说明 ...

  • 系统权限指令

    系统权限指令 chmod 改变文件或者文件的权限 2.其他权限管理命令chown 改变文件目录或者文件的...

  • Linux笔记(二)

    Linux用户权限 给文件修改权限 chmod 命令:给文件添加权限例如:将“test.txt”文件的权限设置为:...

  • RetroHttp使用记录

    一. 安装和文件读写权限 在manifast.xml配置文件中,添加以下权限: 其中,联网权限和文件读写权限要在 ...

网友评论

    本文标题:20170724 文件权限

    本文链接:https://www.haomeiwen.com/subject/wztikxtx.html