Вопрос или проблема
Структура папки adm package
:
/opt/adm
├── bin
├── cli
├── dev
├── mod
├── pkg
└── sys
root@deb4 /opt/adm
# rwx
Для изменения прав доступа используйте следующий синтаксис команды:
$ sudo chmod <октальное> <имя_файла/имя_папки>
ПОЛЬЗОВАТЕЛЬ = root ГРУППЫ = root
ПРАВА | ОКТАЛЬ | ВЛАДЕЛЕЦ ГРУППА ИМЯ
drwxr-xr-x | 755 | root root .
drwxr-xr-x | 755 | root root ..
drwxr-xr-x | 755 | root root bin
drwxr-xr-x | 755 | root root cli
drwxr-xr-x | 755 | root root dev
drwxr-xr-x | 755 | root root mod
drwxr-xr-x | 755 | root root pkg
drwxr-xr-x | 755 | root root sys
На моей рабочей машине adm package
содержит пользовательские bash-скрипты в bin
; текстовые файлы в cli
; и файлы настройки пакета в mod
. Скрипт rwx
существует в bin
. Любой пользователь на хост-машине может выполнить скрипт rwx
, чтобы проверить октальные права доступа в текущем рабочем каталоге, как показано выше.
В общем, adm package
позволяет пользователям на хост-машине запускать bash-скрипты, хранящиеся в bin
, из командной строки; читать текстовые файлы в cli
; и читать текстовые файлы в sys
. Папка dev
предназначена для разработки и тестирования новых bash-скриптов перед их переносом в bin
. Идея этого пакета заключается в том, чтобы научить принципам настройки bash, bash-скриптов и администрирования Linux, используя bin
для предоставления ресурсов и примеров скриптов; cli
для хранения заметок; и sys
для хранения заметок по конфигурации системы.
Я не являюсь опытным пользователем или экспертом по bash-скриптам. Поэтому пакет и скрипты могут нуждаться в улучшении и обратной связи от сообщества bash для их разработки и оценки в учебных целях. На данный момент пакет является частным. Возможно, когда-нибудь я опубликую его на Github.
У меня есть два bash-скрипта в bin
, чтобы передать весь adm package
на другую целевую машину на базе debian. Эти скрипты используют rsync и tar соответственно, чтобы показать планируемый запуск, а затем выполнить передачу. Скрипт на основе tar перезаписывает все существующие файлы с одинаковыми именами на исходной и целевой машинах. Скрипт на основе rsync обновляет только файлы, которые ещё не существуют. Я предпочитаю rsync. Оба скрипта работают нормально, если я включил вход с паролем root через ssh для целевой машины и установил rsync
на целевой машине, если он там еще не установлен.
У меня есть машина, которая блокирует вход с паролем root через ssh. Я могу войти только как пользователь sudo. Какие у меня есть варианты скопировать adm package
в /opt/adm на целевой машине, имея возможность входа только с помощью пользователя sudo через ssh? Должен ли я использовать ключи для входа как root? Или есть способ передать tar-файл adm.tar
, а затем разархивировать файл, используя sudo
на целевой машине?
Ответ или решение
Для передачи пакета adm
с одного компьютера на другой через сеть с использованием только SSH-доступа для пользователя с правами sudo
, у вас есть несколько вариантов. Вы можете использовать такие инструменты, как rsync
, scp
или tar
, в сочетании с командами sudo
.
-
Использование
rsync
:
rsync
является мощным инструментом для синхронизации файлов и директорий. Еслиrsync
установлен на обеих машинах, вы можете использовать следующим образом:rsync -avz /opt/adm/ sudo_user@target_machine:/opt/adm/ --rsync-path="sudo rsync"
В этом примере:
-a
— архивный режим, который сохраняет права доступа и временные метки файлов.-v
— выводит подробную информацию о процессе.-z
— сжимает данные во время передачи.sudo_user
— имя пользователя с правамиsudo
на целевой машине.target_machine
— адрес целевой машины.
--rsync-path="sudo rsync"
указываетrsync
, что на целевой машине необходимо запускать команду сsudo
. -
Использование
scp
:
Другой способ — это использованиеscp
для передачи архиваtar
. Вы можете предварительно упаковать директориюadm
в tar-архив на исходной машине:tar -czf adm.tar.gz -C /opt adm
Затем вы можете передать его на целевую машину:
scp adm.tar.gz sudo_user@target_machine:/tmp/
После передачи вы можете подключиться к целевой машине и распаковать архив с правами
sudo
:ssh sudo_user@target_machine sudo tar -xzf /tmp/adm.tar.gz -C /opt/
-
Использование
ssh
с конвейером:
Вы также можете использовать непосредственно SSH с конвейером, чтобы передать файлы:tar czf - -C /opt adm | ssh sudo_user@target_machine "sudo tar xzf - -C /opt/"
В этом примере:
tar czf - -C /opt adm
создает tar-архив в стандартный вывод.ssh
передает этот вывод на целевую машину, гдеsudo tar xzf -
распаковывает архив в/opt/
.
-
Использование SSH-ключей (опционально):
Если вы часто будете передавать файлы, рассмотрите возможность настройки SSH-ключей для автоматизации процесса входа на целевую машину. Это упростит использованиеrsync
и других команд, так как вам не придется вводить пароль каждый раз. Вы можете сгенерировать пару ключей и добавить открытый ключ в файлauthorized_keys
на целевой машине.
В заключение, у вас есть несколько способов для передачи пакета adm
на другую машину при использовании SSH-доступа через пользователя с правами sudo
. Выбор подходящего метода зависит от ваших предпочтений и конфигурации системы.