Saya memiliki direktori pada mount nfs, yang pada servernya ada di /home/myname/.rubies
Root tidak dapat mengakses direktori ini:
[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
File: `/home/mitchell.usher/.rubies'
Size: 4096 Blocks: 8 IO Block: 32768 directory
Device: 15h/21d Inode: 245910 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 970/mitchell.usher) Gid: ( 100/ users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000
[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied
Saya mencoba menyalin sesuatu dari dalam direktori /opt
yang hanya dapat diakses oleh root:
[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied
[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied
Jelas saya dapat melakukan hal berikut (dan apa yang telah saya lakukan untuk saat ini):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
Apakah ada cara untuk melakukan ini yang tidak melibatkan menyalinnya sebagai langkah perantara atau mengubah izin?
permissions
root
file-copy
Mitch
sumber
sumber
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
Apakah ini tidak akan berhasil? Jika tidak, mengapa?cp <file> /tmp/tmpfile
Jawaban:
Anda dapat menggunakannya
tar
sebagai proses bufferYang pertama
tar
berjalan saat Anda dan dapat membaca direktori home Anda; yang keduatar
berjalan di bawahsudo
dan bisa menulis/opt
.sumber
cpio
dapat digunakan dengan cara yang hampir sama.-C
argumennya untuk mengubah direktori (yaitutar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
). Mungkin perlu disebutkan bahwa Anda ingin memastikan bahwasudo
tidak akan menanyakan kata sandi Anda (misalnya melaluisudoers
entri atau kredensial yang di-cache).Anda dapat menggunakan
rsync
atauscp
menyalin dariuser@localhost
ke direktori lokal.Contoh untuk
rsync
:Anda bisa juga
jika Anda membiarkan akses root localhost secara langsung (tidak disarankan; kami biasanya lebih memilih akses root via
sudo
).sumber
Anda dapat membuat entri kedua di FAT (atau apa pun).
Saya melakukan ini untuk
HOSTS
file saya . Saya memiliki tautan dalam direktori yang dapat ditulisi yang merujuk ke file dan memiliki izin yang berbeda, jadi saya memiliki/Hosts/HOSTS
yang dapat saya modifikasi dengan mudah, dan perubahannya dimasukkan dalam file (yaitu "satu"). Ini 2 entri untuk 1 file. Saya tidak ingat perintahnya, maaf.Untuk Anda, Anda membuat tautan ke
/opt
semua file di dalamnya.rubies
, dan ketika Anda mengubah apa pun di/opt
dalamnya, itu adalah file yang sama dengan di.rubies
.sumber