目录

文件属性

chown更改所有者

chgrp更改所属组

文件权限rwx

chmod修改权限

默认权限umask

权限判定的顺序

特殊权限SUID,SGID,sticky

隐藏权限chattr,lstattr

ACL

在说权限之前,我们应该简单的了解文件的属性,和如何更改文件属性:

通过我们上面的图片我们可以看出来文件的一些基本属性,有权限,链接数,所有者和所属组,文件大小,修改时间,文件名等,我们先来介绍两个用来更改所有者和所属组的命令,然后对权限的管理展开讨论。

    修改文件所有者

        命令:chown

        格式:chown [option] newuser filename

        选项:

           -R 递归更改

           --reference source target 参照source修改target

对于chown来说,既可以更改所有者其实也可以更改所属组,我们可以利用chown user:group filename直接更改所有者和所属组,或者chown :group filename来更改所属组,只不过,前者只能由root来完成,后者可以是普通用户,但是用户必须是文件的所有者,并且还要是已经加入了目标组才可以。我们做一个简单的演示:

接下来是chgrp用来修改所属组的,这个命令是所有用户都可以使用的,但是,用户必须是文件的所有者,并且属于目标组才可以,否者不能更改,基本和上图一样,不在做演示。

    修改所属组

        命令:chgrp

        格式:chgrp [option] group filename

        选项:

           -R 递归更改

      --reference source target 参照source修改target

  接下来才是最重要的,权限!我们知道每个文件都有所有者,所属组和其他人,而每一位都是有对应的权限的,这样的设计目的试问了保证隐私和文件的安全,所有者对应的是u,所属组对应的是g,其他人对应的是o,而每个文件针对每一类访问者都有三种基本权限:r:Readable;w:Writable;x:eXcutable,我们通过对三类访问者设定不同的rwx值就可以控制访问者对文件的权限。

无论是对于文件还是目录,都是有rwx权限,但是,目录的rwx权限却和文件的rwx权限是不一样的,此外对于目录的设置还有一个X权限,我们会在后面说到。我们先说一下,rwx权限所对应的数字意义:

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7

  在一般情况下,我们会选择使用数字来更改权限,例如742 = -rwxr--w-;621 = -rw--w---x

  有权限,自然可以修改权限,下面我们来说一个更改文件权限的命令chmod。

    修改文件权限

          命令:chmod

          格式:chmod [option] mode[,mode] filename

          格式:

             mode:修改一类权限

                  u= g= o= ug= uo= go= ugo=

             mode:修改一些用户的某个权限

                  u+ u- g+ g- o+ o-

             --reference source target参照source修改target

    -R递归修改权限

  我们可以通过上面的方式对文件权限进行修改,为了方便,我们也可以通过使用数字来对权限进行修改,比如:chmod 744 test1.txt。

我们刚才说,还有一个针对于目录的大X权限,这是啥嘞,这是由于我们我们会修改目录权限至少为x,但是,我们如果进行递归修改的话,会把文件也设置成x权限,由于x对于文件来说是可执行权限,很不安全,所以我们在递归修改目录权限时,可以使用X权限,这样就不会将目录下面的文件加上x权限了,可是如果我们目录下的某一个文件无论所有者所属组还是其他人只有有一个用于x权限,使用X修改目录权限时依然会将此文件所有者所属组和其他人都加上x权限。但是一般情况下我们可以不用X权限的,因为给目录的默认权限是有x权限的,什么是默认权限,我们在下面来讲。

我们无论是新建文件还是目录,当我们建好后都会有一些默认的权限,(root的默认权限和普通用户的不同),这些默认权限是哪里来的呢,为什么要这样设定默认权限?首先我们先说哪里来的,我们可以使用umask查看当前用户的默认权限,如果你是一般用户,你会发现默认权限是0002 root用户是0022,后三位是普通权限位,第一位是特殊权限位,我们先来说普通权限位。当umask中全部是偶数时,可以直接减,当umask中包含奇数时,对于目录直接减,对于文件,在奇数所在的位减完后加一。默认全局配置文件在/etc/bashrc中:(个人配置在~/.bashrc)

这时候我们会感觉很奇怪,为啥呢,以root用户来说,我们默认的权限是022,但是我们的创建的目录权限是755:rwxr-xr-x,这是为啥嘞,我们先说一下,文件的最高权限是666,即:rw-rw-rw-,目录的最高权限是777即:rwxrwxrwx,当我们用777-755 我们发现正好是022,正好是默认权限,默认权限正是最高权限-实际权限的。

接下来,我们来说作用于目录和文件的权限都有什么作用:

  普通文件

  r: 可以读取文件的内容

     cat less more nano vim 执行脚本

  w: 可以修改文件的内容

    nano vim > >> tee gedit

  x: 可以执行该文件

     执行脚本

  目录文件

  r: 用户可以列出目录下有哪些文件(不能查看文件的详细信息)

  w: 只有w无意义。

  x: 用户可以进入该目录(如果知道文件名,且有相对应的文件权限 ,可以执行对应的操作)

  rx: 用户可以进入目录,且可以长列出。

  rw:等于只有r

  wx: 能进入,能创建能删除,不能列出。故用户能否删除文件与文件自身权限无关

  rwx: 全部权限。

  ---:null

  我们可以看出,文件和目录的权限的作用是有很大区别的,我们即便对文件有全权限,如果对它的目录没有足够的权限的话,我们还是无法对文件进行增删查改,更何况他们还是有所有者,所属组和其他人的区别。比如:当我们想查看一个目录下的某一个文件内容时,我们至少要对目录有什么权限,对文件有什么权限?由我们上面的总结我们知道,我们对目录至少有一个x权限,对文件至少有r权限,这样虽然我们无法看到目录下有什么文件,但是我们知道有一个我们知道的文件就在该目录下,我们依旧可以使用工具查看:

权限判断的顺序

先判断是否是文件的所有人,如果是,则执行所属人的权限后结束,如果不是所有人,则判断是否所属组(可以是主组也可以是辅助组),如果是,则执行所属组的权限后结束,如果不是则执行其他人的权限后结束。

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

 

特殊权限

除了普通权限外,我们的文件还是有特殊权限的,比如我们常见的文件/etc/shadow文件,我们发现它的权限是---------,可是我们作为普通用户还是可以进行修改自己的密码,这就意味着我们修改了shadow的内容,这是为什么呢,我们知道root这个大变态即便对文件没有任何权限,依旧可以修改查看它,所以,这会不会和root有关呢?我们在修改密码时不是直接对文件修改,而是使用命令passwd对shadow进行修改的,而passwd这个程序所属组和所有者都是root,这是意味着我们可能是临时借用了root这个上帝之手对我们的密码进行修改的,我们在看看passwd的权限:

  我们看到了什么东西?在root所有者的x位居然变成了s,这是什么呢,这就是特殊权限之一SUID权限。suid 当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属人的权限。这下我们就该知道为什么我们可以用passwd命令修改对于我们没有任何权限的shadow了吧。因为我们临时获取了passwd的root所有者的权限,我们是在以root的身份在修改我们的密码呀!!!

  除了SUID还有SGID。sgid 当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限。 当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建的文件及目录的所有属均为该目录的所有组。对于第二个作用,我们做一个测试:

  Html目录属于HTML组,而redhat用户也有HTML附加组,然后我们在HTML中创建文件:

  此时我们发现如果仅作为一个组用户进入改组,创建的文件所属组依然是自己的,作为同组的其他用户还是无法修改,接下来我们加上SGID权限chmod 2770 html:

  这时候我们发现,Redhat用户创建的文件所属组变成了HTML,这就是SGID的作用之一,作为同组的人员,我们可以对此文件进行修改,团队合作起来更方便。

   接下来我们看特殊权限的最后一个sticky,它的作用是当对一个目录使用了sticky之后(只限制组用户,目录的owner不受影响),该目录下的文件仅其所属人才能删除。属于这个组的其他成员可以对目录下的文件查看,修改,就是无法删除。

  我们之前说默认权限有4位比如root的默认权限是0022,最前面的那个是特殊权限,由于特殊权限默认是什么都没有,所以是0,我们刚刚的演示其实也可以看出,设置特殊权限是SUID对应的是4,SGID对应的2,sticky对应的是1,还有就是我们发现特殊权限居然有大写的,这是为什么呢,我们可以看到,三个特殊权限都是在x位上,为了区分权限,如果在某一位有x权限,对应的特殊权限就是小写的,如果没有x权限,对应的特殊权限就是大写的,三个权限分别是sS,sS,tT

隐藏权限

对于隐藏权限,我们不会说太多,说两个我们平时最常用的选项:

设置:

    命令:chattr

    格式:chattr [option] filename

    格式:

       +i  不能删除不能改

        +a  不能删除,只能追加

这设置就厉害了,就连我们的root也无法改变,其实他就是为了防止root误操作而删除文件的,我们还可以利用lsattr进行查看:

ACL权限管理

为了满足我们对细化权限的设置,在linux系统中添加了ACL权限,用于对单个用户或者单个组进行经典的rwx权限设置,在centOS6中创建了新的分区后需要我们单独进行ACL功能的添加才可以使用,我们也不能将一个具有ACL权限的文件或目录拷贝到还没有使用ACL的分区上面,centOS7的xfs文件系统时自动启动ACL功能的。

 

ACL权限的设置与取消

如何设置ACL权限,我们需要知道ACL是针对于用户和组进行设置的,对其他人无效,并且ACL目标是文件或目录。

对于用户设置,我们使用的命令是:setfacl –m u:username:rwx /path/filename,在我们针对目录或文件设置完ACL权限以后,我们可以通过getfacl命令查看我们设置的ACL权限。

我们可由上图看到,在设置完ACL权限时,其他人的权限位后多了有个“+”,这就是ACL权限的标志。在我们显示出的tty.txt的ACL权限里,我们看到#号后面的是我们本文件的原本信息,并且,设置完ACL权限以后,mask就会占领g位,所以我们要是直接设置

setfacl –m g::rw filename的话其实就是在设置mask,所以,当我们在设置完ACL权限后,除非我们删除全部的ACL权限,否则,无法在对用户的g位设置任何权限。

我们在针对某一目录设置完ACL权限之后,能不能在目录下创建文件让它也具有相同的ACL权限呢?我们看一下:

我们以实际行动说明了使用setfacl –m u:username:rwx /path/filename设置完权限后,我们对其目录一下的文件都不能继承父目录的ACL权限,咋办?好办,我们可以使用setfacl –mR d:u:username:rw /path/filename来对目录设置这个权限,这样的话,目录下面的文件和新目录也能继承父目录的ACL权限了,但是有一点需要注意,我们使用setfacl –m u:username:rwx /path/filename和设置它下面的文件的ACL权限是有一点不一样的,因为我们需要进入目录后查看修改子文件,所有我们在设置目录的ACL权限时,一定要注意,如果需要进入目录的话ACL权限应该加上x;

对用户的ACL权限设置我们已经看到了,对组的ACL设置同样是如此:

setfacl –m g:username:rwx /path/filename

setfacl –mR g:u:username:rw /path/filename

ACL权限判断的顺序

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

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

还有刚才那个mask,他是对最大权限的设置,我们一般不会管他,我们在设定ACL权限时,它是默认随着我们ACL权限的设置而变化的,保证我们设置的每个权限都能生效,如果我们想限定最大权限,我们可以在设置完所有ACL权限时,对它进行设置。

设置命令:setfacl -m mask:rwx f1

ACL权限的其他参数和取消设置

    base ACL 不能删除

  setfacl -k dir 删除默认ACL权限

setfacl --set u::rw,u:wang:rw,g::r,o::- file1

setfacl -M acl.txt f1[dir1]

acl.txt 内容来自getfacl f1 > acl.txt,如下

# file: fstab

# owner: root

# group: root

user::rw-

user:zhangfei:rwx

group::r--

mask::rwx

other::r—

setfacl -x u:liubei f1  单独去除一条ACL权限

setfacl -X aclrm.txt f1[ f2 f3 *]

aclrm.txt 内容如下

u:liubei

g:shuguo

setfacl -b f1 去除该文件上ACL属性

 

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

备份ACL权限信息

getfacl -R /tmp/dir1 > acl.txt

setfacl -R -b /tmp/dir1(删除ACL权限)

还原ACL权限信息

setfacl -R --set-file=acl.txt /tmp/dir1

setfacl --restore acl.txt

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: 等线 }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; line-height: 173%; page-break-after: avoid; font-size: 16.0pt; font-family: "等线 Light" }
p.MsoHeader,li.MsoHeader,div.MsoHeader { margin: 0cm; margin-bottom: .0001pt; text-align: center; border: none; padding: 0cm; font-size: 9.0pt; font-family: 等线 }
p.MsoFooter,li.MsoFooter,div.MsoFooter { margin: 0cm; margin-bottom: .0001pt; font-size: 9.0pt; font-family: 等线 }
p.MsoAcetate,li.MsoAcetate,div.MsoAcetate { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 9.0pt; font-family: 等线 }
span.Char { }
span.Char0 { }
span.Char1 { }
span.2Char
{ font-family: "等线 Light"; font-weight: bold }
span.GramE { }
.MsoChpDefault { font-family: 等线 }
div.WordSection1 { }

CentOS文件权限管理的更多相关文章

  1. linux下的文件权限管理

    权限管理有两个层面 第一层区分用户:文件属主(u), 组用户(g), 其它(o) 第二层区分权限:读(r),写(w),可执行(x) 这两个层次构成文件权限管理的二维结构 u         g     ...

  2. (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理

    用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...

  3. Linux用户和文件权限管理

    本文为原创文章,转载请标明出处 目录 用户管理 系统用户文件 添加用户 useradd 设置用户密码 passwd 删除用户 userdel 用户管理 usermod 用户组管理 系统用户组文件 添加 ...

  4. Linux 文件权限管理

    1.文件权限的概述 在Linux系统下,使用权限来保护资源的安全将是一种不错的选择.系统中每个文件的权限都有可读(r).可写(w)和可执行(x)这三种权限,它们分别对应权限数值4.2 和1.系统为每个 ...

  5. 3,linux入门到上手-文件权限管理与配置

    linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...

  6. Linux用户及文件权限管理

    Linux用户及文件权限管理

  7. 利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

    简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下 01 one(); 02 03 function one ...

  8. 实验楼学习linux第一章第三节用户及文件权限管理

    用户及文件权限管理 常用命令 查看用户 whoami 创建用户 sudo adduser 用户名 切换账户 su 用户名 删除账户 sudo deluser 用户名 --remove-home 查看用 ...

  9. (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】

    原文地址:http://www.cnblogs.com/melonblog/archive/2013/05/09/3062303.html 原文作者:豆浆油条 - melon 本文示例代码测试环境是W ...

随机推荐

  1. Windows Graphics Programming Win32 GDI and DirectDraw第六章疑问

    <Windows Graphics Programming Win32 GDI and DirectDraw>6.1节中有这样的描述: The Windows NT/2000 graphi ...

  2. PHP学习之旅——PHP环境搭建

    1.wampserver.exe软件下载 http://www.wampsferver.com/官网地址:  选择对应版本下载即可. 2.wampserver服务控制面板 主要控制的是整个wampse ...

  3. Thinking in Java系列 文档+代码+简评

    声明:本人无意侵犯原作者的版权,这里可下载的文档都属于作者自行开放下载的,统一放置在这里是因为不可预测的原因使得原文档和代码不方便下载,故将我所收集的内容统一在这里,如果这里的内容侵犯了别人,请告知我 ...

  4. 将Windows系统默认的Administrator帐号改名为我们自定义的名称

    将Windows系统默认的Administrator帐号改名为我们自定义的名称.. ---------如何将Administrator帐号改名为我们自定义的名称:Win+R--->>输入g ...

  5. 谈谈培训机构的"骗局"给新人一些建议

    前言 本文只谈"骗局",不谈其他,绝不引战,如有错误,希望指出我会及时改正,想要讨论的可以在留言区写下你的观点和经历. 为什么要写这篇文章呢,近些年培训这个话题也比较火,很多在看这 ...

  6. 【Weblogic】在linux创建domain过慢的解决方法

    修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件 将 securerandom.source=file:/dev/ ...

  7. Java8 lamda表达式快速上手

    1.对比着经典foreach 简单的循环 o相当于foreach中的临时变量,要遍历的list放在句首 list.foreach(o->{你要进行的操作}); package com.compa ...

  8. 【转载】webstorm11(注册,激活,破解,码,一起支持正版,最新可用)(2016.11.16更新)

    很多人都发现 http://idea.lanyus.com/ 不能激活了 很多帖子说的 http://15.idea.lanyus.com/ 之类都用不了了 最近封的厉害仅作测试 选择 License ...

  9. redis数据库操作的C++简单封装

    用c++简单封装了redis的基本操作(hiredis) 接口包括:①链接和断开连接.②设置键值对(set).③查询键值对(get).④删除键值对(del).⑤将所有键显示出来 若任何一处发生错误,返 ...

  10. JAVA_多线程_单例模式

    这篇是入职之后的第二篇了,上一篇我简单介绍了一下LOCK里面的类的方法,感兴趣的话可以去了解一下,以后坚持每周至少会更新一篇关于多线程方面的文章,希望博友们可以一起加油成长. 这篇主要的内容是单例模式 ...