权限管理

权限管理包括普通权限、特殊权限、默认权限、ACL权限。

这些权限都是针对u(owner)、g(group)、o(other)三类定义的。

设置权限时文件和目录不同(此处把文件和目录分开,一般说文件就包含目录(linux思想:一切皆文件))如下图所示,

分别用两个用户分别创建了一个目录一个文件,可以看到同是目录的liutest和test的权限不同,它俩同为目录为啥子权限不一样呢,然后又看了一下两个文件,发现权限也不同,那这是为啥呢?!

权限管理

别急,小编君这就为你解答:

一:默认权限

    这是因为有一个叫umask值的东西存在,因此超级管理员root和普通用户在创建文件和目录时有了默认权限,那啥又是默认权限呢,

默认权限就是在最大权限减去umask值后得到的,那啥又是最大权限呢,最大权限是多少呢?!   目录的默认最大权限为777,文件默认最大权限是666,即

                                    目录  文件

最大权限                      777   666

umask(普通用户)     002  002

默认权限                       775   664

umask(root)                   022   022

默认权限                       755   644

如图所示,普通用户umask默认为0002,root默认0022(这里只看后三位,说的时候就是root的umask值为022,普通用户的umask值为002,第一位是特殊权限位,一会儿会详细单独说的),而目录的最大权限是777,文件的最大权限666,所以在创件文件和目录时,先用最大权限减去umask之后,就是其默认权限。

权限管理权限管理

例:

777 rwxrwxrwx     666 rw-rw-rw-

021 —-w—x         021—-w—x

756 rwxr-xrw-       646rw-r–rw-

总结一个规律:当umask值全部是偶数时,可以直接减,当umask值包含奇数时,对于目录直接减,对于文件,减完后再加一。如下图所示dir1的权限是756(777-021),而文件file的权限值为656(666-021+1)

权限管理

设置umask值:umask #(例:umask 004)

    这种设定只在当时生效,要想长期生效,需要在/etc/bashrc(所有用户可以看到)、~/.bashrc (仅用户自己可以看)这两个配置文件里,手动修改。

这里注意区分一下拷贝文件和新建文件时文件的权限区别:

cp拷贝文件时,基于源文件的权限减去umask值;

创建文件时,基于最大权限减去umask值。

 

二:普通权限:

 

前面一直说权限,那接下来就来看一下,每一位具体的意思吧:

 

r: 文件:可查看(读取)文件内容

   目录:可以用ls查看此目录下的文件列表(不能查看详细信息)

w: 文件:可以修改文件内容

    目录:单独使用没意义,与x结合使用时,可在此目录下创建、删除文件

x:文件:可以执行

    目录:可以进去此目录,与r结合使用,可以查看此目录下文件的详细信息(ls -l)

 

X:当文件本身没有x权限时,则跳过,一般用于批量修改多个文件、目录的权限时,自动跳过没有执行权限的文件。(一般只给目录,不给文件。)

 

权限分两种方式:

1.字符:

   chmod u/g/o+r/w/x file

   chmod a=rwx file(a=ugo)

2.数字:

   0:—

   1:–x

   2:-w-

   3:-wx

   4:r–

   5:r-x

   6:rw-

   7:rwx

组合:rwxr-xr–    754

chmod用于修改权限,此功能只有root和所属人有权限

例:chmod754  file

 权限管理

chmod –reference file1 file2复制file1的权限给file2

 权限管理

(chown –reference file1 file2复制file1的所属人和所属组给file2)

 权限管理

(chgrp –reference file1 file2复制file1的所属组给file2)

 权限管理

有的人会有疑问,权限位是四位,怎么一直说三位啊,第一位是啥?

 

三:特殊权限位

 

第一位呢,是特殊权限位,由suid、sgid、sticky组成,下面有个总结,就是有点长,但是比较完整,其实重点是最后一句。

suid

    当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属人的权限。

sgid

    当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限

     当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建的文件及目录的所属组均为该目录的所有组。

sticky

    当对一个目录作用了sticky之后(只限制组用户,目录的owner不受影响),该目录下的文件仅其所属人才能删除。

一些常用命令:

用字符:

    chmod u+s file   权限值为4***,即只有suid

    chmod g+s file   权限值为2***,即只有sgid

    chmod o+t file    权限值为1***,即只有sticky

也可以用数字:

    chmod  3*** file   既有sticky又有sgid

    chmod  5*** file   既有sticky又有suid

    chmod  6*** file   既有suid又有sgid

    chmod  7*** file   都有,all

若文件本身带有x权限时,为s、t,反之,则是S、T

如下图所示:

权限管理

四:ACL权限

ACL(Access Control List)访问控制列表

CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。

CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。

1.mount -o acl /dev/sda7  取消的方式,重新挂载时不指定即可

2.mount -o remount,acl /dev/sda7

   以上两种方式开启的ACL可以通过 mount |grep sdaX 查看

3.tune2fs -o acl /dev/sda7 取消的方式 tune2fs-o ^acl /dev/sda7

   使用以上方式开启的ACL可以通过

tune2fs-l /dev/sda7 |grep option查看

以上很少用到,这里就不做演示了。

ACL权限判断的顺序

   先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限。如果不属于任何GROUP,则执行OTHER。

   即:所有人->所有组->其他人

ACL的设置:(设置权限后,ll查看到权限位的末尾有+号,代表已经设置了ACL权限,这时再想查看权限就用getfacl file查看,当然ll也还能用,只是看不到ACL的权限而已)

   setfacl-m u/g:user/group:r/w/x file

首先创建目录

权限管理

然后设置ACL权限,并观察其权限处的变化

权限管理

然后:通过getfaclfile查看ACL:

权限管理

设置默认的ACL:

   setfacl-m d:u/g:user/group:r/w/x file

(仅影响新创建的文件及子目录,对当前目录没影响)

删除一条ACL权限:

   setfacl-x u/g:user/group file

仅删除一条默认的ACL权限:

   setfacl-x d:user/group file

删除所有ACL权限

   setfacl-b file

删除默认的ACl权限:

   setfacl-k file

以上操作常与-R连用,递归设置对目录及其子目录的操作

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。

   getfacl-R /PATH/TO > acl.txt连同其子目录文件的ACL权限一同导入acl.txt

   setfacl-R -b /tmp/dir1连同子目录的ACL全删除

   setfacl-R –set-file=acl.txt /tmp/dir1(两种还原)

   setfacl–restore acl.txt(第二种)

注意:

设置过ACL权限后,操作chmod g+/- r/x/w file这条命令,用ll命令查看权限时也能看到所属组位权限的变化,但是,用getfacl file查看所属组位没变化,实际上改变的只是mask值。但chmod u+/- r/x/w所属人权限无论使用ll查看还是,getfacl file查看,都会变成设置的值、

这里的mask是所有除所有者OWNER和root外的user和group的权限的并集。

也可以使用setfacl -mmask::r/w/x file设置其权限值

另外涉及到一些特殊权限:

   chattr+i file 不能file进行删除、修改,改名等

   chattr-i file 取消这种权限限制

权限管理

   chattr+a file 只能追加内容

   chattr -a file 取消这种权限限制

权限管理

OK,内容目前到此,小编君刚学Linux不久,学识有限,若有出入,请多多指教,若总结的不到位,望海涵。

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

(0)
M.SunM.Sun
上一篇 2017-07-30
下一篇 2017-07-30

相关推荐

  • ip命令详解

      Linux中的ip命令功能强大,可以完成接口配置、路由管理等任务。   格式:ip [ OPTIONS ] OBJECT { COMMAND | help }   下面使用ip命令来完成一些常用的操作:     1、查看接口状态       ip link show [设备名…

    Linux干货 2016-01-14
  • LVS详解及基于LVS实现web服务器负载均衡

    前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能、高可用的服务器群集,从而以低成本实现最优的服务性能。 集群基础 集群简介 集群(Cluster)是一组相互独立…

    Linux干货 2015-06-01
  • Linux系统文本处理

                                           Linux系统文本处理工具        …

    Linux干货 2016-08-15
  • 一些鲜为人知的编程事实

    我的程序员经历让我明白了一些关于软件开发的事情。下面是一些在编程中可能会让人感到诧异的事情: 一个程序员用了大约只用了10%-20%的时间来编码,而且大多数程序员,无论他的水平如何,其平均每天只有10-12行的代码最终会进入最终的软件产品中。这是因为,优秀的程序员会花费90%的时间来思考、调查、研究最佳的设计。而糟糕的程序员则会花费90%的时间来调试代码,并…

    Linux干货 2016-07-11
  • grep、egrep、fgrep 正则表达式详解

    大纲一、grep分类       –1.1基本定义       –1.2常用选项       –1.3不常用选项二、正则表达式       –2.1基本…

    Linux干货 2015-07-01
  • nfs与samba实现文件共享服务的流程

    nfs与samba实现文件共享服务的流程     nfs与samba都是能够实现文件共享的服务应用,其用法大致相同,但是挂载选项与配置文件的设置机制不同,下面介绍这两种文件共享服务的内容。     一.nfs服务的安装与配置     服务端主机的配置:   &…

    Linux干货 2016-10-23