linux – 为什么cp不尊重ACL?
发布时间:2020-12-13 18:05:33 所属栏目:Linux 来源:网络整理
导读:在组内设置文件共享目录的常用方法是: $mkdir foo$chgrp felles foo$chmod g+ws foo$setfacl -m group:felles:rwx foo$setfacl -dm group:felles:rwx foo 这可以确保在foo中创建的任何文件都是组felles可读写的: $umask0022$echo hi foo/bar$ls -l footota
在组内设置文件共享目录的常用方法是:
$mkdir foo $chgrp felles foo $chmod g+ws foo $setfacl -m group:felles:rwx foo $setfacl -dm group:felles:rwx foo 这可以确保在foo中创建的任何文件都是组felles可读写的: $umask 0022 $echo hi > foo/bar $ls -l foo total 4 -rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar 但是,如果将文件复制到foo,则不应用默认ACL: $echo you > baz $cp baz foo/ $ls -l foo total 8 -rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar -rw-r--r--+ 1 bhm felles 4 2010-09-23 00:19 baz $getfacl foo/baz # file: foo/baz # owner: bhm # group: felles user::rw- group::rwx #effective:r-- group:felles:rwx #effective:r-- mask::r-- other::r-- 为什么会发生这种情况,有没有解决方法呢? (将文件移动到目录中不会考虑ACL或组所有权,但我可以理解为什么:您可能不希望仅仅因为更改其名称而更改文件的权限.) 解决方法
如果cp创建目标文件,它将复制源文件的权限,但umask中设置的位除外.这是标准行为(参见例如
Single Unix v3 (POSIX 2001) specification中的步骤3.b.
为什么cp这样设计?因为在许多情况下需要这种行为,例如在原始权限是限制性时保留文件的隐私,并且保持可执行性几乎总是正确的.然而,遗憾的是,即使GNU cp也没有选择关闭此行为. 大多数复制工具(例如pax,rsync)的行为方式相同.您可以通过将源与目标分离来确保使用默认权限创建文件,例如使用cat< baz> foo / baz. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读