我昨天运行了这个命令,我想在一台测试机器上,但它是一个通过SSH连接的文件服务器。
sudo rm -rf /tmp/* !(lost+found)
Run Code Online (Sandbox Code Playgroud)
我的终端模拟器是 Konsole。我的系统是 Debian 7。
题:
此命令是否删除了 /tmp 中的文件以外的其他文件?
我正在研究 Oracle Linux 9(XFS 文件系统)上二进制文件的行为。当进程调用此二进制文件时,会在其下创建一个目录/tmp并将一些文件复制到其中。每次进程运行时,此目录都会获得一个随机名称(关键字 + GUID)。
之后,它立即删除该目录。我想在删除该目录之前访问该目录中包含的文件,但对于我的任何命令来说,整个过程结束得太快了。
有什么方法可以在删除该目录之前“拦截”并复制该目录吗?
我/tmp在一个单独的分区上,并安装了noexec. 我正在使用 Debian。
一些包的安装失败,因为一些包的安装后脚本需要从/tmp.
我想知道是否有可能“钩”一个简单的脚本apt-get,这将是之前每次运行apt-get,并重新挂载/tmp到exec。同样,完成noexec后重新安装apt-get。
我开始为我的项目编写一些 bash 脚本,它们需要编写一些中间文件或变量。
我想知道当有人运行我的脚本时我可以确定可以访问哪些文件夹?使用它是一种常见的做法/tmp/吗?还是我应该使用其他东西?
我读过将输出重定向到固定名称文件/tmp可能存在安全风险,因为如果攻击者(或不满者)注意到/tmp/tmpfileformyscript.tmp我运行脚本时创建了一个文件(即使他没有对我的脚本的读取访问权限)脚本),例如,他可以创建一个符号链接ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp,.bashrc当我运行我的脚本时,它会导致我破坏我的文件。
因此,我可以使用类似filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename".
但是,有时我想使用 tmp 文件进行缓存,在这种情况下,我想知道“tmpfile.tmp.*”是否与其中的任何内容匹配/tmp,如果匹配,请使用该文件而不是创建一个新文件。不幸的是test,[ -f filename ]据我所知,等价物不支持文件通配。
因此,我的问题是双重的:
"predictablename.$RANDOM"可接受的做法还是有更好(更安全、更简单)的方法?predictablename?CentOS 6.x
我很困惑我放在 /tmp/ 中的文件何时被删除。
/etc/cron.daily/tmpwatch 有以下内容:
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
Run Code Online (Sandbox Code Playgroud)
第 5 行中读取的部分-X '/tmp/hsperfdata_*' 10d /tmp让我相信我放在 /tmp/ 中的文件将保留 10 天(假设它们在删除过程中没有被锁定,或者该目录安装在 tmpfs 文件系统上)。
那是对的吗?
我通过 ssh 连接到服务器,并且想要添加一些日常作业(特别是即使在我注销时更新 Kerberos 票证并且我仍然希望我的 screen 或 tmux 中的程序继续运行)到 cron。所以我运行crontab -e,并添加以下内容,
00 00 * * * kinit -R
00 12 * * * kinit -R
Run Code Online (Sandbox Code Playgroud)
我保存的时候,编辑问我:
File Name to Write: /tmp/crontab.HMpG7V
Run Code Online (Sandbox Code Playgroud)
里面的文件不是/tmp可以被操作系统删除吗?尤其是在我退出服务器之后?
我应该在哪里存储我的 crontab 文件?我可以将 crontab 文件保存在 $HOME 或一些更好的空间下吗?
巧合的是,我不得不使用我的 ATA-ID-to-device-name 脚本(在这里找到:https : //serverfault.com/questions/244944/linux-ata-errors-translating-to-a-device-name/ 426561#426561 ) 在只读 /分区上。如果你好奇,它是一个 Ubuntu 恢复控制台,它可以让你访问你的/分区,但默认情况下它会以只读方式挂载。我对此很高兴,因为否则我可能永远不会发现我的脚本由于特定行而在 R/O 系统上表现得很奇怪,这个:
IFS=: read HostMain HostMid HostSub <<< "$HostFull"
Run Code Online (Sandbox Code Playgroud)
这并不会在没有写权限的工作。不过,我不会认为它会失败。但显然<<<操作员确实需要将一些临时文件写入某个地方。
但是有没有办法绕过临时文件的创建,或者,有没有办法指定文件的写入位置?在 Ubuntu 恢复控制台中,有——奇怪的是——对/run目录的写权限,如果我能以某种方式“告诉”read将临时文件写入其他地方而不是平常,那就可以了。
我有一台服务器,我需要重新挂载 /tmp 分区才能运行 exec。
我想使用的代码是:
mount -o remount,exec /tmp
Run Code Online (Sandbox Code Playgroud)
运行需要它的程序。
不如改回来。
mount -o remount,noexec /tmp
Run Code Online (Sandbox Code Playgroud)
这是生产服务器,所以我真的很担心取消挂载 /tmp 或更改挂载。
谢谢,
我经常使用/tmpLinux 机器上的目录来存储临时文件(例如,来自希望我先下载它的站点的 PDF 等),并且我经常使用我的用户名创建一个目录。但是在每次启动时它(包括所有文件)都会被删除。现在我知道我可以把它放进去/var/tmp,但我想删除它的所有内容,但要保留目录本身。所以:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?也许有权限或有特殊配置?