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


10

我已经意识到,新文件和目录的权限表现得有些奇怪。首先,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中搜索了umask的某些实例,这些实例更改了默认的0002或0022,但没有找到。这是默认的CentOS 5.5安装。任何暗示为什么会这样?


3
您的主目录位于哪种文件系统类型上?
mattdm 2011年

4
以及您如何创建testfiletestdir
mattdm 2011年

3
@mattdm,您正确的坚持:这是XFS。我忘记了我们为/ home,/ var和其他几个单独的卷。虽然我经常使用XFS,但从未见过这种行为。它如何关联?
rsuarez 2011年

2
acl可以在本地覆盖umask。是否有可能用ACL挂载目录?
Faheem Mitha

3
嗯,显然xfs始终启用了acl。因此它可能不会显示在您的/ etc / fstab中。尝试在分区/目录上运行getfacl。
Faheem Mitha

Answers:


3

我不知道回答我自己的问题是否合适。如果不是这种情况,请编辑建议。提前致谢。

我想我已经解决了这个谜:问题是XFS卷上缺少默认的ACL。这是/ srv / backups的ACL条目,这是受影响的目录之一:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

每当我执行“ mkdir测试”或“触摸测试文件”时,它就会获得权限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测试”和“触摸测试文件”具有预期的权限:

# 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版本有关,或类似的东西。不知道。

无论如何,这为我解决了问题。非常感谢所有建议:-)


回答自己的问题是完全可以接受的
基思·汤普森

0

creat调用可以明确指定优先于umask的权限。

您尚未回答自己的创建方式testfile,testdir

使用创建文件touch testfile,然后列出并发布权限


抱歉耽搁了。我使用“ touch testfile”和“ mkdir testdir”进行了测试,结果相似。的umask似乎被设置为“0000”,因为它们与权限777创建
rsuarez

0

getfacl .在创建测试文件的目录中尝试a ,以查看是否存在影响权限的默认acl。


1
不,没有默认的ACL。它似乎以某种方式与XFS有关,因为它仅发生在XFS卷中。但是还是谢谢你。
rsuarez 2011年

-1

只需在/etc/login.defs上查找USERGROUPS_ENAB变量

他们的评论,以使其禁用#USERGROUPS_ENAB是

如果您还想更改当前用户的umask,则应首先放弃前面的过程,然后他们执行以下操作。

027的例子

回声“ umask 027” >>〜/ .bashrc && pkill -KILL -u your_username_here

echo“ umask 027” >>〜/ .bashrc此命令将为您的配置文件设置umask默认值

这将迫使您退出

再次登录后

只需再次运行umask comand,看看它是否对您有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.