Linux运维之路基础学习四

当文件的权限不能满足某个用户时,ACL是一个好办法

一、访问控制列表

1.ACL的作用

访问控制列表(ACLAccess Control List),在基本的文件的权限管理之上,实现了灵活的权限管理。一个文件设置了ACL,那么除了文件的所有者,所属组和其他人,可以为更多的用户设置ACL权限,使之可以对文件进行或者不进行权限的操作。

Centos7默认创建的xfsext4文件系统具有ACL功能,Centos7之前版本,默认手工穿件的ext4文件系统无ACL,需要手动增加

       tune2fs -o acl /dev/sdb1

       mount -o acl .dev/sdb1 /mnt/test

ACL的内容格式为(可用getfacl FILENAME查看ACL):

# file: FILENAME

# owner:

# group:

user::权限

group::权限

other::权限

       ACL的设置格式:setfacl -m [d [efault]] [u [ser]] uid [perms] FILENAME

       从格式可以看出,ACL可以为多个用户或组设置文件和目录的访问权限rwx

       2.ACL中的umask

       ACL中有一个umask值,通常它是添加的ACL权限中权限最多的值,它限制着添加的ACL的权限,由于这个值可以修改,因此在某些ACL中可以看到某一条的ACL条目后会加上注释用以说明其有效权限。比如对某个文件添加一个权限比umask大的ACL,此时使用-n选项让系统不更新umask的值,那么添加进去的ACL将会有注释它的有效权限。也就是说这ACL的有效权限只有在umask存在的权限,例外ACL是不会给某条ACL添加上ACL没有而umask有的权限。

3.默认ACL权限

       默认的ACL权限用于目录,在该目录下创建的文件都有默认的ACL权限,但是给目录默认x权限,目录内文件不会继承x权限。

4.ACL的备份和恢复

       cpmv都支持ACLcp命令需要加上-p参数,tar等参见的备份工具不会保留目录和文件的ACL信息

基本格式 getfacl -R /tmp/dir1 >acl.txt

              Setfacl -R –set-file=acl.txt /tmp/dir1

 

二、文件权限的字母法和数字法

1.     文件权限的字母法

·文件的权限一般有读、写、执行三种,分别用rwx表示。文件所有者、文件所属组用户、其他用户都可以使用rwx三个权限。Linux中用a表示文件所有者、文件所属组用户、其他用户,u表示文件所有者,g表示文件所属组用户,o表示其他用户修改文件的权限命令为chmod,为某个文件修改权限的格式为:

chmod [a|u|g|o][+|-][r|w|x] FILENAME

使用字母法可以很清晰的指明文件修改哪些权限

2.     文件权限的数字法

文件的权限可以按照字母设置对应的数字,即— 000  –x 001  -w- 010  r–100,这样就可以将某个用户的权限加起来用数字表示,例如rw==100+010==4+2=6rx==100+001==4+1=5;

所以设置格式可以为

chmod xxx(计算好的权限) FILENAME

linux中有一个用于新建文件和目录的默认权限的umask值,一般情况下非特权用户的umask002rootumask022,在命令行界面也可以输出入umask来查看这个值,一般情况下,新建的文件权限为666-umask,新建DIR权限为777-umask,如果因为修改umask值二导致文件权限计算出来的结果存在执行(奇数)权限,则将其权限加1

 

三、重定向和管道

1.     重定向

Linux提供给程序三种I/O设备,分别是:

标准输入(stdin)默认接受来自键盘的输入,数字上用0表示

标准输出(stdout)默认输出到终端窗口,数字上用1表示

标准错误(stderr)默认输出到终端窗口,数字上用2表示

将这三种发I/O设备改变默认位置,称之为重定向,三种I/O设备的操作符号:

>stdout重定向到文件,此时文件若有内容则会被覆盖,可使用set -C 禁止覆盖文件,但是可以追加,使用>|可以强制覆盖,>>可用于向文件追加内容,<<XX ……..<<XX用于多行重定向

              2>stderr重定向到文件,文件内容会被覆盖,使用2>>可以追加

              &>把所有输出重定向到文件,文件内容会被覆盖,使用&>>可以追加

              使用小括号()可以将多个程序的输出合并

2.     管道

管道用于连接命令,管道将前一个程序的标准输出作为后一个程序的标准输入(在程序前加xargs,可逐条传递前一个命令的标准输出)。

Stderr默认不能通过管道转发,可以使用2>&1或者|&实现,即将标准错误转换成正确再用管道。

              tee用于将前一条命令的stdout作为后一条命令的stdin,并且输出到标准输出流,类似于一个T

             

附:几个小命令的学习

       chown:   设置文件的所有者

       chown [OPTION]… [OWNER][:[GROUP]] FILE…

      or:  chown [OPTION]… –reference=RFILE FILE…

       -c:更改所有者完成后,给出提示信息,在命令没有错误并且执行后时会提示更改了所有者

       -f:屏蔽大部分命令的错误信息,更改的所有者不存在的错误不能屏蔽,文件不存在的错误可以屏蔽

       -v:为每个处理的文件输出一个诊断信息

       -h:只更改软链接(符号链接)的所有者,而不会影响链接所指向文件的所有者,也就是说不使用这个选项修改软链接的所有者,那么只会更改对应的文件的所有者,而不会改变软链接的所有者

       -R:递归的操作文件或文件和目录,修改某个目录的所有者时,该目录下的所有的文件的所有者都会被递归修改

        –reference:将后一个文件file的所有者修改成前一个文件rfile的所有者

chgrp:     设置文件的所属组

       chogrp [OPTION]… GROUP FILE…

      or:  chgrp [OPTION]… –reference=RFILE FILE…

       -c:更改所属组完成后,给出提示信息,在命令没有错误并且执行后时会提示更改了所属组

       -f:屏蔽大部分命令的错误信息,更改的所属组不存在的错误不能屏蔽,文件不存在的错误可以屏蔽

       -v:为每个处理的文件输出一个诊断信息

       -h:只更改软链接(符号链接)的所属组,而不会影响链接所指向文件的所属组,也就是说不使用这个选项修改软链接的所属组,那么只会更改对应的文件的所属组,而不会改变软链接的所属组

       -R:递归的操作文件或文件和目录,修改某个目录的所属组时,该目录下的所有的文件的所属组都会被递归修改

       –reference:将后一个文件file的所属组修改成前一个文件rfile的所属组

chmod:   修改文件权限,修改软链接的权限时修改的是软链接指向的文件的权限

       chmod [OPTION]… MODE[,MODE]… FILE…

      or:  chmod [OPTION]… OCTAL-MODE FILE…

      or:  chmod [OPTION]… –reference=RFILE FILE…

 

       -c:更改权限完成后,给出提示信息,在命令没有错误并且执行后时会提示更改成什么样的权限

       -f:屏蔽大部分命令的错误信息,更改的权限错误不能屏蔽,文件不存在的错误可以屏蔽

       -v:为每个处理的文件输出一个诊断信息

       -R:递归的操作文件或文件和目录,修改某个目录的权限时,该目录下的所有的文件的权限都会被递归修改

       –reference:将后一个文件file的权限修改成前一个文件rfile的权限

umask:   显示或设置文件模式掩码,创建的文件或目录的权限与之相关

       -p:输出可被调用,可以用于输入

       -S:以模式的形式显示,即“u=rwx,g=rx,o=rx”形式

chattr:     字母“aAcCdDeijsStTu”选择文件的新属性:仅追加(a),没有 一次更新(A),压缩(c),(C)没有拷贝,没有转储(d), 同步目录更新(D),范围格式(e),不可变(i)(j),安全 删除(s),同步没有更新(S),没有尾部合并(T),顶部目录层次结构(T),和不可取消(u

lsatrr:      显示通过chatrr加的特定的属性

setfacl:设置文件访问控制列表

       ACL条目

       [d [efault]] [u [ser]] uid [perms]

       指定用户的权限,如果uid为空,则拥有文件所有者的权限

       [d [efault]] g [group]gid [perms]

       指定组的权限,如果gid为空,则拥有组的权限

       [d[efault]:] m[ask][:] [:perms]

       有效的权限掩码

       [d[efault]:]o[ther] [:] [:perms]

       他人的权限

       -m:设置文件的ACL规则

       -M:将某个文件中设置好ACL条目设置为指定文件的ACL

       -x:移除某个文件中的某条ACL,不会移除mask

       -X:从指定文件中移除存放ACL条目的文件中的ACL

       -b:移除所有的ACL条目,包括mask

       -k:移除默认的ACL条目,默认的ACL只能对目录使用,使用后新建的文件都会有默认的ACL条目,删除目录的默认ACL条目后,目录下的文件的ACL条目不会改变

       -n:设置ACL条目时不更新mask,即以前的mask不会应为ACL新加的文件原来没有的权限而修改mask

       -d:设置文件的默认ACL条目仅对目录有效

       -R:将对目录设置ACL条目递归到子目录中,包括目录和文件

       -L:会为只有符号链接在目录下的文件设置ACL,R连用

       -P:遵循物理路径,与R连用,如果一个文件的真实文件不在目录下而是一个符号链接,那么在为这个目录设置ACL时会跳过这种符号链接,即不会为符号链接指向的文件设置目录的ACL条目

getfacl:查看文件的ACL

       -a:仅显示文件的ACL条目

       -d:仅显示默认的ACL,即ACL条目最上面的那几条注释

       -c:仅显示文件的ACL,会显示ACLeffective注释,ACL条目最上面的默认ACL的注释不会显示

       -e:打印所有的有效权限

       -E:不打印有效权限

       -s:跳过只有基本条目的文件

       -R:递归查看子目的ACL,可用于备份ACL

       -L:可以查看符号链接指向的文件的ACL,与R连用

       -P:不会查看只有符号链接在目录下的文件或目录的ACL

       -n:使用表格输出格式

       -p:查看文件ACL时不删除前导的“/”

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89393

(0)
风墨曲风墨曲
上一篇 2017-12-03
下一篇 2017-12-03

相关推荐

  • shell脚本参数练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登陆shell(即用户的shell不是/sbin/nologin),分别这两类用户的个数;通过字符串比较来实现; !/bin/bash # login_user=0 nologin_user=0 for i in $(cat /etc/passwd | cut -d : -f 7);do if [ $…

    2017-09-17
  • LVM逻辑卷管理

    为什么要用LVM?     想象一个示例,如果我们给定的分区是50G,过段时间发现空间不够用,此时我们就要重新加一块新硬盘,重新分区格式化,将原来分区上的数据复制过来,再重新挂载,整个过程会非常麻烦,LVM可以很有效的解决这个问题 LVM简介     及逻辑卷(Logical V…

    Linux干货 2016-09-01
  • N27_第五周作业

    一、显示当前系统上root、fedora或者user1用户的默认shell; [root@localhost ~]# grep -E “^(root|fedora|user1)” /etc/passwd | cut -d: -f7 /bin/bash /bin/tcsh /bin/bash二、找出/etc/rc.d/init.d/fu…

    Linux干货 2017-10-20
  • centos7 yum源仓库网络共享

    一般yum源仓库需要两部分组成,一部分为rpm程序包,另一个就是repodata元数据组成。制作一个简单的网络共享yum源仓库,在制作网络共享服务器需要事先配备好你的yum源,以方便使用 1.安装网络共享yum源仓库服务 以ftp为例: (1)在centos7中是否有ftp,用rpm -q 对vsftpd程序包查看 [root@local…

    Linux干货 2017-04-23
  • Nginx 负载均衡多个nmmp主机

    设计拓扑图 一、Memcache简介 cache(缓存系统) 高性能分布式缓存服务器,缓存所有的“可流式化”数据:livejournal旗下Danga Interacive公司 程序=指令+数据 指令:程序 数据:IO操作 文件系统: 特征:协议简单  基于libevent的事件处理  内置内存存储方式  memcached 不…

    2014-09-17
  • 文本编辑器—sed

    一、sed介绍 sed 一种流式编辑器。一个流式编辑器通常对来自输入流(一个文件或者是管道的输入)的文本进行转换处理。在某些方面类似支持脚本编辑的编辑器,sed在多输入情况下只开放一个通道工作,因此更加效率。sed与其他编辑器最大的区别在于,能对管道输入的文本进行过滤处理。 二、sed工作机制 sed保持两个数据缓冲区:主要活动的模式空间,以及辅助性的保持空…

    Linux干货 2016-08-12