Cambio utente mentre scp


16

Devo copiare il file tra macchine Linux. Il problema che l'utente che utilizzo per accedere ( myuser) è diverso dall'utente che può accedere al file.

Se solo sshalla macchina, posso cambiare utente usando sudo su someuser, posso farlo in qualche modo scp?

Durante l'utilizzo di WinSCP sono riuscito a farlo, configurando SCP / Shell, quindi credo che ci debba essere un modo simile per farlo tramite pura shell.


Non ho capito bene. Perché non accedi come utente che manipola il file?
Rahmu,

Perché è impossibile accedere utilizzando l'altro utente.
Tarlog,

Che ne dici di connetterti sshed eseguire scp, qualcosa del genere ssh myuser@host "sudo scp ...":?
Rahmu,

Forse la risposta qui può funzionare in una situazione del genere? unix.stackexchange.com/questions/43094/… @Tarlog Questo presuppone che sul computer remoto stesso, sia possibile inviare un utente @ remote
Bernhard,

Risposte:


9

Supponendo che l'utente che PUOI ssh non abbia bisogno di una password per sudo su nell'utente di destinazione, puoi provare questo:

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

... Mente, non sono ancora convinto che la semplice configurazione targetuserper consentire solo scp / sftp / rsync su SSH e l'utilizzo di una coppia di chiavi RSA per l'autenticazione non sia un'opzione molto migliore.


1
o tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"per un mucchio di file
Matt,

Anche vero, e suppongo che possiamo discutere se -zo -jsiano utili a seconda della velocità di connessione e dell'hardware del computer su entrambi i lati ...
Shadur,

3

Se conosci le credenziali per l'altro utente ( someuser) puoi semplicemente specificarle sul tuoscp chiamata.

Dalla man scppagina:

I nomi dei file possono contenere una specifica utente e host per indicare che il file deve essere copiato da / a quell'host. I nomi di file locali possono essere esplicitati usando nomi di percorso assoluti o relativi per evitare che scp tratti i nomi di file contenenti ':' come identificatori di host. Sono consentite anche copie tra due host remoti.

Ecco la sintassi utilizzata:

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

Esempio

Vuoi copiare il file /home/foo/bardal host1tuo localhost, usando l'utente someuser, ecco il comando:

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

Ti verrà chiesta l'autenticazione (password, chiavi, ...).


1
È impossibile accedere come l'altro utente.
Tarlog,

Quindi stabilire un accesso solo scp / rsync con chiavi RSA.
Shadur,

1
È impossibile utilizzare l'altro utente utilizzando qualsiasi tipo di accesso. A parte quello che uso già le chiavi RSA per ssh / scp.
Tarlog,

1

Probabilmente è possibile , ma direi che è un modo molto imbarazzante di farlo.

Il mio primo suggerimento è di accedere come quell'utente. Anche se non si dispone della password di quell'utente, è possibile aggiungere la propria chiave ssh pubblica ai loro authorized_keys e quindi scp usando la loro chiave, come mostra rahmu.

Se ciò non è possibile, il mio secondo suggerimento è di accedere tramite ssh, sudo per l'utente e creare un file tar dei file che si desidera copiare e metterlo in un posto che il proprio utente possa leggere. Quindi abbassa quel tarfile.


È impossibile accedere all'altro utente. Sì, ho capito da solo il secondo suggerimento. Alla ricerca di un modo semplice :)
Tarlog,

Il link pubblicato da gcb dovrebbe quindi essere utile. Almeno se lo farai più di una volta. Oppure, naturalmente, è possibile modificare i diritti di accesso al file per consentire al proprio utente di accedervi.
Jenny D,

Bene, sto cercando di creare uno script (che verrà utilizzato più volte ovviamente) che verrà utilizzato da utenti diversi. Quindi garantire l'accesso a me non sarà davvero d'aiuto. Chiunque sia in grado di "sudo su altro utente" dovrebbe essere in grado di eseguire lo script.
Tarlog,

Gotcha. Inizierei con il link da gcb, quindi se hai problemi con lo script postalo e vedi se possiamo crowdsourcing qualche aiuto.
Jenny D,


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.