scp 更改 /tmp 目录的权限

scp 更改 /tmp 目录的权限

我使用期望脚本自动将一些支持文件传输到终端上。支持文件在 scp 到目标终端之前会自动压缩。这是通过一个内部的 Expect 程序来完成的,该程序会自动填写 scp 的密码,因此我们不必输入密码。我可以毫无问题地复制各个文件,但是当我尝试复制 tar.gz 时文件,它更改 /tmp 目录的权限。我一直在将 /tmp 目录更改回 1777 以获得权​​限,并将其更改为 root.root,这是通常的设置方式,但这并不总是有效。由于 sqlite 无法将临时文件写入 /tmp,它会导致 sqlite 错误,这是非常具有破坏性的。我怎样才能确定造成这种情况的确切原因?我知道它必须与 tar.gz 文件相关,但我的印象是 tar 会保留文件的权限。

我的目录中文件的权限是:

-rw-rw-r-- 1 aembree aembree  88K Oct  2 15:20 dropin.tar.gz

在传输 /tmp 之前,在 ls -al 中看起来像这样:

drwxrwxrwt  15 root root 8.4K Oct  2 15:08 tmp

传输后 /tmp 看起来像这样:

drwxrwxr-x  15 10539 10539 8.4K Oct  2 15:01 tmp

正在运行的 tar 命令如下:

tar -vPczf /home/aembree/bin/resources/dev/dropin.tar.gz --exclude='helperscript' -C $dropinlist . > /home/aembree/bin/resources/logs/tarlog

一旦文件位于远程计算机上,expect 就会执行以下命令来解压它:

send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; cd ;\n"

答案1

您已将其包含.在提供给 的源集合中tar。当您提取 tarball 并应用权限时会出现问题。您的源目录.将被提取并应用权限。不幸的是在提取点.实际上是/tmp

修复方法是从 tarball 中排除.或创建一个临时目录以在/tmp其中提取所有内容。

相关内容