Зміна користувача під час scp


16

Мені потрібно скопіювати файл між машинами Linux. Проблема, яку користувач використовує для входу ( myuser), відрізняється від користувача, який може отримати доступ до файлу.

Якщо я просто sshна машині, я можу переключити користувача за допомогою sudo su someuser, чи можу я це якось робити scp?

Під час використання WinSCP мені вдалося це зробити, налаштувавши SCP / оболонку, тому я вважаю, що повинен бути подібний спосіб зробити це через чисту оболонку.


Я збентежений. Чому ви не ввійдете в систему як користувач, який маніпулює файлом?
rahmu

Тому що неможливо увійти в систему за допомогою іншого користувача.
Тарлог

Як щодо з'єднання sshта виконання scp, приблизно такого ssh myuser@host "sudo scp ...":?
rahmu

Може відповідь тут може спрацювати в такій ситуації? unix.stackexchange.com/questions/43094/… @Tarlog Це передбачає, що на самій віддаленій машині ви можете схилити someuser @ remote
Bernhard

Відповіді:


9

Якщо припустити, що користувачеві, на якого МОЖЕТЕ схибити, не потрібен пароль для sudo su в цільового користувача, ви можете спробувати це:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

... Майте на увазі, я все ще не впевнений, що просто налаштування targetuserдозволити лише scp / sftp / rsync через SSH та використання RSA-ключа для аутентифікації - не набагато кращий варіант.


1
або tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"для купки файлів
Метт

Також вірно, і я думаю, що ми можемо обговорити, чи корисні вони -zчи -jзалежать від швидкості підключення та комп'ютерного обладнання з обох сторін ...
Shadur

3

Якщо ви знаєте облікові дані іншого користувача ( someuser), ви можете просто вказати його у своєму scpдзвінку.

Зі man scpсторінки:

Імена файлів можуть містити специфікацію користувача та хоста, щоб вказати, що файл потрібно скопіювати в / з цього хоста. Імена локальних файлів можна зробити явними, використовуючи абсолютні або відносні імена шляхів, щоб уникнути scp обробки імен файлів, що містять ':' як специфікаторів хоста. Копії між двома віддаленими хостами також дозволені.

Ось використаний синтаксис:

[[user@]host:]/path/to/file

Приклад

Ви хочете скопіювати файл /home/foo/barз host1до вашого локального хосту, використовуючи користувач someuser, ось команда:

scp someuser@host1:/home/foo/bar .

Вам буде запропоновано підтвердити автентифікацію (пароль, ключі, ...).


1
Увійти як інший користувач неможливо.
Тарлог

Потім встановіть логін для scp / rsync тільки з ключами RSA.
Шадур

1
Неможливо використовувати іншого користувача, використовуючи будь-який тип входу. Крім того, що я вже використовую ключі RSA для ssh / scp.
Тарлог

1

Це, мабуть, можливо , але я б сказав, що це дуже незручно.

Моя перша пропозиція - увійти як цей користувач. Навіть якщо у вас немає пароля цього користувача, ви можете додати власний відкритий ключ ssh до їхніх авторизованих ключів, а потім виконати scp, використовуючи їх ключ, як показує rahmu.

Якщо це неможливо, моя друга пропозиція - увійти до користувача ssh, sudo для користувача та створити tarfile файлів, які ви хочете скопіювати, і помістити їх кудись, щоб ваш власний користувач міг прочитати. Потім спустіть цей tarfile.


Увійти до іншого користувача неможливо. Так, я сама з'ясувала другу пропозицію. Шукаєте простий спосіб :)
Тарлог

Тоді посилання, розміщене gcb, повинно бути корисним. Принаймні, якщо ви будете робити це не раз. Або, звичайно, ви можете змінити права доступу до файлу, щоб надати власному користувачеві доступ до нього.
Jenny D

Ну, я намагаюся створити сценарій (який буде використовуватися багато разів, звичайно), який буде використовуватися різними користувачами. Тож надання мені доступу насправді не допоможе. Будь-хто, хто здатний "судо-суть інший", повинен мати змогу запускати сценарій.
Тарлог

Готча. Я б почав із посилання з gcb, тоді, якщо у вас є проблеми зі сценарієм, опублікуйте його, і подивіться, чи зможемо ми скористатися деякою допомогою.
Jenny D


0

Я спробував навести кілька прикладів у наступній статті. Основна ідея - не використовувати scp, а використовувати dd та ssh за допомогою користувальницького комутатора sudo. Подивіться:

http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-another-user


1
Було б краще вказати більше деталей тут, якщо посилання стане недійсним, у вашій відповіді мало значення.
Антон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.