Mengubah pengguna saat scp


16

Saya perlu menyalin file di antara mesin-mesin Linux. Masalah yang saya gunakan untuk login ( myuser), berbeda dari pengguna yang dapat mengakses file.

Jika saya hanya sshke mesin, saya dapat beralih menggunakan pengguna sudo su someuser, bisakah saya melakukannya sementara scp?

Saat menggunakan WinSCP saya berhasil melakukannya, dengan mengkonfigurasi SCP / Shell, jadi saya percaya pasti ada cara yang serupa untuk melakukannya melalui shell murni.


Saya bingung. Mengapa Anda tidak login sebagai pengguna yang memanipulasi file?
rahmu

Karena tidak mungkin untuk masuk menggunakan pengguna lain.
Tarlog

Bagaimana dengan koneksi sshdan eksekusi scp, seperti ini ssh myuser@host "sudo scp ...":?
rahmu

Mungkin jawabannya di sini dapat bekerja dalam situasi seperti itu? unix.stackexchange.com/questions/43094/ ... @ Tarlog Ini mengasumsikan bahwa pada mesin remote itu sendiri, Anda dapat ssh someuser @ remote
Bernhard

Jawaban:


9

Dengan asumsi bahwa pengguna yang Anda BISA ssh tidak memerlukan kata sandi untuk sudo su ke pengguna target, Anda dapat mencoba ini:

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

... Pikiran, saya masih tidak yakin bahwa hanya mengkonfigurasi targetuseruntuk hanya mengizinkan scp / sftp / rsync melalui SSH dan menggunakan RSA keypair untuk otentikasi bukanlah pilihan yang jauh lebih baik.


1
atau tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"untuk banyak file
Matt

Juga benar, dan saya kira kita dapat memperdebatkan apakah berguna -zatau -jtidak tergantung pada kecepatan koneksi dan perangkat keras komputer di kedua sisi ...
Shadur

3

Jika Anda tahu kredensial untuk pengguna lain ( someuser) Anda bisa menentukannya pada scppanggilan Anda .

Dari man scphalaman:

Nama file dapat berisi spesifikasi pengguna dan host untuk menunjukkan bahwa file tersebut akan disalin ke / dari host itu. Nama file lokal dapat dibuat secara eksplisit menggunakan nama path absolut atau relatif untuk menghindari scp memperlakukan nama file yang mengandung ':' sebagai penentu host. Salinan antara dua host jarak jauh juga diizinkan.

Berikut sintaks yang digunakan:

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

Contoh

Anda ingin menyalin file /home/foo/bardari host1ke localhost Anda, menggunakan pengguna someuser, ini perintahnya:

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

Anda akan diminta untuk otentikasi (kata sandi, kunci, ...).


1
Tidak mungkin masuk sebagai pengguna lain.
Tarlog

Kemudian buat login scp / rsync-only dengan kunci RSA.
Shadur

1
Tidak mungkin menggunakan pengguna lain menggunakan jenis login apa pun. Selain itu saya sudah menggunakan kunci RSA untuk ssh / scp.
Tarlog

1

Ini mungkin mungkin , tapi aku akan mengatakan itu adalah cara yang sangat canggung untuk pergi tentang itu.

Saran pertama saya adalah login sebagai pengguna itu. Bahkan jika Anda tidak memiliki kata sandi pengguna itu, Anda dapat menambahkan kunci ssh publik Anda sendiri ke otor_keys mereka dan kemudian scp menggunakan kunci mereka, seperti yang ditunjukkan rahmu.

Jika itu tidak memungkinkan, saran kedua saya adalah masuk dengan ssh, sudo ke pengguna dan membuat tarfile dari file yang ingin Anda salin dan letakkan di suatu tempat yang dapat dibaca oleh pengguna Anda sendiri. Kemudian scp down tarfile itu.


Tidak mungkin untuk masuk ke pengguna lain. Yap, saya menemukan saran kedua sendiri. Mencari cara yang mudah :)
Tarlog

Tautan yang diposting oleh gcb seharusnya bisa digunakan. Setidaknya jika Anda akan melakukan ini lebih dari sekali. Atau, tentu saja, Anda dapat mengubah hak akses ke file untuk memberikan akses pengguna Anda sendiri ke file tersebut.
Jenny D

Yah, saya mencoba membuat skrip (yang akan digunakan beberapa kali tentunya) yang akan digunakan oleh pengguna yang berbeda. Jadi memberikan akses kepada saya tidak akan membantu. Siapa pun yang dapat 'sudo su otheruser' harus dapat menjalankan skrip.
Tarlog

Kena kau. Saya akan mulai dengan tautan dari gcb, lalu jika Anda memiliki masalah dengan skrip mempostingnya dan melihat apakah kami dapat melakukan crowdsource bantuan.
Jenny D


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.