menyalin file dari satu pengguna ke pengguna lain dalam satu mesin

20

Bagaimana cara menyalin file atau direktori dari satu pengguna ke pengguna lain di mesin yang sama melalui terminal ?

Misalkan ada satu file test.txt di direktori home USER1. Saya perlu menyalin file itu ke direktori home USER2 di mesin saya. Bagaimana saya bisa melakukannya melalui terminal?

nischalinn
sumber

Jawaban:

26

Dengan asumsi bahwa Anda memiliki sudohak istimewa, perintah berikut akan dilakukan.

sudo cp /home/USER1/FNAME /home/USER2/FNAME && sudo chown USER2:USER2 /home/USER2/FNAME

Akan menyalin file dari USER1 ke USER2, dan kemudian mengubah pemilik salinan di / home / USER2 ke USER2

Jika Anda tidak memiliki sudohak istimewa, maka kedua pengguna perlu memastikan bahwa Anda telah membaca izin pada direktori USER1, dan menulis akses pada direktori USER2. Jika Anda memiliki akses ini, Anda dapat memasukkan perintah:

cp /home/USER1/FNAME /home/USER2/FNAME

Ini akan menyalin file yang dimaksud, tetapi USER2 mungkin tidak dapat memanipulasi file sampai mereka memiliki izin yang sesuai.

Charles Green
sumber
Ini hanya akan berfungsi jika USER1 memiliki akses sudo, yang mungkin tidak terjadi pada sistem multiuser.
BostonHiker
Opsi lainnya adalah mengatur izin pada folder mereka sendiri untuk memungkinkan pengguna lain mengambilnya, tetapi opsi ini jauh lebih mudah jika memungkinkan.
Geary Shull
@BostonHiker Saya telah membuat asumsi bahwa orang yang melakukan salinan bukanlah USER1 atau USER2, dan memiliki hak sudo. Ini mungkin asumsi yang buruk di pihak saya.
Charles Green
@Charles Green - harap edit jawaban Anda untuk menyatakan asumsi Anda, jika tidak, tidak lengkap / menyesatkan.
BostonHiker
@BostonHiker Selesai. Terima kasih telah membuat saya jujur.
Charles Green
6

jika Anda tidak memiliki hak sudo tetapi Anda dapat masuk dengan dua pengguna maka Anda dapat menggunakan scp dengan localhost:

scp file1 user2@localhost:/home/user2/
loudstil
sumber
Apa yang membuat Anda berpikir bahwa ini adalah tentang host jarak jauh atau bahwa ada server SSH / SFTP yang berjalan pada mesin yang dimaksud?
David Foerster
1
Dengan asumsi Anda telah menginstal SSH
loudstil
5

Seperti USER1:

cp [filename] /tmp
chmod 777 /tmp/[filename]

Sebagai USER2:

cp /tmp/[filename] .

Seperti USER1:

rm /tmp/[filename]
Ryan J McCall
sumber
Anda memilih lebih banyak upvotes :)
Neeraj Jain
1

Asumsikan Anda tidak menginstal ssh, atau tidak dapat tidak ingin membagikan kunci / rahasia.

Misalkan user1 ada di group1, dan user2 ada di group2, dan keduanya user1! = User2 dan group1! = Group2.

Buat grup bersama, group3s.

addgrp group3

Tambahkan user1 dan user2 ke group3s.

Buat direktori di tempat yang dapat diakses bersama, di mana satu pengguna memiliki, tetapi memiliki kepemilikan grup dari group3s.

#as user1,
mkdir $place/shared && chown user1.group3s $place/shared && chmod 770 $place/shared;
#as user1 or user2,
cp $file $place/shared && chgrp $place/shared/$file && chmod 660 $place/shared/$file

Tetapi, misalkan Anda tidak dapat membuat grup baru, yang dibagikan, dan menempatkan kedua pengguna dalam grup itu?

Buat direktori dan berikan 770 izin,

mkdir $place/shared && chown user1.group1 $place/shared && chmod 770 $place/shared;

Kemudian, sebagai root / admin, ubah kepemilikan grup ke grup pengguna lain,

sudo bash
chgrp group2 $place/shared && chmod g+s $place/shared

Perintah chmod g + s menetapkan bit setgid sehingga file yang ditempatkan ke direktori memiliki kepemilikan grup diatur ke group2.

ChuckCottrill
sumber
0

Setiap jawaban lain di sini memerlukan akses root, memungkinkan setiap pengguna pada mesin yang sama untuk menyalin file, atau memerlukan berbagi kata sandi. Berikut adalah metode yang tidak:

Mintalah USER2(sebut saja dia Bob) menjalankan perintah berikut (Anda dapat mengganti /tmpdengan direktori mana pun yang memiliki izin untuk ditulis oleh kedua pengguna, tetapi /tmpsangat ideal karena secara default bersifat lengket, yang mencegah pengguna jahat untuk membatalkan proses ini. Direktori yang dimiliki oleh Bob yang bisa dibaca dunia juga berfungsi):

[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt

Ini membuat file yang bisa ditulis dunia, tetapi tidak bisa dibaca.

Kemudian USER1jalankan (sebut saja dia Alice) jalankan (jika Anda paranoid, Alice dapat memeriksa izin terlebih dahulu untuk memastikan file tersebut dimiliki oleh Bob):

[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt

Ini menimpa isi /tmp/test.txt. Jika Anda ingin memeriksa integritas file, Alice juga harus menghasilkan hash file. Contohnya:

[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1

Anda dapat menandatangani file secara digital, atau metode lain untuk menjamin integritasnya.

Dan akhirnya Bob memindahkan file dan mengambilnya:

[bob@computer ~]$ mv /tmp/test.txt "$HOME" 
[bob@computer ~]$ chmod 600 "$HOME/test.txt"

Dan Bob dapat memeriksa integritas jika dia suka. Jika demikian, ia harus memeriksa untuk memastikan hanya Alice yang dapat menulis /tmp/test.txt.

[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")

Jika file itu disalin dengan benar, ini seharusnya tidak menampilkan output.

Chris
sumber
-1

Sebelum pergi menyalin satu pengguna ke yang lain Anda harus login sebagai pengguna su dan kemudian Anda menggunakan perintah cp

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop
Shyam Gupta
sumber
Ini tidak akan mengalihkan kepemilikan USER2tetapi membiarkannya seolah- rootolah. -1
David Foerster
@DavidFoerster kami tidak mentransfer kepemilikan, kami menyalin file dari satu pengguna ke pengguna lain. menggunakan pengguna root, kita dapat mentransfer file. OK
Shyam Gupta