文件权限

 本篇博客是对文件权限的简单介绍,将会简述下权限的数字表现形式,还有字母表现形式,还有一些特殊的suid、sgid、sticky的权限介绍,还有对ACL权限的简述。

 一、权限的定义

    关于权限,百度百科的解释如下:权限(privilege)是指某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制。通常,系统管理员,或者在网络中的网络管理员,对某个特定资源的使用分配给用户不同的权限,系统软件则自动地强制执行这些权限。所以,对于文件,也同样有读写执行的权限,只有拥有了这些权限,才能进行操作,否则,也是无权进行操作的。
 二、权限的数字字母表现形式
1.chown  chgrp命令
  
    要先介绍下chown和chgrp命令,一个是设置文件所有者,一个是设置文件的属组信息。
    chown owner.(:)group file  可以用此命令设置文件file的所有人file及所在组group的信息
    chown -R owner.(:)group file 指可以进行目录的递归操作
    以上只有root才能修改文件的所有人,且owner必须属于group
    charp group file   设置file的所属组group
    charp -R group file 可以进行递归操作
2.文件的读、写、执行权限
    
    文件读权限   r:十进制100 二进制4  cat、less、more、nano、vim、执行脚本需要读权限 
    文件写权限   w:十进制010 二进制2  nano、vim、>、>>、tee、gedit需要写权限
    文件执行权限 x:十进制001 二进制1  执行脚本需要执行权限
    r w x组合的意义:
    r: 用户可以列出目录下有哪些文件(不能查看文件的详细信息)
        w: 只有w无意义。
        x: 用户可以进入该目录(如果知道文件名,且有相对应的文件权限 ,可以执行对应的操作)
        rx: 用户可以进入目录,且可以长列出。
        rw:等于只有r
        wx: 能进入,能创建能删除,不能列出。故用户能否删除文件与文件自身权限无关。
        rwx: 全部权限。
        —:null
    chmod 权限的修改命令
    u代表user g代表group o代表other
    ①chmod ugo+rwx 
        可以直接在u g o上直接加权限(文件加执行权限是很危险的,可以用chmod ugo+X只给目录加执行权限)
    ②chmod u=…,g=…,o=…
        直接修改u g o的权限
    ③chmod 777
        直接用数字来修改file权限r=4 w=2 o=1,用rwx的组合
    umask
    文件权限最大666   目录权限最大是777
    umask    root用户=002  普通用户=022
    权限值=权限最大值-umask(当umask中包含奇数时,对于目录直接减,对于文件,在奇数所在的位减完后加一。)
3.文件的suid、sgid、sticky权限
    
    suid权限是一种特殊的权限,举个简单的例子,用户的密码存在于/etc/passwd目录中,但是该文件的权限是r——–,即400,只有文件所有人和root用户才能修改密码,但是普通用户怎么修改自己的密码呢?所以引入了suid权限,即普通用户可以以文件所有者的身份对文件进行修改,用ll命令长列出文件信息时,会发现在user的执行权限位上是s,这个就是suid权限。
    sgid和suid同理,只是一个是以所有人身份运行,一个以所有组身份运行。
    Sticky属性只能应用在目录,当目录拥有Sticky属性所有在该目录中的文件或子目录无论是什么权限只有文件或子目录所有者和root用户能删除。比如当用户test在“/app”目录中建立一个文件并将该文件权限配置为777,当/charles目录拥有Sticky属性时,只有root和test用户可以将该文件删除。在使用ll命令浏览目录时,如果其他用户权限的第三位是一个小写的“t”就表明该执行文件或目录拥有Sticky属性。
    配置普通权限时可以使用字符或数字,SUID、SGID、Sticky也是一样。使用字符时s表示SUID和SGID、t表示Sticky;4表示SUID、2表示SGID、1表示Sticky。在配置这些属性时还是使用chmod命令,数字和字母都可以用。
    例如:chmod 7777 file   chmod u+s file  
三、ACL权限
1.ACL权限的简单定义

    传统的权限仅有三种身份(owner,group,others)搭配三种权限(r,w,x)以及三种特殊的权限(SUID,SGID,SBIT),随着应用的发展,这些权限组合已不能适应现在复杂的文件系统权限控制要求,所以引入了ACL(Access Control Lists)权限。举个简单的例子:目录data的权限为:rwxr-x—,所有者与所属组均为root,在不改变所有者和所属组的前提下,要求用户mage对该目录有完全访问权限(rwx),但又不能让其他有用完全权限(rwx)。这个要求看似不能实现,这就看出来传统的权限管理设置有时候也会力不从心。这时候,我们就可能通过ACL来实现。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。但是ACL权限只支持linux:ext2 ext3 ext4 xfs vfat ntfs的文件系统。
2.如何查看ACL权限是否开启

    CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。
    CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。
      mount -o acl /dev/sda7  取消的方式,重新挂载时不指定即可
      mount -o remount,acl /dev/sda7
         以上两种方式开启的ACL可以通过mount |grep sdaX查看
      创建: tune2fs -o acl /dev/sda7 
      取消: tune2fs -o ^acl /dev/sda7
         使用以上方式开启的ACL可以通过tune2fs -l /dev/sda7 |grep option查看
3.关于ACL权限命令
    
    setfacl -m u:liubei:rwx f1  设置ACL user
    setfacl -m g:shuguo:rwx f1  设置ACL group
    setfacl -M acl.txt f1
        acl.txt 内容来自getfacl f1 > acl.txt(把ACL权限导入文件acl.txt),文件如下
            # file: fstab
            # owner: root
            # group: root
            user::rw-
            user:zhangfei:rwx
            group::r–
            mask::rwx
            other::r–
    setfacl -Rm u:zhangfei:rwx acltest/   递归设置user权限
    setfacl -m mask:rwx f1
    或 chmod g=rwx f1 一旦设置了ACL权限后,原有的文件group不可再更改,使用chmod即修改ACL mask
    ACL mask随着新的ACL设置会被重置,重置的标准是让该文件上的所有ACL及文件原group上的权限都有效。
    setfacl -x u:liubei f1  单独去除一条ACL权限
    setfacl -X aclrm.txt f1[ f2 f3 *]
        aclrm.txt 内容如下
            u:liubei
            g:shuguo
    setfacl -x d:sunquan d11 删除一条默认权限
    setfacl -k d1 删除全部默认权限
    setfacl -b d1 删除ACL属性

    getfacl -R /tmp/dir1 > acl.txt  将目录下的所有文件的ACL属性备份到文件
    setfacl -R -b /tmp/dir1            清除目录下所有文件的ACL属性
    setfacl -R –set-file=acl.txt /tmp/dir1   通过文件还原ACL属性的方法1
    setfacl –restore acl.txt    通过文件还原ACL属性的方法2

以上便是本篇博客的全部内容,如有什么问题还请各位大牛帮忙提出,谢谢!

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

(0)
Mr.DONGMr.DONG
上一篇 2017-07-29
下一篇 2017-07-29

相关推荐

  • 磁盘管理及文件系统

    磁盘管理 本文将从以下几方面介绍 第一部分:磁盘管理 1、浅识Linux磁盘 2、常见命令 第二部分:文件系统管理 1、文件系统的创建 2、文件系统挂载 3、自动挂载配置文件 第一部分:磁盘管理 浅识Linux磁盘 对于Linux来说我们知道一切皆文件,同样在Linux中硬件设备在系统上会映射成相对应的文件,我们就像是在Windows看文件一样只要打开对应的…

    Linux干货 2017-08-15
  • Shell中的循环语句

    在编程语言中,循环语句是最基本的语法之一,在Shell(这里是Bash)中也不例外。把相关内容整理一下吧。 这里包括for/while/until循环,以及变量自增的语法实例。 Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。 一、…

    Linux干货 2016-08-22
  • 由苹果的低级Bug想到的

    2014年2月22日,在这个“这么二”的日子里,苹果公司推送了 iOS 7.0.6(版本号11B651)修复了 SSL 连接验证的一个 bug。官方网页在这里:http://support.apple.com/kb/HT6147,网页中如下描述: package com.ifeve.book; &n…

    Linux干货 2016-08-15
  • 正则表达式

    什么是正则表达式? 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除…

    Linux干货 2017-06-01
  • 第一周-2:Linux部分常用命令使用示例、查看命令行工具使用手册以及LinuxFHS部分目录简介

    一、部分命令使用示例: 1、ifconfg 在命令行界面下或系统配置脚本中用于配置、控制及查询TCP/IP网络接口的系统管理工具 [netartisan@localhost 桌面]$ ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 &n…

    Linux干货 2016-11-07
  • 用户及权限管理

     今天是学习马哥教育第四天,也是第一个博客作业,写一篇关于用户及权限管理的简介型的博客文章,作文水品有限,所以写出来有可能有病句或者意境有问题,请大家多多包涵。  首先,用户及权限管理,需要从2方面入手来说,首先来说用户管理。  何谓用户,这是马哥一上来就提到的问题,我简单的理解,用户其实就是一个人机交互的接口,人机交互的接口是…

    Linux干货 2016-09-15