web-dev-qa-db-ja.com

Gnu / LinuxのGUI(およびCLI)でシステムファイル(ルートとして)を適切に編集するにはどうすればよいですか?

システム: Linux Mint 18.1 64ビットシナモン


目的: Bash エイリアスを定義してさまざまな [〜#〜] cli [〜#〜] および [〜#〜] gui [〜#〜]を起動する ファイルを root モードで開いている間のテキストエディタ gnome-terminal エミュレータ。


進捗

たとえば、次のエイリアスは期待どおりに機能しているようです。

[〜#〜] cli [〜#〜] の場合、この例ではNano( 公式Webサイト )を使用しました。

alias sunano='Sudo nano'

[〜#〜] gui [〜#〜] の場合、この例ではXed( Wikipediaの記事 )を使用しました。

alias suxed='Sudo xed'

どちらも root としてファイルを開きます。


問題

gksudosublime-text

alias susubl='gksudo /opt/sublime_text/sublime_text'

時々動作します。ほとんどの場合、何もしません。

一貫性のない動作でそのようなものをデバッグするにはどうすればよいですか?何も出力しません。エラーメッセージなどはありません。


質問

gksudoはDebianで非推奨になり、Ubuntu 18.04 Bionicにも含まれなくなったので、この質問をまだ有効な質問に再定式化します。

LinuxのGUI(およびCLI)で(ルートとして)システムファイルを適切に編集するにはどうすればよいですか?

適切にこのコンテキストでは、safelyたとえば、ファイルの編集中に電力損失が発生した場合、別の例ではSSH接続が失われる可能性があります。

3

どうしても必要な場合を除いて、rootとしてエディターを実行しないでください。 sudoedit、またはデスクトップ環境の管理機能を使用する必要があります。

sudoedit

sudoeditが適切に設定されたら、次のことができます。

Sudo_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit yourfile

sudoeditは、これが許可されていることを確認し、IDを手動で変更せずに編集できるファイルのコピーを作成し、エディターを起動します。エディターが終了したら、ファイルをコピーして戻します。変更されました。

エイリアスではなく関数をお勧めします。

function susubl {
    export Sudo_EDITOR="/opt/sublime_text/sublime_text -w"
    sudoedit "$@"
}

Jeff Schaller が指摘しているように、envを使用してこれをエイリアスに入れ、シェルの環境を変更しないようにすることができます。

alias susubl='env Sudo_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit'

-wオプションは、Sublime Textの呼び出しがファイルが閉じられるまで待機してから戻り、sudoeditにファイルをコピーして戻すことを保証します。

デスクトップ環境(GNOME)

GNOME(およびおそらく他のデスクトップ環境)では、admin://プレフィックスを付けてGIO/GVFS対応のエディターを使用できます。例えば

gedit admin:///path/to/your/file

これにより、PolKitを使用して適切な認証を求めるプロンプトが表示され、認証が成功した場合は編集用にファイルが開かれます。

8
Stephen Kitt

別の解決策:システムファイルを直接編集することはありません。どこかにコピーを作成し(*)、コピーを編集し(通常のエディターを使用)、Sudo cp それが終わったら。

(*)このためのディレクトリがあり、すべてのファイルが1か所に保存されています。

  • 私が変更したすべてのファイルのリストを自然に保持します
  • バージョン管理が簡単
  • バックアップが簡単
  • 別のマシンに簡単に転送できます
0
xenoid