/tmp 目录中的不可见文件

问题描述 投票:0回答:1

我有一个 CGI::Session 脚本,它将会话 ID 写入 /tmp 文件。该脚本没有出错,但是当我检查 /tmp 目录时,我没有找到 cgisess* 文件。这是/tmp的许可:

info@linux-web-server [tmp]# ls -ld /tmp
drwxrwxrwt 14 root root 4096 Jul 31 00:00 /tmp

我将此命令添加到脚本中:

my $userexecuting = getpwuid( $< );
Logger::debug("cgiscript: csv_auth : userexecuting : $userexecuting");

这就是结果:

2023-07-31 02:06:01 : cgiscript: csv_auth : userexecuting : www-data

我尝试这样做,但没有成功:

chmod +t csvauth
chattr +i csvauth

目录未被删除,但应该存在的文件不存在。

如果我有 cgi::session 将 cgisess* 文件写入我的主目录,那么它可以工作,但我不想将该文件放在我的主目录中,我想了解它为什么这样做。

我将其添加到脚本中并且文件出现了。所以文件就在那里,但当我在 Linux 终端上发出

ls
命令时,我看不到它们:

 my @cgisessfiles = `ls -l /tmp/csvauth/*`;
    print "<!DOCTYPE html>\n";
    print "<html>\n";
    foreach my $cgisessfile (@cgisessfiles) {
      print "<h3>$cgisessfile</h3>\n";
    }

-rw-r----- 1 www-data www-data 223 Jul 31 11:12 /tmp/csvauth/cgisess_23ad19ddc8f00f1a31dc72e54ea3205d
-rw-r----- 1 www-data www-data 189 Jul 31 11:16 /tmp/csvauth/cgisess_38f7ae2b68e39f6a16a869517007b963
-rw-r----- 1 www-data www-data 210 Jul 30 21:06 /tmp/csvauth/cgisess_3938ea95909e78e3e718edf45460c6b7
-rw-r----- 1 www-data www-data 210 Jul 30 21:12 /tmp/csvauth/cgisess_3ab70e080cda071bcc061d8d63d6565c
-rw-r----- 1 www-data www-data 187 Jul 30 16:39 /tmp/csvauth/cgisess_3e7a9e0b68ff69849ed43a1865f62f04
-rw-r--r-- 1 www-data www-data 45140 Jul 31 10:57 /tmp/csvauth/csv_auth_log.txt 

我需要做什么才能让它发挥作用?权限似乎是正确的。

perl cgi file-permissions tmp
1个回答
0
投票

它是否在尝试写入时立即退出?如果您使用的是 Linux,请尝试 strace。

进程完成后,会话文件有可能被删除。

© www.soinside.com 2019 - 2024. All rights reserved.