我意识到新文件和目录的权限表现得有点奇怪。首先,umask 似乎返回了正确的答案:
$ umask
0002
Run Code Online (Sandbox Code Playgroud)
这意味着对我的用户和我的组具有完全访问权限,对世界其他地方没有写访问权限,没有 suid。但是如果我在 $HOME 中创建一个文件,它看起来是这样的:
$ ls -l testfile
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile
Run Code Online (Sandbox Code Playgroud)
即,给每个人写访问权限。目录也会发生同样的情况:
$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir
Run Code Online (Sandbox Code Playgroud)
我认为这与使用 umask 0000 而不是 0002 相同。我在所有 /etc 中搜索了一些更改默认 0002 或 0022 的 umask 实例,但没有找到。这是默认的 CentOS 5.5 安装。为什么会发生这种情况的任何提示?
我不知道回答我自己的问题是否合适。如果情况并非如此,请编辑们就此提出建议。提前致谢。
我想我已经解决了这个谜团:问题是 XFS 卷上缺少默认 ACL。以下是受影响的目录之一 /srv/backups 的 ACL 条目:
# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
Run Code Online (Sandbox Code Playgroud)
每当我执行“mkdir test”或“touch testfile”时,它都会给出权限 777。所以我这样做了:
setfacl -m d:u::rwx /srv/backups
Run Code Online (Sandbox Code Playgroud)
像这样保留 ACL:
# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x
Run Code Online (Sandbox Code Playgroud)
以前(据说)没有 ACL,但现在有了。当我执行“ls -l”时,我可以看到权限附加了“+”号。神奇的是,现在“mkdir test”和“touch testfile”可以使用预期的权限:
# ls -l testfile
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况。我想 XFS 不喜欢没有默认的 ACL,并且当它发生时表现得很奇怪。另外,我只在 CentOS 中看到过这种情况,在 Debian/Ubuntu 中没有。也许它与内核中的XFS版本有关,或者类似的东西。不知道。
不管怎样,这对我来说已经解决了。非常感谢所有的建议:-)
归档时间: |
|
查看次数: |
1265 次 |
最近记录: |