【发布时间】:2014-01-01 05:21:43
【问题描述】:
我有这个旧的 Perl 脚本。该脚本在 CentOS 6.4 上通过 cron 运行。它会创建一个临时目录并尝试在那里解压缩文件。
这是一段代码:
$lg->li("Creating Directory... \n\t$unzip_dir");
mkdir ($unzip_dir, 0777) or my_die("mkdir $unzip_dir failed") unless (-e $unzip_dir && -d $unzip_dir);
但是执行后目录有奇怪的权限:
drwxrwsr-x 42 buser agroup 12K Dec 30 09:18 .
drwxrwsr-x 4 buser agroup 4.0K Apr 6 2012 ..
drw-rwSr-- 2 auser agroup 4.0K Dec 28 11:51 tm_unpack_dir_1388412502.20184
用户 auser 的 umask 是 0002。
为什么新目录没有执行权限?任何想法,这是怎么发生的?
【问题讨论】:
-
那个 umask 不会产生这些权限。您是否尝试codnodder's suggestion 打印 umask?另请注意,可以通过在脚本中调用
umask EXPR来更改 此进程 的 umask。 -
@ThisSuitIsBlackNot 是的,我做到了。脚本的回复是 0002。脚本内部没有明确的“umask”调用。
-
@ThisSuitIsBlackNot 我无法重现结果。即使是脚本也不总是会创建如此奇怪的目录。大多数时候它工作正常。
-
你应该在你的问题中这么说。如果这是一个间歇性问题,那么(显然)正在发生其他事情。也许您稍后在脚本中调用
chmod,或者在创建目录后另一个脚本正在更改权限。您提供的信息不足以调试您的问题,因此您需要缩小可能性。 -
就像我说的,肯定有其他事情发生。它甚至可以是完全不同的脚本。由于这是一个间歇性问题,您需要弄清楚故障之间的共同点。权限是否仅在一周中的某些时间或某些日子被搁置?重启后?当独角兽在你的隔间撒上仙尘?我不熟悉你的设置,所以我不能说更多,除了 0002 +
mkdir的 umask 单独不会 导致这些权限(正如你自己看到的那样)。