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

相关推荐

  • 马哥教育网络班22期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (uti…

    Linux干货 2016-11-07
  • Linux下的进程调度与作业管理

    Linux下的进程调度与作业管理 一、概述 1.1 进程的相关概念: 通过前面的几个章节,我们几乎已经学习了很多的linux的基础,这个章节我们讲一下linux下的进程管理,就像windows 下的进程一样,我们知道windows 下有一个任务管理器,专门用来管理进程,我们首先看一下windows 的任务管理器: 从这2个图我们可以看出,windows 下的…

    Linux干货 2016-10-17
  • N25-Bazinga-第四周作业

    N25-Bazinga-第四周作业 1.复制/etc/ske1目录为/home/tuser1,要求/home/tuser及其内部文件的属组和其他用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1 [root@localhost&nbsp…

    Linux干货 2016-12-21
  • Centos6.5上搭建openvpn

    前言     为了方便远程办公时访问公司的内部系统,如:svn、OA、wiki、禅道等等;通通在防火墙上做了端口映射。发现有时也不好用,所有开始弄OPENVPN。 openvpn简介     官方网站:https://openvpn.net 打不开请爬墙   &nbsp…

    Linux干货 2016-02-14
  • sudo——让普通用户更灵活

    sudo命令 1、sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo ,会提示联系管理员 2、sudo可以提供日志,记录每个用户使用sudo 操作 3、sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机 4、sudo 使用时间戳文件来完成类似“检票”的 系统,默认存活期为5 分钟的 “入场券” …

    Linux干货 2016-09-25
  • N24 W3 博客作业

    第三周 "   1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut –d’ ‘ –f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 [root@localhost ~]# id `who | tail -n 1 | cut …

    Linux干货 2016-11-14