【我的Linux,我做主!】ACL访问控制列表

目录:
(一)使用ACL为用户授权
(二)设置mask权限
(三)设置默认权限(只能对目录设置)


(一)使用ACL为用户授权
(1.1)如果现在我们有一个需求,在系统中有一个文件file,我们需要设置tom对file文件的权限为“r--”,设置bob用户对file文件的权限为“rw-”,设置mary用户对file文件的权限为“---”,设置jerry用户对file文件的权限为“r-x”。此时我们使用常规的属组属主的权限设置是没有办法满足要求的,如果要求对具体的某个用户或者组来设置acl权限,大家要考虑到使用acl
(1.2)现在我们进入到/opt/目录下,然后将/etc/hosts文件拷贝到当前目录中,此时我们发现hosts文件的other用户的权限是可读(图1-1),所以我们以tom用户的身份去修改hosts文件的时候,发现无法修改成功(图1-2和图1-3)。
# cp /etc/hosts .
# getfacl hosts
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(1.3)如果此时我们希望tom用户能够对hosts文件进行修改,则我们应该使用setfacl命令进行设置。我们设置针对hosts文件给tom用户设置rwx的权限,我们发现tom用户已经有了一个在hosts文件的acl权限(图1-4),此时我们使用tom用户便可以正常的在hosts文件中添加信息了(图1-5)。
# setfacl -m u:tom:rwx hosts---针对hosts文件给tom用户设置rwx的权限
# getfacl hosts---查询当前hosts文件的权限
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(1.4)如果我们希望取消给tom用户设置的acl权限,则可以使用setfacl -x命令操作,此时我们发现系统中已经没有针对tom用户设置的acl权限了(如图1-6)。
# setfacl -x u:tom hosts---取消给tom用户设置的acl权限
【我的Linux,我做主!】ACL访问控制列表


(二)设置mask权限
(2.1)我们先给tom用户和jerry用户都设置acl权限(图2-1),现在我们在公司中有某个文件或者某个目录,对很多个用户都设置了acl访问控制的权限,但是现在需要对文件或目录进行维护,此时我们需求是不允许任何人再写这个文件了,等文件维护完毕后然后再开放文件权限给对应的用户使用,此时我们可以使用mask权限,相当于一层遮罩码将当前用户的权限盖住,然后进行维护操作,我们可以使用setfacl -m命令操作(图2-2),此时我们发现之前给tom用户和jerry用户设置的acl权限都被新的遮罩码“r--”盖住了,我们使用“# setfacl -m m::r-- hosts”进行遮罩码的操作后,发现此时以tom用户编辑hosts文件的时候是无法修改成功的(图2-3)。
# setfacl -m u:tom:rwx hosts---设置tom用户的acl权限
# setfacl -m u:jerry:rwx hosts---设置jerry用户的acl权限
# setfacl -m m::r-- hosts---给hosts文件设置一个mask遮罩码
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(2.2)如果我们想将这个遮罩码去除,此时我们只需要对其中的一个用户重新设置acl权限后,便可以使得所有用户原先的acl权限都生效了。
# setfacl -m u:tom:rwx hosts---设置tom用户的acl值
# getfacl hosts---查询hosts文件的acl状态
【我的Linux,我做主!】ACL访问控制列表
(2.3)现在我们设置hosts文件的mask值为不可读、不可写、不可执行,此时我们发现虽然此时hosts文件的mask权限为“---”,但是由于hosts文件的other权限中是有可读的权限的,所以此时tom用户会以other的身份读取hosts文件,是能够正常的读取hosys文件的,只有我们将other的可读权限也去除,此时tom用户才无法读取文件。
注意:我们总结的内容为,如果mask的权限设置为“---”,则other的权限生效;如果mask的权限设置为非“---”,则mask权限生效
# setfacl -m m::--- hosts---设置hosts文件的mask值为不可读、不可写、不可执行
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(2.4)现在我们重新设置一个tom用户和jerry用户的权限都为r-x,然后设置mask的值为rwx(图2-7),此时我们使用tom用户去尝试写入hosts文件时,发现仍然是无法写入的(图2-8)。我们的总结为,如果你给用户设置的为r-x,没有设置w这个权限,此时如果想在mask里给它设置了这个w的权限,也是仍然无法使得文件可写的权限生效的。如果我们对other的权限添加了w的权限,此时tom和jerry用户仍然是无法拥有hosts文件的可写权限的,即说明了setacl设置的权限的优先级高于other里设置的权限。
# setfacl -m u:tom:r-x hosts---设置tom用户的acl为r-x
# setfacl -m u:jerry:r-x hosts---设置jerry用户的acl为r-x
# setfacl -m m::rwx hosts---设置hosts文件的mask值为rwx
# getfacl hosts---查询hosts文件的acl状态
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(2.5)如果现在我们想对用户组设置acl权限,例如我们设置了tom组拥有可读、可写、可执行的权限,然后我们想让没有权限的bob用户拥有tom组的权限,此时我们的做法是将bob用户加入到tom组中,然后将bob用户退出登录后再重新登录bob用户,此时bob用户便拥有了tom组的权限。
# setfacl -m g:tom:rwx file---对tom组设置acl权限


(三)设置默认权限(只能对目录设置)
(3.1)我们首先在vms002主机的/opt/目录下创建一个rh134的目录。
# mkdir rh134---创建一个rh134的目录
# getfacl rh134/---获取所创建的目录的权限
【我的Linux,我做主!】ACL访问控制列表
(3.2)然后我们设置针对rh134目录下,不管是谁在rh134目录里创建的新的文件或者目录,对tom都具有rwx权限,但是并不包括rh134本身。接着我们在rh134目录下创建一个root1的文件,此时我们发现创建的root1文件的权限继承了tom用户rwx的权限,但是由于操作系统规定创建的文件最高权限为644,所以文件的默认权限为rw-,所以在创建文件的时候,不管用什么方法,都没有办法创建出来默认含有x权限的文件。
# setfacl -m d:u:tom:rwx rh134/---设置不管是谁在rh134目录里创建的新的文件或者目录,对tom都具有rwx权限,但是并不包括rh134本身
# touch rh134/root1---在rh134目录下创建一个root1的文件
# getfacl rh134/root1---查询root1目录的acl权限
【我的Linux,我做主!】ACL访问控制列表
(3.3)接着我们尝试使用jerry用户创建文件,我们首先将jerry用户设置acl为对目录rh134有rwx权限(图3-3),然后我们创建了一个jerry1文件,此时我们创建的jerry1文件继承了tom用户的rwx权限,同时为了符合系统默认创建文件的要求,因此最终jerry1文件的权限为rw-(图3-4)
# setfacl -m u:jerry:rwx rh134/---设置jerry用户拥有对目录rh134可读、可写、可执行的权限
# getfacl rh134/---获取目录rh134的权限信息
# touch rh134/jerry1
# getfacl rh134/jerry1
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表
(3.4)我们再使用jerry用户在/opt/目录下创建一个jerry2的目录,此时我们发现创建的目录也仍然继承了默认的tom用户执行时所拥有的rwx权限。
# mkdir rh134/jerry2---创建一个目录jerry2
# getfacl rh134/jerry2
【我的Linux,我做主!】ACL访问控制列表
(3.5)此时虽然tom用户对rh134目录中新增加的文件具有权限,但是tom用户本身是无法在rh134目录中创建文件的,因为我们并没有针对rh134目录为tom用户设置acl权限。
【我的Linux,我做主!】ACL访问控制列表
(3.6)如果我们希望将针对tom用户的默认权限取消,我们可以使用“# setfacl -x d:u:tom rh134/”命令,我们发现之前创建的文件仍然具有tom用户可读、可写的权限不会收回去的(图3-7),但是如果我们新创建的文件,则不会再继承tom用户可以执行的相关权限了(图3-8)。
# setfacl -x d:u:tom rh134/---取消针对134目录下的文件继承tom用户拥有相关权限的默认设置
# getfacl rh134/jerry1---获取rh134目录中之前创建的文件的acl权限
# mkdir rh134/root2
# getfacl rh134/root2
【我的Linux,我做主!】ACL访问控制列表
【我的Linux,我做主!】ACL访问控制列表

—————— 本文至此结束,感谢阅读 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章