(1)权限对象:
1、文件拥有者
文件拥有者我们也成为文件的属主,由于Linux系统是一个多尔恩五用户的系统,因此会有很多人来使用这部主机,为了考虑每个人的隐私,文件所有者这个去权限就尤为重要。
2、群组
群组是权限中最有用的功能之一,群组简单理解就是用户组,类似于我们公司的各个部门之间,或者学校班级的划分,每一个班级就是一个群组,群组内的资源是共享的,群组之间是相互隔离的
3、其他人
对于非文件的所有者,或者文件所属组意外的人,我们称之为其他人。
每个文件都有其所对应的属主,属组,其他人,其权力也是不尽相同的,我们以/usr/bin/passwd为例:|12|[root@chenyi ~]#ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 11:57 /usr/bin/passwd
该文件所的属主为root,权限为rws;
属组为root,权限为r-x;
其他人权限为r-x。
rwx:
r、w、x权限说明:
1、对于文件而言
例子:在用户chenyi1用户的/tmp/下创建文件daidai,然后切换用户到chenyi2下的/tmp/目录下查看
如图所示,文件daidai的属主和属组都为chenyi1,用户chenyi2既不是该文件的属主也不是属组成员,所以用户chenyi2对文件daidai只有r-x权限,即读和执行的权限,没有修改权限。
2、对于目录而言
图所示,目录chen的属主和属组都为chenyi1,用户chenyi2既不是该目录的属主也不是属组成员,所以用户chenyi2对目录陈只有r–权限,即用户只有查看该目录下文件列表的权力,但不能在该目录下创建或删除文件,也不能查看该目录下文件的内容。
权限管理命令:
chmod命令
三类用户:
u:属主
g:属组
o:其他
a:所有
赋权表示法:直接操作一类用户的所有权限位rwx
u=
g=
o=
a=
例子:
给文件daidai或目录daidai的属主赋予rwx权限
[chenyi2@chenyi tmp]$ chmod u=rwx daidai
授权表示法:
u+,u-
g+,g-
o+,o-
a+,a-
例子:
[chenyi1@chenyi tmp]$ chmod u+rx,g+rwx,o-r chen
[chenyi1@chenyi tmp]$ ll |grep chen
-rwxrwx—. 1 chenyi1 chenyi1 7 7月 30 12:52 chen
权限数字表示方法:
从属关系管理命令:
-R:递归修改
例子:修改目录呆呆的属主和属组分别为chenyi2,chenyi1,修改后,目录daidai下所有的文件和目录的属主和属组都将发生改变,递归修改。
进程上下文法则:
若进程的属主和文件的属主一致,进程将拥有文件属主的权限,
若进程的属主和文件的属主不一致,判断进程的属主和文件的属组是否一致,一致进程将拥有文件属组的权限。 不一致进程将拥有文件其他人的权限
具体实例:
文件daidai的属主和属组以及对应权限如下图所示:
复制一个终端并切换到任意一个普通用户下,例如切换到用户chenyi1下,启动进程cat,然后返回原终端查看cat进程,此时我们发现cat进程的发起者为用户chenyi1,如下图:
进程的发起者为chenyi1,而文件daidai的属主为chenyi2,所以cat没有属主的权限,此时我们再看属组和发起者是否相同(也可以看进程发起者是否在文件daidai的属组中),进程发起者和文件daidai的属组是一样的均为chenyi1,所以此时cat进程对文件daidai有其属组的权限,若进程发起者和文件的属主不同且不在其属组中,此时cat进程对文件daidai只有其他人权限,在此处对应权限为r–。
基本权限ACL
ACL全称是access Control List(访问控制列表),它是在UGO管理的基础上为文件提供一个额外的、更加灵活的权限管理机制,作为UGO权限管理的补充,本领如下:
1、可以针对用户来设置权限
2、可以针对用户组来设置权限
3、子文件/目录继承父目录的权限
添加权限:
1、给用户
具体实例:在root用户下的/tmp/目录中创建一个文件例如"dai:
然后切换到用户chenyi1下的/tmp/目录中,往文件"dai"中输入内容”ha"发现我们没有权限
然后我们返回到root用户下,赋予用户chenyi1权限让其有权限往文件"dai"中输入内容
然后我们切到用户chenyi1下输入内容就可以了
以上就是给用户组加权的全部过程
2、给用户组
给用户组加权的过程和给用户加权的过程基本是一样的,只需要改个选项:
给用户加权时:
setfacl -m u:chenyi1:rw dai
u后跟用户
而给用户组加权时:
setfacl -m g:chenyi1:rw dai
g后加用户组
其余的步骤是完全一样的
查看ACL权限:
getfacl 文件/目录名
例如查看文件dai的ACL权限
getfacl dai
子文件/目录继承父目录的权限
在root用户下的/tmp/目录下创建目录"pengyuye"
然后赋予ACL权限
在目录pengyuye下创建目录yibao,创建文件abc
查看新创建目录和文件的ACL权限
查看时我们发现新建的文件和目录均有acl权限,但是我们并没有赋予其acl权限,但是我赋予了父目录pengyuye权限,而文件abc和目录yibao是其子文件和子目录所以继承了acl权限,这就是权限的继承。
修改ACL权限:
-m:配置后面的acl参数给文件/目录使用
实例:
1、修改用户chenyi1对文件file的权限为rw-
setfacl -m u:chenyi1:rw-
2、修改用户组chenyi1对文件file的权限为rwx
setfacl -m g:chenyi1:rwx
删除后续的ACL权限:
-x:修改后续的acl权限不可与-m连用
实例:移除用户chenyi1对文件dai的后续ACL权限
移除前
移除:|48|[root@chenyi /tmp]#setfacl -x u:chenyi1 dai
然后查看文件dai的ACL权限如下,用户chenyi1 的ACL权限没有了:
|49|[root@chenyi /tmp]#getfacl dai
file: dai
owner: root
group: root
user::rw-
user:chenyi2:rw-
group::r–
mask::rw-
other::r–
-b:移除所有的ACL参数
setfacl -b dai
ACL权限的备份和恢复:
备份:
例如:将目录daidai及其目录下的子目录子文件ACL备份到文件huge里
递归清除目录daidai的ACL权限:
恢复:
权限的掩码umask
umask命令
umask
umask -S
umask的更改:
默认权限的定义是由权限掩码来决定:
文件:默认权限是:666-umask
例:在/tmp/目录下创建一个文件"a",查看其权限
权限为:rw-r–r--=644=666-umask=666-022=644
目录:默认权限是:777-umask
例:在/tmp/目录下创建一个目录"b",查看其权限
权限为:rwxr-xr-x=755=777-umask=777-022=755
临时修改: umask 044
永久修改,在/etc/profile下定义
if [ $UID -gt 199 ] && [ “/usr/bin/id -gn
” = “/usr/bin/id -un
” ]; then
umask 002
else
umask 044
fi
/usr/bin/id -gn
/usr/bin/id -un
解释:-eq"=" -gt">" -lt"<" -ne"≠“ -le"<=" -ge">="
若echo $UID大于199,且用户组=用户名,则权限掩码umask为022,否则权限掩码为044
此类设定仅对当前shell有效
如果觉得《linux文件系统权限管理(UGO权限 ACL权限 权限掩码)》对你有帮助,请点赞、收藏,并留下你的观点哦!