Hal-hal buruk apa yang terjadi ketika gedit digunakan dengan sudo?

10

Saya membaca jawaban ini menjelaskan bahwa "kadang-kadang" root dapat memiliki sesuatu di /home/$USERdirektori.

Adakah yang bisa memberikan contoh bagaimana membuktikannya. Berikan saja test case ketika sesuatu yang sangat buruk terjadi, ketika saya berlari

sudo gedit /etc/rc.local

edit file dan simpan.

Saya mendapat banyak downvotes mencoba untuk membantu OP dan komentar membanjiri mengatakan bahwa itu adalah kejahatan untuk menjalankan gedit dengan sudo.

Adakah yang bisa memberi contoh nyata?

Saya jelas menjelaskan mengapa pertanyaan ini bukan duplikat. Tidak ada jawaban khusus untuk gedit ke pertanyaan terkait.

Dan penting untuk menjelaskan mengapa banyak digunakan sudo geditburuk, atau tidak benar-benar, dll.

Pilot6
sumber
2
Selalu menggunakannya dengan sudo, tidak pernah mendapat masalah. Pertanyaan bagus.
Dario Salvati
1
@Wilf, nano suka menulis ~ / .nano_history yang jika Anda jalankan dengan sudo menyebabkan file dimiliki oleh root, jadi ketika Anda menjalankan nano tanpa sudo itu mengeluh bahwa ia tidak dapat mengakses file. sudo chownPerbaikan sederhana itu.
psusi
1
Sejauh rc.local berjalan, itu adalah skrip run level, itu harus dimiliki oleh root maka sudo tidak berpengaruh padanya. Cobalah dengan ~ / .bashrc. Saya tidak berpikir shell akan menerima file itu jika dimiliki oleh root dan harus mundur ke pengaturan default. Tapi itu hanya saran. Saya akan kembali besok, lihat bagaimana pertanyaan ini
Sergiy Kolodyazhnyy
1
Bagi sebagian besar editor, ini bukan pembukaan, SAVE yang menekan. kebanyakan editor juga menyimpan pengaturan di suatu tempat, jadi jika Anda / itu memodifikasi pengaturan itu akan memperbaruinya.
Wilf
2
Untuk apa nilainya, saya hanya mengeditnya di tempat untuk digunakan -Hketika saya melihatnya.
muru

Jawaban:

11

Sejauh sudo gedit, tidak ada yang mengerikan, hanya praktik yang buruk, terutama sampai akhir-akhir ini. Seberapa sulit untuk menyarankan sudo -H gedit?

-H,--set-home Meminta agar kebijakan keamanan mengatur variabel lingkungan HOME ke direktori home yang ditentukan oleh entri basis data kata sandi pengguna target. Tergantung pada kebijakannya, ini mungkin merupakan perilaku default.

Apa yang terjadi?

Anda mendapatkan beberapa file yang dimiliki root di folder rumah Anda. Satu ( recently-used.xbel) kemungkinan akan kembali ke kepemilikan pengguna. Ini bisa terjadi ketika file dihapus dan dibuat ulang. Untuk melihat apa yang sudo gedittelah berubah, jalankan find ~ -user root -group rootdan lihat apa yang dikembalikan. Secara default, ini seharusnya bukan apa-apa.

Dengan perintah itu, Anda dapat melihat beberapa file yang dimiliki oleh root. Seseorang akan menjadi baru .file,, .gvfsdan cepat atau lambat akan menjadi milik root ~/.cache/dconfdan yang disebutkan di atas recently-used.xbel.

Jadi tidak ada barang 'langit yang gagal', tapi tetap saja. Sekarang sudah ada laporan bahwa penggunaan yang terus-menerus menyebabkan masalah lain tetapi tidak akan mengklaim apa yang tidak saya lihat di sini.

Juga catat bahwa pada 13.10 a sudo geditakan menggunakan konfigurasi gedit pengguna daripada konfigurasi gedit root. Sekali lagi hanya praktik yang buruk jadi mengapa terus melakukannya atau menyarankan orang lain melakukannya?

doug
sumber
1
Kadang-kadang saya sekarang juga mengambil kesempatan untuk menunjukkan kepada pengguna cara menggunakan nano dengan mudah & sering kali dapat menggantikan gedit. Ada beberapa kasus di mana gedit masih lebih baik daripada nano bahkan bagi mereka yang tahu cara menggunakannya. Juga sudo gedit dapat menyebabkan sudo nautilus yang mungkin lebih buruk .. (Di sini saya memiliki gedit diaktifkan pkexec tapi itu di luar ruang lingkup diskusi ini
doug
@wjandrea, kedengarannya bagus, diedit
doug
12

Mungkin itu hanya fantasi, tetapi ada beberapa orang yang mengatakan hal yang sama:

  • Mengapa saya harus menggunakan gksudo untuk aplikasi Gtk alih-alih sudo?

    Namun, ada saat-saat lain ketika efek samping bisa sekecil ekstensi Firefox tidak lengket atau ekstrem seperti tidak dapat masuk lagi karena izin pada .ICEauthority Anda berubah.

  • Mengapa pengguna tidak boleh menggunakan sudo normal untuk memulai aplikasi grafis?

    Misalkan Anda menjalankan gedit (editor teks grafis) sebagai root. Jika Anda menjalankan sudo gedit, HOME akan terus menunjuk ke direktori home Anda, meskipun program sedang berjalan sebagai root. Akibatnya, gedit akan menulis file konfigurasi sebagai root ke direktori home Anda. Ini kadang-kadang akan menghasilkan file konfigurasi yang dimiliki oleh root dan dengan demikian tidak dapat diakses oleh Anda (ketika Anda kemudian menjalankan program sebagai diri sendiri dan bukan sebagai root).

  • Bagaimana menjalankan program GUI sebagai pengguna yang berbeda (Debian)?

    Pertama, jangan gunakan sudo atau su untuk mengubah pengguna untuk menjalankan proses grafis, atau Anda mungkin memiliki masalah di telepon (~ / .ICE mengubah pemilik otoritas adalah masalah penting). Sebaliknya, buat pintasan yang menggunakan perintah berikut:

  • Menjalankan Sudo Secara Grafis

    Yah, jujur ​​saja, sebagian besar waktu tidak. Untuk banyak aplikasi, Anda dapat menjalankannya dengan cara yang tidak tepat — menggunakan sudo untuk aplikasi grafis dan tidak melihat efek samping yang merugikan.

    ...

    Kesalahan ini terjadi karena kadang-kadang ketika sudomeluncurkan aplikasi, itu diluncurkan dengan hak istimewa root tetapi menggunakan file konfigurasi pengguna.

    Arsip surat ini mungkin juga menarik bagi Anda.

Jadi, mari kita coba.

2 kotak virtual baru. Ubuntu 14.04. Jangan pernah menjalankan firefox pada mereka. Apa yang akan terjadi ketika saya menjalankan perintah sudo firefox?

tim@Hairy14CVB:~$ sudo firefox    
(process:4857): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

...

[email protected]:2192:13

Ini sama (atau paling tidak sangat mirip) untuk kedua kotak virtual. Ketika firefox sedang berjalan, saya menginstal ekstensi youtube - yang berfitur. Lalu saya menutup firefox, dan memeriksa hasilnya.

tim@Hairy14CVB:~$ ls -la .ICEauthority 
-rw------- 1 tim tim 1336 Jun  4 21:31 .ICEauthority

Ya .ICEauthoritybaiklah! Namun...

tim@Hairy14CVB:~$ ls -la | grep root
drwxr-xr-x  3 root root 4096 Jun  1 20:49 ..
drwx------  3 root root 4096 Jun  5 22:41 .dbus
drwx------  4 root root 4096 Jun  5 22:41 .mozilla

3 hal di folder rumah saya ( /home/tim/) dimiliki oleh root ( .., .dbusdan .mozilla). Ini sama (atau paling tidak sangat mirip) untuk kedua kotak virtual.

Jadi, apakah ini penting? Saya tidak yakin, jadi saya menjalankan firefox, seperti ini:

tim@Hairy14CVB:~$ firefox

(process:4959): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Error: Access was denied while trying to open files in your profile directory.

Dan kesalahan jelek ini:

masukkan deskripsi gambar di sini

Untuk keluaran terminal lengkap (termasuk celoteh firefox), lihat dua pastebin ini, di sini dan di sini .

Saya masih bisa menjalankan firefox sebagai root. Tetapi sekarang lebih banyak file telah diubah:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..
drwx------  3 root root  4096 Jun  5 22:55 .adobe
drwx------  3 root root  4096 Jun  5 22:40 .dbus
drwx------  3 root root  4096 Jun  5 22:55 .macromedia
drwx------  4 root root  4096 Jun  5 22:40 .mozilla

Apakah ini karena saya mengunggah gambar ke imgur.com? Tidak yakin.

Bagaimana saya memperbaikinya? chown. Saya tidak mengerti, tetapi internet mengatakan untuk melakukannya, dan itu adalah Kotak Virtual begitu yolo.

sudo chown -R tim:tim /home/tim/

Dan itu memperbaikinya. Sekarang hasilnya hanyalah ..file:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..

Dan itu sama di komputer saya yang sebenarnya. Oh, dan di kotak virtual Kubuntu saya:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  3 root root  4096 May 16 14:10 ..

Yang saya bahkan tidak pernah menjalankan perintah sudo. Jadi semuanya baik-baik saja. Hanya saja jangan dijalankan sudopada aplikasi GUI.

Tes akhir: jalankan dengan -Hdan -ibendera:

sudo -H firefox

dan

sudo -i firefox

Dan kabar baik! Namun, satu-satunya "akar" root adalah ... Dan saya bisa lari firefoxtanpa root.


OP ingin saya berbicara tentang Gedit.

Saya berlari

sudo gedit

Kemudian instal beberapa plugin acak. Ini adalah hasilnya:

tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..

Perhatikan bahwa saya bahkan tidak dapat melihat kepemilikan .gvfsjadi saya melakukan ini:

tim@Hairy14VB:~$ sudo ls -la | grep root
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..
dr-x------  2 root root      0 Jun  6 10:05 .gvfs

Jadi menjalankan sudo gedittidak mengubah file di direktori home saya menjadi root.

Saya masih bisa membuka gedit, tapi kali ini saya dapat sampah:

(gedit:7422): Gtk-WARNING **: Attempting to read the recently used resources file at `/home/tim/.local/share/recently-used.xbel', but the parser failed: Failed to open file '/home/tim/.local/share/recently-used.xbel': Permission denied.

Dan itu menunjukkan ada file lain ( ~.local/share/recently-used.xbel) yang telah diubah. Saya pikir ini adalah daftar file yang terakhir digunakan dan (tebakan beruntung) Saya sekarang tidak lagi memiliki daftar file yang baru-baru ini digunakan:

Seharusnya ada file yang disebut output2.txt.save2. Kata ganti saya adalah Dia / Dia

Tim
sumber
1
Anda menulis segalanya kecuali jawaban untuk pertanyaan itu. Berikan saja test case dengan gedit. Haruskah saya menandai "bukan jawaban"? Atau "kualitas sangat buruk" meskipun lama?)))
Pilot6
5
@ Pilot6 - dalam pertanyaan Can anyone give an example how to prove it ..... Can anyone give a real example?- dan ini tautan ke hal-hal masa lalu dan memberikan contoh tentang apa yang dapat terjadi dengan firefox sebagai root - Haruskah saya menandai komentar Anda 'tidak konstruktif' karena saya tidak dapat menemukan 'anehnya pemarah'? be nice cmon :)
Wilf
1
Oh tolong jangan gunakan ls -la|grep roottetapi find . -uid 0ataufind . -user root
solsTiCe
1
@ Pilot6 oke, saya sudah diedit untuk memasukkan beberapa hal tentang gedit. Saya tidak berpikir itu menambah apa pun pada jawaban saya, tetapi Anda sepertinya menginginkannya begitu ...
Tim
4
Baik kutipan maupun contoh terperinci menjadikan ini sangat berguna! Saya senang Anda menambahkan Gedit tetapi saya setuju dengan @ Willf bahwa itu baik bahkan sebelumnya. Bukan hanya contoh Gedit yang saya (sengaja) tidak sertakan di sana . Jika orang ingin, saya dapat menambahkan catatan singkat di sana tentang "kadang-kadang," tetapi saya benar-benar berpikir pertanyaan ini terpisah dan saya telah memilih untuk membuka kembali . Jika kami membuka kembali ini, saya akan mencoba dan menambahkan jawaban lain dengan perincian lebih lanjut tentang Gedit, tetapi ini masih akan menjadi jawaban yang paling berguna bagi kebanyakan orang.
Eliah Kagan