scp изменение прав доступа к каталогу /tmp

scp изменение прав доступа к каталогу /tmp

Я использую сценарий expect для автоматизации передачи некоторых файлов поддержки на терминалы. Файлы поддержки автоматически архивируются в tarball перед отправкой на целевой терминал с помощью scp. Это выполняется внутренней программой expect, которая автоматически заполняет пароль для scp, поэтому нам не нужно вводить пароль. Я могу копировать отдельные файлы без проблем, но когда я пытаюсь скопировать файл tar.gz, он изменяет разрешения для каталога /tmp. Я устанавливал chmodding для каталога /tmp обратно на 1777 для разрешений и chowning для root.root, как это обычно и делается, но это не всегда работает. Это вызывает ошибки sqlite из-за того, что sqlite не может записать временный файл в /tmp, что очень мешает. Как мне определить точную причину этого? Я знаю, что это должно быть связано с файлом 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в который все это извлечь.

Связанный контент