Saya membuat perubahan panjang pada file konfigurasi pada komputer Linux Ubuntu dengan editor vi. Sayangnya, saya lupa sudo dulu, jadi sekarang saya di editor, tetapi tidak bisa menyimpan perubahan saya karena hak yang hilang. Dapatkah saya secara retroaktif mengubah arah pengguna pada terminal itu, atau apa tindakan terbaik yang harus diambil?
linux
permissions
sudo
vi
simon
sumber
sumber
Jawaban:
Dalam hal ini, saya menulis file dengan
:w /tmp/tmpfile
. Lalu aku keluar dan pindah/tmp/tmpfile
ke file lamaku dengan hak sudo.sumber
vi
default (yang mungkin 666, ANDed dengan kebalikan dari "umask" Anda), menggantikan pemilik file dengan UID Anda (itu adalah "root", bukan?), dan memecah tautan keras./tmp
direktori. (2) Jika Anda memiliki pengguna yang benar-benar jahat di sistem Anda, mereka dapat menggantikan/tmp/tmpfile
antara Anda ketika Anda menulisnya (darivi
) dan ketika Anda menyalinnya di atas file konfigurasi sistem yang sedang Anda edit. Lebih aman untuk meletakkan file sementara ke direktori yang hanya Anda miliki aksesnya.Dari SO :
Saya sebenarnya menemukan diri saya menggunakan cara ini untuk melakukannya lebih sering sekarang:
Saya pikir ini sedikit lebih intuitif, seperti yang saya tahu apa yang
:%!
terjadi, sedangkan saya tidak memiliki pemahaman mendalam tentang:w !
. Juga, mudah untuk melewatkan ruang yang sangat penting antaraw
dan!
.sumber
vi
perintah dapat berupa beberapa huruf, sehingga secara teoritis bisa adawfoo
perintah " ", jadi jika Anda ingin menulis ke file bernama "foo
", Anda harus mengatakan ":w foo
". Yaitu, Anda membutuhkan ruang setelah ":w
". Sejauh menyangkut ":w !
" - Anda tahu apa ":!
" itu, kan? ":!date
" Menjalankandate
perintah " ". Jadi ":w !xyz
" menulis buffer, tetapi ke perintah daripada ke file.%
?%
mungkin lebih sulit.) (3) OK, saya akan membantu Anda sedikit.tee
adalah program yang memungkinkan Anda menulis informasi ke banyak tempat. Misalnya,date | tee cody
akan menulis tanggal dan waktu saat ini ke file bernamacody
... (Lanjutan)date | tee cody > bugstein
akan menulis tanggal dan waktu saat ini ke file yang dipanggilcody
dan juga ke file yang disebutbugstein
. - Apakah kamu mengertisudo
? Ini memungkinkan Anda menjalankan perintah dengan hak istimewa pengguna lain (biasanya root). Misalnya,ls /root
umumnya akan gagal, karena Anda tidak memiliki akses/root
. Tapisudo ls /root
akan berhasil. - Efek samping yang tidak menguntungkan dari cara Unix bekerja adalah itusudo ls /root > /root/cody
akan gagal, karena Anda tidak memiliki akses/root
, dan karenanya Anda tidak dapat menulis/root/cody
. … (Lanjutan)Tidak bisakah Anda membuka terminal lain dan untuk sementara mengubah hak akses file?
sumber
:w !sudo tee % solution
wfaulk diposting