Запуск нескольких команд с помощью sudo можно выполнить разными способами, см.https://www.cyberciti.biz/faq/how-to-run-multiple-commands-in-sudo-under-linux-or-unix/
Например, следующее крыло выдаст две строки вывода, первая из которых будет содержать метку времени вашей локальной машины, а вторая — «root».
sudo -- sh -c 'date; whoami'
Вы можете передать это ssh в двойных кавычках, чтобы выполнить его на удаленной машине. Как следующее.
ssh [options] "sudo -- sh -c 'date; whoami'"
[Параметры] следует заменить любыми параметрами, которые вы хотите указать для ssh, включая имя удаленного хоста.
Я все еще ищу лучшее решение, но пока я создал скрипт, который передает вывод tar в команду chmod
#!/bin/bash -
set -o pipefail
tar xvf "$@" | xargs -rd '\n' chmod 770 --
Мне это не очень нравится, потому что проинструктировать 100 и более пользователей использовать другую команду будет сложно, но если не будет найдено лучшего решения, я оставлю это. просто для информации из справочной страницы у tar, похоже, есть опция, которая должна игнорировать разрешение файла
--no-same-permissions
но, кажется, работает, только если разрешение umask более ограничено, чем разрешение для извлеченных файлов, интересно, это ошибка
Вы можете использоватьstar
реализациюtar
и ее опцию -chmod
для установки прав доступа к файлам при извлечении:
star -x -o -f file.tar -find -chmod ug+rwX