GNU/Linux >> Linux の 問題 >  >> Ubuntu

ターミナルをルートとして実行する方法は?

rootとしてプログラムを実行する場合は、sudoを使用します。 、gksugksudo さて、私の質問は、ターミナルで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) 元の非ルートグラフィカル端末を終了します…その後、ルートグラフィカル端末も終了します。

関連:Sudoはもうパスワードを要求しませんか?

これは、ルートグラフィカル端末がそれを所有する端末が終了したときにSIGHUPが送信されるためです。

これを防ぐために、代わりに次のコマンドでグラフィカルルートターミナルを起動できると思うかもしれません:

sudo -H gnome-terminal &

ただし、これはsudoの場合にのみ機能します パスワードの入力を求める必要はありません。表示されている場合、パスワードプロンプトは表示されません。

片道 これを回避するには、次を使用します:

sudo -v
sudo -H gnome-terminal

sudo -v この目的のためだけに存在します。 man sudoで説明されているように 、「ユーザーのキャッシュされた資格情報を更新し、必要に応じてユーザーを認証します。」

または 開始後にジョブを一時停止することで、従来の方法と呼ばれる方法でそれを行うことができます。

  1. sudo -H gnome-terminalを実行します 元の非ルートグラフィカル端末から。
  2. sudoの指示に従ってパスワードを入力します 。グラフィカル端末が起動します。
  3. まだルート以外の端末にあります Ctrlを押します + Z ルートターミナルを一時停止します。ルートターミナルが一時停止されている間は使用できません。そのインターフェースはあなたの行動に反応しません。
  4. 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]:~$

Ubuntu
  1. パスワードプロンプトなしでルートとして特定のプログラムを実行する方法は?

  2. sudoの内部はどのように機能しますか?

  3. スクリプトをルートとして遡及的に実行する方法は?

  1. openSUSE12.1でrootとしてGoogleChromeを実行する方法

  2. Ubuntu 17.10でWiresharkを実行する方法は?

  3. 所有者をルートに戻す方法は??

  1. UbuntuでSudoまたはRootパスワードを変更する方法

  2. スクリプトを実行する方法??

  3. sudo なしで ifconfig を実行する