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]:~$