提问人:Marcos Camargo 提问时间:7/31/2023 最后编辑:Marcos Camargo 更新时间:8/3/2023 访问量:157
/tmp 目录中的不可见文件
Invisible files in /tmp directory
问:
我有一个 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
我需要做些什么才能让它工作?权限似乎是正确的。
答:
它是否在它试图写作的点上保释?如果您使用的是 Linux,请尝试 strace。
当该过程完成时,会话文件可能会被删除(微弱)。
评论
脚本没有出错,但是当我检查 /tmp 目录时,我找不到 cgisess* 文件
这是因为 cgi 脚本使用专用目录运行(请参见 systemd 手册页的 subsection 下)。从脚本外部无法直接看到此私有文件,但有关如何查找文件的示例,请参阅此博客文章。/tmp
Sandboxing/PrivateTmp
/tmp
但我不想将文件放在我的主目录中,我想了解它为什么要这样做。
您不需要将文件放在其他地方,因为您在问题中也表明了这些文件确实存在。如果您确实需要从外部访问由 cgi 脚本编写的临时文件(例如,用于从终端检查它们以进行调试),您可以尝试找到真正的目录,类似于 * 是某种 id,如上面链接的博客文章所示。/tmp/systemd-private-*-apache2.service-*
评论
var/tmp
tmp
/tmp
/var/tmp/
sudo ls /var/tmp/systemd-private-28d027d4b2594a819a1538db5e502f1d-apache2.service-fPLBqj
sudo ls /tmp/systemd-private-28d027d4b2594a819a1538db5e502f1d-apache2.service-9RMMjj/tmp/csvauth cgisess_c5161e1edd3b2c265e565c694cf98ee5
/tmp
tmp
评论
PrivateTmp=yes