linux 上的 Netbeans 8 忽略了 umask

umask ignored by Netbeans 8 on linux

我的 linux umask 是 002。

$ umask
0002

因此新文件具有 664 权限。

$ touch new-file
$ ls -l
-rw-rw-r-- 1 david   www-data    0 feb 11 11:37 new-file

但是,如果我从 netbeans 创建一个新文件(右键单击/新建/清空文件),它有 644 个权限。

$ ls -l
-rw-r--r-- 1 david   www-data    0 feb 11 11:40 netbeans-file

我可以配置从 netbeans 创建新文件的权限吗?

umask 是一个掩码,它与创建文件时的预期权限混合在一起。这意味着如果 Netbeans 想要一个带有 rw-r--r-- 的文件并且掩码是 002(意味着你想 删除 为其他人写),真正的保护将是 rw- r--r--。这背后的操作是:

real_rights = wanted_rights & ~umask

应用程序对其创建的文件有保护偏好,而用户对他不想要的权限有偏好。

正如@tripleee 所说,Netbeans 不是设置 umask 的 shell 的子项。

umask 命令在 .bashrc 中,仅在 shell window 打开时执行,但不在会话登录时执行。

将 umask 命令移动到 .profile 后,包括 netbeans 在内的所有 GUI 程序都正确地使用了 umask。