Ketika kita ingin menjalankan sebuah program sebagai root kita menggunakan sudo
, gksu
, gksudo
dan lain-lain. Sekarang pertanyaan saya adalah bagaimana kita dapat menjalankan Terminal sebagai pengguna root di Terminal?
Saya mencoba menggunakan gksudo terminal
dan gksu terminal
tapi tidak ada yang terjadi. dan dengan menjalankan sudo terminal
Saya mendapatkan kesalahan sudo: terminal: command not found
.
Jawaban Terbaik
Emulator terminal default di Ubuntu adalah Terminal GNOME. Itu terletak di /usr/bin/gnome-terminal
dan dapat dijalankan dengan gnome-terminal
perintah.
Apa yang Anda Inginkan
Yang mungkin Anda inginkan adalah shell yang berjalan sebagai root, seolah-olah dibuat dari login root (misalnya, dengan semua variabel lingkungan disetel untuk root, bukan untuk pengguna Anda).
Dengan asumsi itu yang Anda inginkan, seperti yang disarankan oleh steeldriver, jalankan saja:
sudo -i
Anda akan memiliki shell root di mana perintah yang Anda masukkan akan dijalankan sebagai root (tanpa harus mendahuluinya dengan sudo
).
Tetapi jika Anda benar-benar ingin menjalankan aplikasi emulator terminal grafis sebagai root, baca terus. Saya menyajikan dua cara:dengan gksu
/gksdo
, dan dengan sudo
perintah.
Dengan gksu
/gksudo
Karena Anda memiliki gksu paket diinstal, Anda dapat menjalankan gnome-terminal
sebagai root dengan salah satu dari:
gksu gnome-terminal
gksudo gnome-terminal
(Sejak gksu
diatur ke sudo-mode di Ubuntu secara default, ini harus setara.)
Menjalankan gnome-terminal
sebagai root tanpa pengontrol terminal non-root:
Hampir setiap lingkungan desktop menyediakan fasilitas untuk menjalankan perintah tanpa harus membuka terminal (yang kemudian, jika ditutup, biasanya menyebabkan perintah dihentikan).
Ini biasanya dicapai dengan Alt +F2 . Kotak teks berlabel Jalankan perintah (atau yang serupa) akan muncul dan Anda dapat memasukkan perintah Anda.
Misalnya, terlihat seperti ini di Unity:
Dan seperti ini di MATE (GNOME Flashback/Fallback, Xfce, LXDE serupa):
Perhatikan bahwa ini bekerja dengan gksu
dan gksudo
karena mereka menggunakan dialog otentikasi grafis. Jika Anda menekan Alt +F2 dan jalankan sudo ...
, Anda tidak akan dapat berinteraksi dengan permintaan sandi.
Dengan sudo
Jika Anda tidak memiliki paket gksu dan tidak ingin menginstalnya, Anda dapat menggunakan:
sudo -H gnome-terminal
-H
flag penting karena menetapkan HOME
variabel lingkungan ke /root
alih-alih direktori home pengguna Anda sendiri. Anda seharusnya tidak gunakan sudo gnome-terminal
karena dapat merusak konfigurasi terminal gnome milik pengguna non-root. Untuk informasi lebih lanjut tentang ini, lihat:
- RootSudo di wiki bantuan Ubuntu
- Mengapa pengguna tidak boleh menggunakan sudo biasa untuk memulai aplikasi grafis?
(sudo -i gnome-terminal
juga oke.)
Menyingkirkan terminal non-root pengontrol:
Jika Anda (1) buka terminal grafis, (2) jalankan sesuatu seperti sudo -H gnome-terminal
di dalamnya, untuk membuat terminal root grafis baru, dan (3) keluar dari terminal grafis non-root asli ...kemudian terminal grafis root juga keluar.
Ini karena terminal grafis root dikirim SIGHUP ketika terminal yang memilikinya keluar.
Untuk mencegah hal ini, Anda mungkin berpikir bahwa Anda dapat meluncurkan terminal akar grafis dengan:
sudo -H gnome-terminal &
Tapi ini hanya akan bekerja jika sudo
tidak harus meminta kata sandi. Jika ya, Anda tidak akan melihat permintaan sandi.
Satu arah untuk mengatasinya adalah dengan menggunakan:
sudo -v
sudo -H gnome-terminal
sudo -v
ada hanya untuk tujuan ini. Seperti yang dijelaskan dalam man sudo
, itu “memperbarui kredensial cache pengguna, mengautentikasi pengguna jika perlu.”
Atau Anda dapat melakukannya dengan cara yang biasa disebut dengan cara tradisional, dengan menangguhkan pekerjaan setelah pekerjaan dimulai:
- Jalankan
sudo -H gnome-terminal
dari terminal grafis non-root asli. - Masukkan kata sandi Anda seperti yang diminta oleh
sudo
. Terminal grafis akan dimulai. - Masih di terminal non-root , tekan Ctrl +Z untuk menangguhkan terminal root. Saat terminal root ditangguhkan, Anda tidak dapat menggunakannya; antarmukanya tidak akan merespons tindakan Anda.
- Keluar dari terminal non-root pengontrol dengan
exit
. Pekerjaan terminal root grafis akan dibatalkan penangguhannya dan tidak diakui oleh terminal non-root, secara otomatis.
Singkatnya:
sudo -H gnome-terminal
^Z
exit
Tetapi misalkan Anda ingin tetap menggunakan terminal non-root asli juga. Kemudian Anda dapat menjalankan bg N
, di mana N
adalah nomor pekerjaan terminal akar grafis, untuk melanjutkan pekerjaan di latar belakang. Anda dapat menjalankan jobs
untuk menemukan N
tetapi Anda mungkin tidak perlu melakukannya–nomor itu ditampilkan sebagai [N]
ketika Anda menekan Ctrl +Z . Misalnya:
[email protected]:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
[email protected]:~$