为什么我的 umask 总是重置为 000?

为什么我的 umask 总是重置为 000?

当我重新登录时,我的 umask 是002。至少有一段时间是这样。然后在某个时候,我不知道什么时候,它会恢复为000。这非常不方便,我现在一直担心我的主目录中会丢失具有奇怪权限的文件和文件夹。

恢复到出厂设置000可能在使用几分钟后发生,也可能在使用几天后发生。在我第一次安装 ubuntu 几周后,这种情况经常发生,然后逐渐平息,就在过去的几天里,这个问题又出现了。

我可以将其重新设置002$ umask 002但是这只对当前 shell 有效(正如预期的那样)。

更多信息:

  • 即使002我的 f7 登录处于000
  • /etc/profile说 umask 现在由 pam_umask 处理
  • /etc/login.defsUMASK 022USERGROUPS_ENAB yes

我正在运行带有 XMonad 和 (oh-my-)zsh 的 Ubuntu 13.10。

如果这有用的话,这是我的/etc/fstab

# <file system> <mount point>   <type>  <options>       <dump>  <pass>                                    
# / was on /dev/sdb8 during installation                                                                  
UUID=96f989e0-ee94-4bff-9663-3fa479a83ad4 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sdb1 during installation                                                          
UUID=7682-B8AD  /boot/efi       vfat    defaults        0       1
# swap was on /dev/sdb7 during installation                                                               
UUID=0d7d57af-9a31-481e-9da4-1032c94f57e9 none            swap    sw              0       0

以下是我的 crontab 的精简版本crontab -l

* * * * * cd /home/miles/code/Checkin/ && ./node_modules/.bin/coffee ./client.coffee -n attercop -h secret1.com -p 8888
* * * * * cd /home/miles/code/Checkin/ && ./node_modules/.bin/coffee ./client.coffee -n attercop -h secret2.com -p 8888

client.coffee只是一个发送 http 请求的脚本。

我的 root crontab 来自sudo crontab -l报告no crontab for root

答案1

对我来说,这个问题是由 Sublime Text 3 的 Terminal 插件引起的,该插件用于从 sublime 文件启动终端。当 Terminal 启动首个且唯一000gnome-terminal 的窗口,那么它就继承了sublime的 umask 。

希望这个答案能够对那些没有遇到与我相同问题的人有所帮助,我将重申一些关于如何解决这个问题的建议,这些建议是从上面的评论中收集来的:

  • 查看你的 rc 文件(.bashrc.zshrc)以查看是否有错误umask调用。
  • 如果您使用 bash,请尝试bash -x -l -i -c 'exit' 2>&1 | grep umask从 rc 文件中找到对 umask 的调用。
  • 如果您使用 zsh,请尝试从 rc 文件中zsh -x -l -i -c 'exit' 2>&1 | grep umask找到调用。umask
  • 检查挂载时是否设置了 umask 值$HOME。查看/etc/fstab
  • 检查 cron 中是否有任何奇怪的运行程序可能会改变你的 umask。 crontab -lsudo crontab -l
  • 也许尝试使用audit来查找神秘的 umask 更改的来源。 sudo auditctl -A auditctl exit,always -S umask并查看/var/log/kern.log

相关内容