权限管理(接上篇)

本文主要介绍: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)
上一篇 2018-04-15 18:13
下一篇 2018-04-15 18:24

相关推荐

  • linux 学习6

    1、简述osi七层模型和TCP/IP五层模型 1、 osi七层模型 1、应用层:OSI 参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。 2、表示层:提供各种用于应用层数据的编码和转换功能,确保一个主机的应用层发送的数据能被另一个主机的应用…

    Linux笔记 2018-07-28
  • NGINX服务1

    I/O模型 Nginx介绍 Nginx安装 Nginx各种模块

    Linux笔记 2018-07-04
  • 如何在VMware下安装CentOS7

    图文详解安装Centos7系统

    2018-07-20
  • 初识——Linux文件管理

    一:文件系统结构 文件目录 Linux文件目录结构是一个倒树状结构,从根(/)开始依次往下,根文件系统为rootfs:root filesystem; 文件名称区分大小写是由文件系统决定的,CentOS6.x默认文件系统为ext4,CentOS7.x上默认文件系统是xfs; 以点(.)开头的文件为隐藏文件,文件路径以(/)分割; 文件有俩类数据:元数据和数据…

    2018-03-31
  • 第三周笔记

    Linux的文本处理三剑客> grep:文本过滤(模式:pattern)工具> grep, egrep, fgrep(不支持正则表达式搜索)> sed:stream editor,文本编辑工具> awk:Linux上的实现gawk,文本报告生成器– ### grep作用是根据“pattern”对目标文件进行搜索,并且显示匹…

    Linux笔记 2018-04-15
  • shell脚本编程基础(2)——新手注意事项及技巧16条

    总结了一些shell脚本编程初学者常犯的错误、注意事项及技巧

    2018-04-14