mktemp 如何在 ubuntu 中没有写权限的目录中创建临时文件?

mktemp 如何在 ubuntu 中没有写权限的目录中创建临时文件?

我注意到在 ubuntu 中,mktemp 允许用户在目录中创建临时文件,即使该用户没有写入权限。因此,我期望 mktemp 上的权限如下所示,在运行它时为用户提供临时 root 权限:

-rwsr-xr-x 1 root root   35392 Nov 19  2012 mktemp

但他们读到的是这样的:

-rwxr-xr-x 1 root root   35392 Nov 19  2012 mktemp

我以为是“s”的地方,其实是“x”,这意味着 mktemp 不以 root 权限运行。mktemp 如何在没有权限的情况下在目录中创建临时文件?

答案1

mktemp默认情况下,在 下创建一个临时目录/tmp,默认情况下任何人都可以写入该目录;如果将选项传递--tmpdirmktemp(或设置TMPDIR环境变量),它将尝试在选项参数给出的目录中创建一个临时目录,并且将要除非您对给定目录有写入权限,否则会失败。例如:

[me@box] $ mktemp
/tmp/tmp.sL1g7rRGQv
[me@box] $ mktemp --tmpdir=/root
mktemp: failed to create file via template `/tmp.XXXXXXXXXXX': Permission denied

例如,如果你mktemp --tmpdir=/root以非root用户身份执行此操作没有失败,那么就会发生一些非常奇怪的事情。你确定这就是你看到的吗?

相关内容