CentOS文件权限管理

目录

文件属性

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

转载:http://www.cnblogs.com/duzhaoqi/

转载于:https://blog.51cto.com/lixin752299/2061361

CentOS文件权限管理相关推荐

  1. 《Linux基础三》用户和文件权限管理

    用户和文件权限管理 1,用户 管理员用户: Root用户,也称根用户.超级用户.超级管理员 可对根目录执行读写和执行操作 具有系统中的最高.所有权限 普通用户: 权限有限的用户 Root用户拥有系统的 ...

  2. 【Linux实验】文件权限管理

    一.实验目的及要求 在Linux文件服务器上,如何设置目录及文件权限和归属,以保证文件不被无关人员查看,根据需求写出具体实施方案及配置命令. 掌握利用chmod及chgrp等命令实现Linux文件权限 ...

  3. Linux中的用户及文件权限管理总结

    一.用户 1.查看用户:who am I 2.创建用户:sudo adduser <用户名> 在linux中,root权限拥有至高无上的权利,一般登录系统时都是以普通账户的身份登录的,要创 ...

  4. Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式...

    本章Blog相关Linux知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户 ...

  5. linux学习随笔——linux文件权限管理和网络配置

    一.linux文件权限管理 查看某个文件的权限命令:ls -l linux文件权限有4种:读(r).写(w).执行(x)和无权限(-) 一般用10个字符表示其权限,按照(1-3-3-3)来分组划分 1 ...

  6. 关于文件权限管理了解和使用

    文件权限管理 文件属性格式 文件属性操作 chown          设置文件的所有者 chgrp          设置文件的属组信息 修改文件的属主: chown [选项] [所有者][:[组] ...

  7. Ubuntu下文件权限管理

    参考:Ubuntu / Linux 下文件权限管理 作者:~莘莘 发布时间: 2021-07-12 17:09:48 网址:https://blog.csdn.net/lcx1837/article/ ...

  8. linux修改文件权限的命令_Linux基础文件权限管理

    图片来源:pexels.com 你好,我是goldsunC 让我们一起进步吧! Linux文件属性 文件权限在Linux基础中是一个很重要的概念,一个系统管理员应该熟练掌握文件权限的概念.OK,现在我 ...

  9. Mac os 下的文件权限管理

    Mac os 下的文件权限管理 命令 ls -l -A 结果 -rw-r--r-- 1 user admin 2326156 4 12 15:24 adb 横线代表空许可.r代表只读,w代表写,x代表 ...

最新文章

  1. wait跟sleep的区别
  2. 程序员在囧途之做私活小记
  3. hdu 5617 Jam's maze(双线程dp)
  4. pymysql(part1)--pymysql初识之检索/增加/更新/删除数据
  5. 关于 Repeater 控件嵌套的使用。在嵌套中添加 其它控件(如:按钮),并影响其它控件的方法,很重要哦,测试通过。...
  6. leetcode —— 39. 组合总和
  7. 计算机合计功能,Javascript自动求和,Javascript自动合计
  8. STM32F429HAL库ADCDMA学习笔记
  9. Atitit.虚拟机与指令系统的设计
  10. python win32api教程_Python win32api.GetSystemMetrics方法代码示例
  11. 飘云阁论坛出品汇编逆向专用记事本
  12. 几何画板椭圆九种画法_最全的几何画板绘制椭圆教程
  13. 微信 语音转文字 java,微信语音转文字怎么操作?手把手教你,一秒钟搞定!
  14. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图
  15. 面向对象:白茶清欢无别事,我在等风也等你
  16. win10安装inventor失败,怎么强力卸载删除注册表并重新安装
  17. 微信引流的万能方法 微信引流的万能方法
  18. ABAPDEMOCALLTRANSACTION使用_SAP刘梦_新浪博客
  19. [Unity3D]用C#在unity里面写一个简单的红绿灯
  20. 搜狐邮箱的Python经验

热门文章

  1. SSM整合的Maven项目中引入Bootstrap,三步实现高大上插拔UI,后端也有美感
  2. RocketMQ-控制台的安装与启动
  3. Ubuntu18.04 安装MySQL、Navicat
  4. 敏捷的项目启动-尽早启动!
  5. 网络通道联调及SSH服务启动
  6. 一个历史遗留项目清理总结
  7. 前端实现数字快速递增_艾默生新型超声波发生器的数字控制功能可实现快速设置和准确操作...
  8. 从零开始小说 html,从零开始的HTML生活
  9. php 设置断点,PHP xdebug安装配置(支持断点调试)
  10. 2018 年都过去了,你还没有掌握用户运营的核心技巧?