首页 > 编程知识 正文

更改一个文件权限的命令是,更改文件属主和属组的命令是

时间:2023-05-05 01:28:44 阅读:27238 作者:2041

chmod可以将文件权限分为u、g、o三个组,setfacl可以为每个文件或目录设置更准确的文件权限

ACL可以对单个用户,单一文件或目录进行r、w、x权限控制

setfacl [-bkndRLP] xbdsmt | -X . } file .-m --modify-acl更改文件访问控制列表- m-- modify-file=从文件读取访问控制列表条目更改- x-- remove=ACL file -all删除所有扩展访问控制列表项-k --remove-default删除默认访问控制列表--set=acl设置替换当前文件访问控制列表--set-file=file 重新计算掩码--n--no代码--- d----应用默认访问控制列表的操作----r----recursive递归操作子目录----l-- - 符号链接----p----physical遵循自然逻辑,根据符号目录--restore=file返回访问控制列表,其作用与“获取- r”相反在--test测试模式下,不会实际更改访问控制列表属性-v --version的显示版本以退出-h --help帮助信息的显示

u :各个用户设置ACL权限

首先,检查用户的默认acl权限,以及chmod所有者组和其他用户的权限

acl权限与chmod权限一起使用

- bash-4.2 # mkdirmakaka-bash-4.2 # chmod-r 755 ma Kaka-bash-4.2 # ll total 0表示文件总共占用0个块的磁盘空间。 通常,一个块表示512字节或1024字节。 drwxr-xr-x2 root root6jun 2809336038 ma Kaka-bash-4.2 # getfaclmakaka # file 3360 ma Kaka------ -文件名# owner 33330组: root--所属组user:rwx ---所属主的acl权限group33603360r-x----所属组的权限other33603360r-x----

向test用户添加ACL权限,使其对名为makaka的文件夹具有可读写权限

- bash-4.2 # setfacl-mu : test : rwxmakaka-bash-4.2 # getenforcemakakadisabled-bash-4.2 # getfaclmakaka # 文件组: root user :3360 rwx user : test : rwx----测试用户的acl权限组:3360 r-xmask 33603360 rwx---- mask权限

从以上内容可以看出,生成了很多两个信息

第一条ser:testrwx显然是test用户的ACL权限

第二条mask权限是指用户或用户组可以具有的最大ACL权限,用户、用户组具有的最大权限不得超过mask权限,超出的范围无效处理

举个例子:

mask的权限为r - x

test用户权限为r w x

最终test权限为r - x

也可以使用setfacl命令更改mask权限。

- bash-4.2 # setfacl-m : rxmakaka-bash-4.2 # getenforcemakakadisabled-bash-4.2 # getfaclmakaka # file 3360 ma Kaka file 3360 ma group : root user : rwx user : test : rwx group :3360 r-xmask 33603360 r-x-- mask权限为r-xother33603360r

如果设置了ACL权限的目录以ll显示,则权限部分会显示一个小加号

- bash-4.2 # lldrwxrwxr-x http://www.Sina.com/3 root root 20ju n 2810336058 ma Kaka

然后测试test用户对makaka目录的操作以及对其他平面目录的操作

test用户创建文件夹[ test @ k8s-mastermakaka ] $ mkdir images [ test @ k8s-mastermakaka ] $ ls images [ t ]

est@k8s-master home]$ lsesuser java makaka test[test@k8s-master home]$ cd java/[test@k8s-master java]$ ls  javav29.zip java.zip zjtq zjtq_20210618[test@k8s-master java]$ mkdir testmkdir: cannot create directory ‘test’: Permission denied

可以看到test用户可以查看java目录下的文件,但是不可以创建文件
因为这个用户的chmod权限是755 test拥有对这个目录 可读 可执行权限

g:用户组设置ACL权限

对用户组设置ACL权限 在用户组的用户都拥有对应的权限,可以将用户添加到一个组中,这样就不需要一个用户一个用户添加

-bash-4.2# setfacl -m g:test:rwx makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xgroup:test:rwx       ---test用户组拥有rwx权限mask::rwxother::r-x

关于目录的默认和递归权限

在上面 对makaka目录设置了ACL权限,可以通过ll 查看到 子级目录并没有继承父级目录二点权限

可以通过-d: 或-R  两个参数 让下级目录拥有父级的权限

在现实场景使用中 是配合使用的

-d: 的使用方式

 

#给目录设置acl权限-bash-4.2# setfacl -m d:test:rwx makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xgroup:test:rwxmask::rwxother::r-x---多了几条默认权限---default:user::rwxdefault:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x查看下级目录的权限,可以看到权限边上没有+号-bash-4.2# lltotal 0drwxrwxr-x 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x 2 root root 6 Jun 28 14:02 test对应的acl权限也没有增加-bash-4.2# getfacl images/# file: images/# owner: test# group: testuser::rwxgroup::rwxother::r-x新创建一个目录-bash-4.2# mkdir baibei-bash-4.2# lltotal 0drwxrwxr-x+ 2 root root 6 Jun 28 14:11 baibeidrwxrwxr-x 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x 2 root root 6 Jun 28 14:02 test可以看到baibei目录权限右边有一个+号查看baibei的acl权限-bash-4.2# getfacl baibei# file: baibei/# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xmask::rwxother::r-xdefault:user::rwx 注意这里也有默认权限default:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x

注意 d: 的作用是增加默认权限 在执行这个命令之前创建的文件 并没有继承父目录的权限  可以通过-R 命令 递归来达到继承父级的权限

-bash-4.2# setfacl -R -m  u:test:rwx makaka-bash-4.2# ll makaka/total 0drwxrwxr-x+ 3 root root 19 Jun 28 14:23 baibeidrwxrwxr-x+ 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x+ 2 root root 6 Jun 28 14:02 test-bash-4.2# getfacl makaka/images# file: makaka/images# owner: test# group: testuser::rwxuser:test:rwxgroup::rwxmask::rwxother::r-x

继承了上级的权限,但是并没有默认权限,意味着在images创建下级文件,也没有test用户的acl权限

所以一般使用的时候 -R 和 d:配合使用

下级也就有默认权限,后期在images创建目录的时候 不需要再重新运行 -R 来添加权限 

-bash-4.2# setfacl -R -m d:u:test:rwx makaka   -bash-4.2# getfacl makaka/images/# file: makaka/images/# owner: test# group: testuser::rwxuser:test:rwxgroup::rwxmask::rwxother::r-x这样下级也有默认权限default:user::rwxdefault:user:test:rwxdefault:group::rwxdefault:mask::rwxdefault:other::r-x

其他参数用法

移除文件指定用户的ACL权限

makaka这个文件 esuser拥有可读,可执行的权限

test对该文件拥有可读可写可执行权限

移除esuser用户对makaka文件的权限:

如下所示 esuser用户应有makaka的默认权限,所以删除的时候 也要加上d:

-ba-bash-4.2# setfacl -R -x d:u:esuser makaka加上d:删除默认权限-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xmask::rwxother::r-xdefault:user::rwxdefault:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x

新创建的ceshi文件 没有默认权限 可以直接用过-x  u: 来清除用户的ACL权限
 

-bash-4.2# setfacl -m u:test:rwx ceshi-bash-4.2# getfacl ceshi/# file: ceshi/# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xmask::rwxother::r-x-bash-4.2# setfacl -x u:test ceshi-bash-4.2# getfacl ceshi/# file: ceshi/# owner: root# group: rootuser::rwxgroup::r-xmask::r-xother::r-x

移除指定文件扩展的ACL权限通过 -b参数 基本的属主属组其他人 的权限会保留

-bash-4.2# setfacl -b makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxgroup::r-xother::r-x

未完待续.....

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。