尽管 umask 限制更严格,但为什么我的主目录中的文件被创建为全局可写?

尽管 umask 限制更严格,但为什么我的主目录中的文件被创建为全局可写?

我意识到新文件和目录的权限行为有点奇怪。首先,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 命令,看看它是否适合您

相关内容