仅在 Ubuntu 中为 ssh 会话创建临时文件夹

仅在 Ubuntu 中为 ssh 会话创建临时文件夹

有没有办法在 Ubuntu 中实现这一点:

  1. 当某些计算机的 ssh 会话启动时,会在该计算机的内存中创建特殊文件夹 X。
  2. 文件夹 X 的内容以及与其交互的能力仅授予此终端会话,其他人甚至无法知道它的存在。即使使用另一个 ssh 会话连接到该计算机的同一用户也无法从该会话中看到它(他看到该文件夹​​的另一个实例用于他的 ssh 会话)。
  3. 当会话以任何一种方式(正常或突然)结束时,文件夹的内容将自动永久删除,并且任何人都无法检索。

如果不可能做到这一点,请建议最接近的解决方案。

答案1

XDIR=/tmp/X_$RANDOM ; RCMD="export V1=$XDIR ; mkdir -p \$V1; trap \"[ -d \$V1 ] && rm -rf \$V1\" EXIT " ; ssh -t user@rhost  "$RCMD ;  \${SHELL}"

<<这个长相丑陋的网民会做的

这里将其分为几块并进行解释:

1. XDIR=/tmp/X_$RANDOM ;
2. RCMD="
2a.      export V1=$XDIR ; 
2b.      mkdir -p \$V1; 
2c.      trap \"[ -d \$V1 ] && rm -rf \$V1\" EXIT " ;
3. ssh -t user@rhost  "$RCMD ;  \${SHELL}"
  1. 包含要在远程主机上创建的文件夹 X 路径的本地环境变量。随机化以避免与其他会话发生冲突,您还可以使用 $USER 或时间戳或其他除 RANDOM 之外或代替 RANDOM 的内容,例如 /tmp/someprefix_${USER}_${RANDOM}
  2. 包含要在远程主机上运行的指令的本地环境变量。 2a.远程环境变量 V1 var 将本地 XDIR 值传递到远程主机环境。 2b.创建远程文件夹 X 2c。 trap 参数是在 EXIT 信号上执行的指令,其中包括 HUP。意味着文件夹 X 将在正常退出或会话中断时被删除。
  3. 首先使用准备好的指令连接到服务器,然后启动远程SHELL。您可能想明确指定它,例如/bin/bash。

相关内容