权限管理(接上篇)

本文主要介绍: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运维部落立场,如若转载,请注明出处:/96151

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐主管QQ  万达招商  万达主管  万达注册  万达娱乐平台  万达注册  万达招商  万达直属  万达娱乐主管QQ