umask 不能与 nohup 一起使用

umask 不能与 nohup 一起使用

看起来umasknohup不能正确地一起工作。

我这样做了:

$ umask 022
$ nohup java -jar blah.jar &
[1] 12345
nohup: ignoring input and appending output to `nohup.out'
$ ls -l nohup.out
-rw-------. 1 juser juser 41242 Jun 27 11:07 nohup.out

知道为什么吗?nohup是强制 600 忽略umask设置吗?我怎样才能获得nohup.out644 权限而不是 600 的创建权限?好的,我可以做一个chmod 644 nohup.out,但我更喜欢“干净”的方法。

我的 shell 是 bash,操作系统是 CentOS 7。

答案1

GNU 的实现nohup 忽略umask:

nohup.out无论当前设置如何,由或$HOME/nohup.out创建的任何文件都nohup只能由用户读取和写入umask

这只适用于nohup它本身创建文件时,因此您可以nohup.out在运行之前使用适当的权限创建文件nohupnohup并将附加到该文件而不更改权限:

umask 022
touch nohup.out
nohup java -jar blah.jar &

甚至使用重定向让 shell 为您创建文件:

umask 022
> nohup.out nohup java -jar blah.jar &

相关内容