Abb*_*ree 4 scp tar permissions
我使用一个期望脚本来自动将一些支持文件传输到终端上。支持文件在被 scp 到目标终端之前会自动压缩。这是由内部的 expect 程序完成的,该程序会自动填写 scp 的密码,因此我们不必输入密码。我可以毫无问题地复制单个文件,但是当我尝试复制 tar.gz 时文件,它更改 /tmp 目录的权限。我一直在将 /tmp 目录修改回 1777 以获得权限并将其更改为 root.root,这是它通常的设置方式,但这并不总是有效。由于sqlite无法将临时文件写入/tmp,这会导致sqlite错误,这非常具有破坏性。我如何确定造成这种情况的确切原因?我知道它必须与 tar.gz 文件有关,
我的目录中文件的权限是:
-rw-rw-r-- 1 aembree aembree 88K Oct 2 15:20 dropin.tar.gz
Run Code Online (Sandbox Code Playgroud)
在传输之前 /tmp 在 ls -al 中看起来像这样:
drwxrwxrwt 15 root root 8.4K Oct 2 15:08 tmp
Run Code Online (Sandbox Code Playgroud)
传输后 /tmp 看起来像这样:
drwxrwxr-x 15 10539 10539 8.4K Oct 2 15:01 tmp
Run Code Online (Sandbox Code Playgroud)
正在运行的 tar 命令如下:
tar -vPczf /home/aembree/bin/resources/dev/dropin.tar.gz --exclude='helperscript' -C $dropinlist . > /home/aembree/bin/resources/logs/tarlog
Run Code Online (Sandbox Code Playgroud)
一旦文件在远程机器上,expect 执行以下命令来解压它:
send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; cd ;\n"
Run Code Online (Sandbox Code Playgroud)
您已将其包含.
在提供给 的源集合中tar
。当您提取 tarball 并应用权限时会出现问题。.
提取您的源目录并应用权限。不幸的是,在提取点.
实际上是/tmp
.
修复方法是.
从 tarball 中排除或创建一个临时目录,/tmp
在其中提取所有内容。