GNU/Linux >> Belajar Linux >  >> Linux

“error Membangun Proksi …” Saat Mencoba Meluncurkan Gnome-terminal Sebagai Root?

openSUSE Leap 42.2
Terminal Gnome 3.20.2

Saya memiliki jendela terminal terbuka. Jika saya mengetik perintah berikut:

gnome-terminal

sebagai pengguna non-root, ia berhasil meluncurkan terminal baru.

Namun jika saya menjalankan perintah sebagai root saya mendapatkan pesan kesalahan berikut:

Terjadi kesalahan saat membuat proxy untuk
org.gnome.Terminal:/org/gnome/Terminal/Factory0:Sambungan
ditutup

Jika saya mencoba meluncurkan terminal dengan dbus-launch gnome-terminal maka berhasil.

Apa yang mencegah gnome-terminal perintah meluncurkan terminal sebagai root? Dan apakah dbus-launch solusi yang dapat diterima atau kemungkinan menyebabkan masalah yang tidak terduga (saya tidak begitu mengerti apa yang dilakukannya)?

Jawaban yang Diterima:

Ingat bagaimana aplikasi Windows terutama bekerja kembali di hari-hari Win16 sebelum Win32 datang dan menghapusnya:di mana ada hInstance dan hPrevInstance , mencoba menjalankan instance kedua dari banyak aplikasi hanya menyerahkan semuanya ke instance pertama, dan ini mempersulit alat skrip perintah (seperti Take Command) karena seseorang akan memanggil aplikasi untuk kedua kalinya, itu akan terlihat di sana di screen sebagai jendela tambahan, tetapi sejauh menyangkut penerjemah perintah, proses anak yang baru saja dijalankan segera keluar?

GNOME telah mengembalikan perilaku Win16 untuk Linux.

Terminal GNOME sekarang menjadi aplikasi client-server. gnome-terminal program hanyalah klien yang membangun pesan Bus Desktop ke server, meneruskan opsi baris perintah, lingkungan, direktori kerja, dan argumennya, dan kemudian keluar begitu saja. Servernya adalah gnome-terminal-server yang terdaftar sebagai org.gnome.Terminal pada Bus Desktop dan yang bertanggung jawab atas semua emulasi terminal aktual dan menampilkan jendela pada GUI.

Klien Bus Desktop seperti gnome-terminal menempatkan broker Bus Desktop melalui variabel lingkungan, yang biasanya menunjuk ke soket di direktori per pengguna seperti /run/user/1001 . Atau, variabel lingkungan menentukan untuk mencari di "direktori runtime pengguna saat ini" dan jalur yang serupa dengan yang disebutkan di atas dibangun dari ID pengguna efektif proses klien. Direktori ini dalam kedua kasus secara konvensional bersifat pribadi untuk pengguna individu, dan tidak dapat diakses oleh pengguna lain (yang tidak memiliki hak).

Hilaritas terjadi ketika orang mencoba menjalankan gnome-terminal sebagai pengguna lain melalui sudo dan sedemikian. Jika variabel lingkungan menunjuk ke direktori runtime bernama eksplisit, klien unprivileged tidak dapat menyambung ke Bus Desktop per pengguna. Jika variabel lingkungan menunjuk ke direktori runtime “pengguna saat ini”, variabel tersebut mencari broker Bus Desktop yang salah, sering kali untuk pengguna yang saat ini tidak memiliki broker Bus Desktop berjalan karena pengguna belum masuk dan memulai layanan per pengguna akun pengguna tersebut. (Broker Desktop Bus per pengguna dijalankan oleh manajer layanan per pengguna. Manajer layanan per pengguna dimulai secara eksplisit atau, dalam kasus beberapa perangkat lunak manajemen layanan, oleh beberapa kait yang agak jelek ke dalam proses otentikasi pengguna yang digunakan oleh suka login , su , dan program server SSH.)

Alasan dbus-launch bekerja untuk Anda sebagai pengguna super adalah dbus-launch secara eksplisit meluncurkan broker Bus Desktop lain, berjalan sebagai pengguna super, yang gnome-terminal bisa diajak bicara. Untungnya, sistem juga dikonfigurasi untuk memulai permintaan gnome-terminal-server server ketika klien mencoba untuk terhubung melalui broker. (Hal ini belum tentu terjadi, dan saat ini mulai permintaan seperti itu dipandang sebagai mekanisme yang lebih rendah karena berakhir dengan banyak proses server Bus Desktop yang tidak berjalan di bawah manajemen layanan apa pun. Memang, tidak memiliki broker itu sendiri di bawah manajemen layanan juga dianggap lebih rendah. Ini juga umumnya tidak dianggap sebagai ide yang baik untuk pengguna super akun untuk menjalankan layanan semacam ini, karena banyak dari mereka tidak berharap untuk berjalan dengan hak pengguna super karena mereka berharap untuk berjalan di bawah perlindungan akun pengguna biasa.)

Terkait:Bagaimana cara membuat vim bekerja dengan tmux dengan benar?

Kegembiraan lebih lanjut terjadi jika, sebagai penanya di “Bagaimana saya bisa meluncurkan gnome-terminal dari jarak jauh di server tanpa kepala saya? (gagal diluncurkan melalui penerusan X11)”, orang mencoba menjalankan gnome-terminal bahkan ketika pengguna asli tidak menjalankan broker Desktop Bus. Ini terjadi ketika, misalnya, seseorang telah masuk melalui SSH tetapi proses masuk SSH tidak memulai manajer layanan per pengguna, yang pada gilirannya berarti broker Bus Desktop per pengguna tidak berjalan, dan gnome-terminal-server server tidak dapat dijangkau melalui Bus Desktop. (Menurut bagaimana sistem dikonfigurasi, login grafis masih dapat memicu memulai manajer layanan per-pengguna, dan karenanya orang mungkin mengamati bahwa login secara grafis sebagai pengguna yang sama secara ajaib membuat semuanya bekerja. Dan lagi dbus-launch akan secara eksplisit memulai broker Bus Desktop yang tidak dikelola layanan.)

Namun lebih banyak kegembiraan terjadi ketika seseorang memiliki salah satu manajer layanan yang memiliki kaitan dengan login , su , dan server SSH. Kait ini biasanya menerapkan semantik memulai manajemen layanan per pengguna, dan semua layanan per pengguna yang dimulainya, pada saat masuk pertama untuk pengguna tersebut; dan menghentikan semuanya pada log-off terakhir untuk pengguna itu. Jika seseorang memiliki banyak sesi SSH yang berumur pendek dan tidak tumpang tindih, maka akan ada banyak overhead yang dihasilkan dengan tidak berguna memulai dan mematikan seluruh sistem manajemen layanan per pengguna (dan semua layanan mulai otomatisnya) di awal dan akhir setiap sesi SSH tersebut. systemd, salah satu manajer layanan semacam itu, memiliki mekanisme "berlama-lama" yang tidak sempurna yang hanya benar-benar setengah menangani hal ini. Ini berarti bahwa manajemen layanan per-pengguna "bertahan" setelah log-off terakhir, tetapi itu tidak menghentikan manajemen layanan per-pengguna untuk dimulai sama sekali.

Bacaan lebih lanjut

  • Jonathan de Boyne Pollard (2016). /run/user/jim/dbus . "Wartawan". Panduan nosh . Perangkat lunak. jdebp.eu.
  • Jonathan de Boyne Pollard (2016). "layanan per pengguna pengguna". Panduan nosh . Perangkat lunak. jdebp.eu.
  • Jalankan beberapa instance proses yang sebenarnya dari terminal gnome
  • Jadikan layanan sistem pengguna persisten
  • https://unix.stackexchange.com/a/323700/5132

Linux
  1. 4 Cara Menonaktifkan Akun Root di Linux

  2. Linux – Apa yang Harus Dilakukan Saat Desktop Linux Membeku?

  3. Perbedaan Antara Pengguna Sudo Dan Pengguna Root?

  1. Luncurkan Program Grafis Di Desktop Pengguna Lain Sebagai Root?

  2. Fungsi Root Grup Pengguna??

  3. Instal WordPress di akun pengguna sebagai root

  1. Kali Default Pengguna Non-Root

  2. ketika menggunakan CPAN di linux ubuntu haruskah saya menjalankannya menggunakan sudo / sebagai root atau sebagai pengguna default saya

  3. Jalankan perintah Shell di jenkins sebagai pengguna root?