权限管理(接上篇)

本文主要介绍:1、文件的属性 2、特殊权限:SUID、SGID、Sticky 3、访问控制列表ACL

1、文件的属性

(1)文件属性

1

在Linux系统上,普通权限分为三类:读(r)、写(w)、执行(x)

文件的从属关系也分为三类:

属主(u):标明这个文件是谁的

属组(g):标明该文件属于哪个用户组

other(o):除开文件属主和属组之外的所有

  • chown 修改文件属主

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

chown [OPTION]…–reference=RFILE FILE…参照RFILE赋予FILE同样的属主、属组

选项:

-R:表示递归修改

例如:chown -R u+r  dir1

chown wang dir1

chown wang:g1 dir1

  • chgrp   修改文件属组 (语法同chown,但只能修改文件及目录属组)

(2)文件权限

2

  •                对文件而言:

                r:表示可获取文件的数据;cat、nano等查看类工具获取文件内容

w:表示可修改文件的数据;可修改内容,不能删除文件本身,但文件内容可以删

x:表示可将此文件发起运行为进程(针对可执行程序文件或脚本,一般的文件不需要加x权限)

  •                对目录而言:

                 r:表示可使用ls命令获取其下的所有文件列表信息,但是获取不到ls -l的详细信息

w:表示可修改此目录下的文件列表,即创建或删除文件

x:表示可cd至目录中,且可使用ls -l来获取所有文件的详细属性信息

  •                 除了以上三种常见的权限表示外,还有一个权限表示:

                 X:功能是递归赋权时,只给目录加上x权限,但如果文件之前有x权限就+x权限,文件之前没有x权限,就不加。

(3)文件权限表示法

针对各个权限的表示,除了常规的r、w、x之外,还有另外数字方法进行表示

3

             例如:常见的权限:

644  rw-r–r–

600 rw——-

755  rwxr-xr-x

750  rwxr-x—

775  rwxrwxr-x

(4)新建文件和目录的默认权限:umask值

            在我们创建文件或目录时,系统会根据umask值自动为我们分配一些权限

umask:文件的权限反向掩码

  •             在创建文件时的默认权限为:666-umask(之所以文件用666去减,表示文件默认不能拥有执行权限,如果得到的结果中,仍然有执行权限,这需要将其+1)
  •             在创建目录时的默认权限为:777-umask

 

  •             系统上默认的umask值为:
  •             root:默认umask是022
  •             普通用户:默认umask是002

 

  •         查看umask值:      umask
  •         umask #    :   来指定umask值,值只能是3位数字,不大于777
  •         umask -S     :模式方式显示,结果类似这种格式:u=rwx,g=rx,o=rx
  •         umask -p     :显示uamsk本身和其值,显示结果类似这种格式:umask 0022

 

  •         注意:在命令行里设置的umask只对当前shell有效,退出登录后失效
  •         永久生效,用户设置:  ~/.bashrc       全局设置:    /etc/bashrc

(5)文件权限操作命令

普通用户仅能够修改属主为自己的文件的权限

方法一:chmod [OPTION]… MODE[,MODE]… FILE…模式法

  •                    赋权表示法(直接操作一类用户的所有权限位):u=、g=、o=、a=、ug=、uo=、…..

如:chmod u=rwx  /data/file

  •                   授权表示法:直接操作一类用户的一个权限位:u+、u-、g+…..

如:chmod u-x  /data/file

方法二:chmod [OPTION]… OCTAL-MODE FILE…八进制数字法

                     例如:chmod 660  /data/file

方法三:chmod [OPTION]… –reference=RFILE FILE…(参考RFILE文件权限,给FILE文件赋权)

                     例如:chmod –reference=/etc/issue  /data/file

2、特殊权限:SUID、SGID、Sticky

(1)SUID

  •                功能:设置了SUID权限后,当用户运行某二进制程序文件时,暂时拥有文件属主权限。
  •                作用对象:二进制可执行程序文件
  •                前提条件:该文件属主原本具有执行权限
  •                展示位置:属主的x位,如果属主有x,则显示为s,如果属主没有x,则显示为S

        设置方法:

chmod u+s FILE

chmod 4XXX FILE

取消方法:

chmod u-s FLIE

(2)SGID

  •            功能:( 针对二进制可执行程序文件)设置了SGID权限,当用户运行某二进制程序文件时,暂时拥有文件属组权限。
  •              常用(针对目录而言) 当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组的用户,在此目录中新建文件或目录时,新文件的属组自动归为此目录的属组;

               (可理解为:一般是一个小组协同工作时,创建一个协作目录,让这个目录拥有SGID权限,然后小组内的用户都在同一个属组内,让此属组对该目录有写w权限,这样,小组内的人在这个目录下创建文件时,文件的属组就变成了该目录的属组,这样组内的其他人就对文件具有写权限了,实现了小组工作的协同,但此时组内的人也能删出其他人创建的文件,为了防止这种情况发生,就有了STICKY权限)

  •         作用对象:二进制程序文件和目录
  •         前提条件:对二进制程序文件有x权限,对目录而言有w和x权限
  •         展示位置:文件或目录的属组的执行权限位,如果属组有x,则显示为s,如果属组没有x,则显示为S

        设置方法:

chmod g+s FILE|DIR

chmod 2XXX FILE|DIR

取消方法:

chmod g-s FILE|DIR

(3)Sticky

  •          功能:对目录设置Sticky权限,每个用户能创建新文件,但只能删除自己的文件,无法删除组内其他用户创建的文件(对于属组或全局可写的目录,组内的所有用户或系统上的所有用户,在此目录中都能创建新文件或删除所有的已有文件)
  •         作用对象:目录
  •         前提条件:属组或全局可写的目录,目录有执行权限
  •         展示位置:other的执行权限位,如果other原本有执行权限,显示为小写t,否则,显示为大写T

        设置方法:

chmod o+t DIR

chmod 1XXX  DIR

取消方法:

chmod o-t  DIR

3、设定文件特定属性

chatter

        chattr +A FILE   可以禁止访问时更改访问时间atime

chattr +i  FILE   只读,不能删除,修改内容,改名

chattr +a FILE   只读,能修改内容(echo aaa >> file追加,不能nano),不能删除,改名,移动

取消对应的权限可以将+改为-

lsattr

         lsattr file 查看文件的特定属性

lsattr  /data/* 查看目录/data/下所有文件的特定属性

4、访问控制列表ACL

ACL:Access Control List,实现灵活的权限管理,除了文件的属主、属组和其他人,可以对更多的用户设置权限(CentOS7之前的版本无ACL功能,需手动增加 tune2fs -o acl /dev/sdb1 或者mount -o acl /dev/sdb1 /mnt/data)

ACL生效顺序:所有者,自定义用户,自定义组,其他人。(按顺序匹配,点到即止)

mask起到限定设置acl的最高权限的作用,只影响除了所有者和other的之外的人和组,类似于“马路限高杆”,

setfacl

  •         语法:setfacl [-bkndRLP] { -m|-M|-x|-X … } file …

        选项:

 -b FILE|DIR     删除所有自定义的acl规则,基本的acl规则(所有者,群组,其他)将被保留

 -k DIR     删除默认的acl规则

-R     –recursive:递归的对所有文件及目录进行操作

-m  表示设置ACL规则

-x   表示取消ACL规则

-M acl.txt FILE  表示从指定的文件中读取规则,并以此为模板,设置指定文件FILE中的规则( acl.txt格式为:u:username:rx或g:groupname:rw等)

-X acl2.txt FILE  表示从指定的文件中读取规则,并以此为模板,删除指定文件FILE上的规则(acl.txt格式为:u:username 或 g:groupname 等)

-n       –no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。

–mask     重新计算有效权限,即使ACL mask被明确指定

–set     表示清空原ACL的权限,用新的代替,需要注意的是,新的ACL规则中必须要包含文件自身的权限(UGO)定义,也就是类似:( 如 setfacl –set u::rwx,g::r,o::,u:bican:rwx – FILE

–set-file 以文件为模板,创建指定文件的ACL。如:(getfacl FILE1 | setfacl –set-file=-  FILE2表示复制FILE1的ACL权限给FILE2)

 加上d:设置了默认规则之后,表示在此之后在该目录下新建的文件或目录都默认具有的ACL权限,但现有文件和目录本身还是要另外单独设置ACL规则

权限表达式:

[d:] u:username:mode 指定用户的权限,如果username为空,表示设置文件所有者的权限。加d:表示设置的是默认规则

[d:] g:groupname:mode 指定群组的权限,如果groupname为空,表示设置文件所有群组的权限。加d:表示设置的是默认规则

[d:] m: :mode 指定mask权限, 加d:表示设置的是默认规则

示例:setacl -m u:bican:0 f1  设置用户bican对文件f1权限为0

setfacl -m u::rw f1 设置文件f1属主权限为读写

setfacl -x g:g2 f1   删除文件f1的g2附属组

setfacl -m mask::r f1  设置文件f1属主和other之外的用户或组最高权限为r

getfacl

getfacl FILENAME   查看文件或目录ACL权限的详细信息

备份和恢复ACL

   getfacl -R /tmp/dir1 > acl.txt    保存/tmp/dir1目录的ACL设置

   setfacl -R -b/tmp/dir1  递归删除dir1的ACL

   setfacl -R –set-file=acl.txt /tmp/dir1  或者   setfacl –restore acl.txt    恢复dir1的ACL设置

   getfacl -R /tmp/dir1  查看dir1的ACL,完成

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

(1)
bican813bican813
上一篇 2018-04-15
下一篇 2018-04-15

相关推荐

  • selinux 和 awk的使用

    selinux 和 awk的使用

    Linux笔记 2018-05-15
  • lvs调度方案和应用场景

    ipvs scheduler: 根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法两种: 静态方法:仅根据算法本身进行调度; RR:roundrobin,轮询; WRR:Weighted RR,加权轮询; SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的…

    Linux笔记 2018-07-02
  • 变量替换 字符串处理

    变量替换非空 空 不存在 Var=${Str-Expr} Str 空 Expr Var=${Str:-Expr} Str Expr Expr 不存在至stderrVar=${Str?Expr} Str 空 Expr(stderr) Var=${Str:?Expr} Str Expr(stderr) Expr(stderr) 不存在 被赋值Var=${Str=…

    Linux笔记 2018-07-15
  • ansile

    ansible ansible 是一个自动化运维工具,他是基于python语言实现,基于openssh安全的工具 特性: 1)幂等性:一个任务执行1遍和执行n遍效果一样 ,不因重复执行带来意外情况2)无需代理不依赖PKI(无需ssl)3)可使用任何编程语言写模块4)YAML格式,编排任务,支持丰富的数据结构5)较强大的多层解决方案 ansible可以直接由一…

    Linux笔记 2018-06-04
  • Nginx认证模块与状态监测模块使用示例

    Nginx认证模块与状态监测模块使用示例 一、环境准备 1. 软件版本 CentOS7.4 httpd-tools.x86_64        2.4.6-67.el7.centos.6 nginx.x86_64                  1:1.12.2-2.el7 2. 软件安装 nginx的安装需要epel源,没有配置epel可以直接yum安装…

    2018-06-29
  • DNS服务

    DNS主从服务器,子域实现,反向解析,DNS服务架构

    2018-06-02