我意识到新文件和目录的权限行为有点奇怪。首先,umask 似乎返回了正确的答案:
$ umask
0002
这意味着我的用户和我的组具有完全访问权限,而世界其他地方则没有写入权限,也没有 suid。但是如果我在 $HOME 中创建一个文件,它看起来就是这样的:
$ ls -l testfile
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile
即,向每个人授予写入权限。目录也会发生同样的情况:
$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir
我认为这与 umask 0000,而不是 0002 相同。我在所有 /etc 中搜索了某些更改默认 0002 或 0022 的 umask 实例,但没有找到。这是默认的 CentOS 5.5 安装。有任何迹象表明为什么会发生这种情况吗?
答案1
我不知道回答我自己的问题是否合适。如果情况并非如此,请编辑们就此提出建议。提前致谢。
我想我已经解决了这个谜团:问题是 XFS 卷上缺少默认 ACL。以下是受影响的目录之一 /srv/backups 的 ACL 条目:
# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
每当我执行“mkdir test”或“touch testfile”时,它都会给出权限 777。所以我这样做了:
setfacl -m d:u::rwx /srv/backups
像这样保留 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
以前(据说)没有 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
我不知道为什么会发生这种情况。我想 XFS 不喜欢没有默认的 ACL,并且当它发生时表现得很奇怪。另外,我只在 CentOS 中看到过这种情况,在 Debian/Ubuntu 中没有。也许与内核中的XFS版本有关,或者类似的东西。不知道。
不管怎样,这对我来说已经解决了。非常感谢所有的建议:-)
答案2
creat 调用可以显式指定优先于 umask 的权限。
您还没有回答您是如何创建的testfile,testdir
。
使用 创建文件touch testfile
,然后列出并发布权限
答案3
只需在 /etc/login.defs 上查找 USERGROUPS_ENAB 变量即可
他们评论以禁用它# USERGROUPS_ENAB yes
如果您还想更改当前用户的 umask,则应首先遵循前面的过程,然后执行以下操作。
以027为例
echo "umask 027" >> ~/.bashrc && pkill -KILL -u your_username_here
echo "umask 027" >> ~/.bashrc 此命令将为您的配置文件设置 umask 默认值
这将迫使您退出
再次登录后
只需再次运行 umask 命令,看看它是否适合您