rootとしてプログラムを実行する場合は、sudo
を使用します。 、gksu
、gksudo
さて、私の質問は、ターミナルでrootユーザーとしてターミナルを実行するにはどうすればよいですか?
gksudo terminal
を使ってみました およびgksu terminal
しかし、何も起こりません。 sudo terminal
を実行します エラーsudo: terminal: command not found
が発生します 。
ベストアンサー
UbuntuのデフォルトのターミナルエミュレータはGNOMEターミナルです。 /usr/bin/gnome-terminal
にあります gnome-terminal
で実行できます コマンド。
本当に欲しいもの
おそらく必要なのは、rootログインから生成されたかのように、rootとして実行されるシェルです(たとえば、すべての環境変数がユーザーではなくrootに設定されています)。
それがあなたが望むものであると仮定して、steeldriverが提案したように、実行するだけです:
sudo -i
入力したコマンドがrootとして実行されるルートシェルがあります(コマンドの前にsudo
を付ける必要はありません)。 。
しかし、本当にグラフィカルターミナルエミュレータアプリケーションをrootとして実行したい場合は、読み進めてください。私は2つの方法を提示します:gksu
を使用する / gksdo
、およびsudo
コマンド。
gksu
を使用 / gksudo
あなたはgksuを持っているので パッケージがインストールされている場合は、gnome-terminal
を実行できます。 次のいずれかのルートとして:
gksu gnome-terminal
gksudo gnome-terminal
(gksu
以降 Ubuntuではデフォルトでsudo-modeに設定されていますが、これらは同等である必要があります。)
gnome-terminal
を実行しています 非ルート端末を制御せずにルートとして:
事実上すべてのデスクトップ環境には、ターミナルを開かなくてもコマンドを実行する機能があります(ターミナルを開くと、通常、コマンドが終了します)。
これは通常、 Altで実現されます + F2 。 コマンドの実行というラベルの付いたテキストボックス (または同様の)が表示され、コマンドを入力できます。
たとえば、Unityでは次のようになります:
そして、MATEでこのように(GNOMEフラッシュバック/フォールバック、Xfce、LXDEは似ています):
これはgksu
で機能することに注意してください およびgksudo
グラフィカルな認証ダイアログを使用しているためです。 Altを押す場合 + F2 sudo ...
を実行します 、パスワードプロンプトを操作できなくなります。
sudo
を使用
gksuパッケージがなく、インストールしたくない場合は、次を使用できます。
sudo -H gnome-terminal
-H
フラグはHOME
を設定するため、重要です。 /root
への環境変数 自分のユーザーのホームディレクトリの代わりに。 すべきではありません sudo gnome-terminal
を使用します 非rootユーザーに属するgnome-terminal構成を壊す可能性があるためです。詳細については、以下を参照してください:
- UbuntuヘルプウィキのRootSudo
- ユーザーがグラフィカルアプリケーションを起動するために通常のsudoを使用してはならないのはなぜですか?
(sudo -i gnome-terminal
大丈夫です。)
制御している非ルート端末を取り除く:
(1)の場合 グラフィカル端末を開く(2) sudo -H gnome-terminal
のようなものを実行します その中で、新しいグラフィカルルートターミナルを作成し、(3) 元の非ルートグラフィカル端末を終了します…その後、ルートグラフィカル端末も終了します。
これは、ルートグラフィカル端末がそれを所有する端末が終了したときにSIGHUPが送信されるためです。
これを防ぐために、代わりに次のコマンドでグラフィカルルートターミナルを起動できると思うかもしれません:
sudo -H gnome-terminal &
ただし、これはsudo
の場合にのみ機能します パスワードの入力を求める必要はありません。表示されている場合、パスワードプロンプトは表示されません。
片道 これを回避するには、次を使用します:
sudo -v
sudo -H gnome-terminal
sudo -v
この目的のためだけに存在します。 man sudo
で説明されているように 、「ユーザーのキャッシュされた資格情報を更新し、必要に応じてユーザーを認証します。」
または 開始後にジョブを一時停止することで、従来の方法と呼ばれる方法でそれを行うことができます。
-
sudo -H gnome-terminal
を実行します 元の非ルートグラフィカル端末から。 -
sudo
の指示に従ってパスワードを入力します 。グラフィカル端末が起動します。 - まだルート以外の端末にあります 、 Ctrlを押します + Z ルートターミナルを一時停止します。ルートターミナルが一時停止されている間は使用できません。そのインターフェースはあなたの行動に反応しません。
-
exit
を使用して制御している非ルート端末を終了します 。グラフィカルなルート端末ジョブは、非ルート端末によって自動的に一時停止が解除され、所有権が剥奪されます。
要するに:
sudo -H gnome-terminal
^Z
exit
ただし、元の非ルート端末も引き続き使用したいとします。次に、bg N
、ここで N
バックグラウンドでジョブを再開するための、グラフィカルルート端末のジョブ番号です。 jobs
を実行できます N
を検索するには ただし、おそらくそうする必要はありません。その番号は[N]
Ctrlを押したとき + Z 。例:
[email protected]:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
[email protected]:~$