文章目录
UGO权限
在Linux中将文件可存取身份分为三类:owner group others,我们称为权限对象,且这三类身份都具有:read,write,execute等权限,我们称为权限类型。
权限对象
owner
文件拥有着,我们也称为属主,由于Linux是一个多任务多用户的系统,因此会有很多人来使用这部主机,为了考虑每个人的隐私,文件所有者这个权限就尤为重要。
group
群组是权限中最有用的功能之一,群组简单理解就是用户组,类似于部分之间或学校的班级之间的划分,群组内的资源是共享的,群组之间是相互隔离的。
others
非文件的拥有着,或者文件的所属组以外的用户。
权限类型
Linux权限基于UGO模型进行控制,U代表User,G代表Group,O代表Other;每一个文件的权限基于UGO进行设置Linux的基本权限分为读、写、执行(r、w、x),可用数字4、2、1来表示。
当我们执行ls -l命令时会看到类似以下内容:
属主:用户若是文件的主人,则匹配属主的权限,权限在文件的左三位,即第一个rwx;
属组:用户与属组在同一个组,则匹配属组的权限,权限在文件的中三位,即第二个rwx;
其他:用户即不是属主也不是属组,则匹配其他的权限,权限在文件的右三位,即第三个rwx;
权限项 | 字符数字表示 |
---|---|
读 | r,4 |
写 | w,2 |
执行 | x,1 |
没有权限 | -,0 |
rwx权限说明
对文件而言
权限 | 说明 |
---|---|
r | 可获取文件数据 |
w | 可修改文件数据 |
x | 可将此文件运行为进程 |
对目录而言
权限 | 说明 |
---|---|
r | 可使用ls命令获取其下的所有文件列表 |
w | 可修改此目录下的文件列表,即可创建或删除文件 |
x | 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息 |
权限管理命令
权限管理命令chmod
三类用户:
u:属主
g:属组
o:其他人
a:所有
(1)chmod [选项]… MODE [,MODE] FILE…
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx;
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+,u-
g+,g-
o+,o-
选项 :-R 递归修改
注意:用户仅能修改属主为自己的那些文件的权限
【例1】授权表示法:给file1的属主一个可执行权限
【例2】授权表示法:继例1后再对file进行权限设置,用-R选项实现递归赋权
【例3】赋权表示法:给file1的属组赋予rwx权限
【例4】赋权表示法:给file1的属主rw权限,属组rw权限,其他人没有任何权限
【例5】-R递归:当没有用-R时,test1的属组权限改为了rwx,test1下的目录文件权限并没有改动
当用了-R参数后,可以发现实现了递归赋权
丛属关系管理命令chown
chown [选项]… [所有者][:[组]] 文件…
选项:-R 递归修改
【例1】将file1的属主、属组改为user01
【例2】只修改属组为user02
进程上下文法则:
若进程的属主和文件的属主一致,进程将拥有文件属主的权限;
若进程的属主和文件的属主不一致,判断进程的属主和文件的属组是否一致,一致进程将拥有文件属组的权限;
不一致进程将拥有文件其他人的权限。
例如:/tmp/test1的属主属组分别为user01、user02,当/tmp/test1作为一个进程在user03用户下运行时,此时此进程的属主不一致,属组也不一致,只能找其他人的权限,发现其他人没有任何权限,因此此进程无法执行rwx中任一权限。
ACL权限
ACL全称是Access Control List(访问控制列表),一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制,它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。
既然是作为UGO权限管理的补充,ACL自然要有UGO办不到或者很难办到的本身,例如:
1、可以针对用户来设置权限;
2、可以针对用户组来设置权限;
3、子文件/目录继承父目录的权限;
setfacl命令
setfacl [bkRd] [{-m/-x} acl参数] 文件/目录名
-m:配置后面的ACL参数给文件/目录使用,不可与-x合用
当一个用户或组acl权限不存在时,-m选项执行的是添加
当一个用户或组acl权限存在时,-m选项执行的是更改
-x:删除后续的ACL参数,不可与-x合用
-b:移除所有的ACL配置参数
-k:移除默认的ACL参数
-R:递归配置ACL
-d:配置“默认ACL参数”,只对目录有效,在该目录新建的数据会引用此默认值
给用户赋权:setfacl -m u:username:rwx file
给组赋权:setfacl -m g:groupname:rwx file
getfacl命令
查看当前的ACL权限
getfacl 文件/目录名
【实例1】在user01下创建一个/tmp/aclfile文件,查看它的权限发现其他人只有可读权限,切换到user02下给/tmp/aclfile写入内容发现权限不够;切换到root下给/tmp/aclfile给user02下rw权限,再切换到user02下发现可以给aclfile写入内容了,再用getfacl查看/tmp/aclfile文件的ACL权限。
【实例2】给file1目录赋予user02用户rwx权限,在file1下创建一个子目录发现,其子目录file01继承了file1的acl权限,也可称:为file1子目录设置了默认权限。
但是,当在file1下创建一个文件file02时发现,虽然file02也继承了file1的acl权限,但是file1有自己真正生效的权限
【实例3】用-x选项清除file1给user01的权限,发现file1权限已清除,可是file1的“默认权限”还在。
用-Rb参数清楚file1acl权限,发现其“默认权限”已清楚
备份和恢复ACL权限
给file1备份acl权限在file.acl文件中,查看file.acl文件,可以看到file1及子文件的acl权限
清除file1以子文件的所有acl权限
恢复file1文件及子文件的acl权限
权限掩码umask
我们在新创建目录和文件时其本身是有它的默认权限的,这个默认权限就是由umask所确定的。它的功能可以说与chmod刚好相反的,代表默认拿走的也就是说不要的权限。
所以说,umask是用来指定“目前用户在新建文件或者目录时候的权限默认值”。
在Linux下我们查看的方式有两种,一种可以直接输入umask,就可以看到数字形态的权限设置分数,一种则是加-S选项,就能以符号类型的方式来显示出权限了。
文件:666-umask
目录:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得结果中有执行权限,则需要将其加1;
例:umask:023
666-023=644
777-023=754
umask命令:
umask:查看当前umask
umask MASK:设置umask(只对当前shell有效)
永久修改:在/etc/profile下定义
文件特殊权限SUID SGID SBIT
SUID(Set UID)
当一个文件权限状态为“-rwsr-xr-x”之类的话,就被称为Set UID,简称为SUID。
那么这个特殊权限的特殊性的作用是什么呢?
1、SUID权限仅对二进制程序有效;
2、执行者对于该程序需要具有x的可执行权限;
3、本权限仅在执行该程序过程中有效;
4、执行者将具有该程序拥有着的权限。
表现形式:
-rwsr-xr-x passwd ==s表示SUID和x的权限
-rwSr-xr-x passwd ==S表示只是SUID
SGID
把s放到文件的所属用户组x位置上的话,就是SGID
作用:
1、作用与二进制文件。
2、对于所有用户有而执行权限。
3、一般作用与目录,对文件也生效
4、对于程序的运行者将具有文件属组的权限。
SBIT
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。SBIT目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除。