スーパーユーザー権限でファイルを編集する


53

システムファイルを編集する必要がある場合、以前は通常のユーザーでEmacsを起動していたため、ファイルは書き込み保護されます。ルート権限を取得するにはどうすればよいですか?私はM-x sudodiredのようなものを意味します。

スーパーユーザーとしてEmacsを起動したくないし、終了したくありません。

回答:


59

必要に応じてC-x C-f/su::/etc/hostnameまたは入力してください/sudo::/etc/hostname

これは、Emacsとともに配布されるTRAMPパッケージを使用します。このパッケージは、リモートファイルへのアクセスを提供し、より一般的にはEmacsが直接開くことができないファイルへのアクセスを提供します。


1
ありがとう。の意味は何::ですか?
smonff 14

7
:は区切り文字です。引数がもうないことを示すために2回目に指定します。/su:otheruser@localhost:たとえば、できます。
artagnon

5
/sudo::はトランプの略記ですsudo:root@<hostname>:
-phils

9

find-filetrampで使用します。プロンプト/sudo::/etc/ssh/ssh_configで、sudoとサブシェルを使用して、ルート特権でそのファイルを開きます。sudoを最初に使用するときは、パスワードの入力を求められますが、そのセッションが終了するまで、既存の/sudo::コマンドをプレフィックスとして使用して、これらのアクセス許可を持つファイルを編集できます。

詳細については、http://www.gnu.org/software/tramp/を参照してください。


3

ivyパッケージを使用し、counsel-find-fileを置き換えるfind-fileように設定している場合、すでに設定済みの「ivyアクション」の1つは、ファイルをルートとして編集することです。hydraそのアクションのデフォルトのキーストロークはrです。


2

現在、この問題を解決する多くのパッケージがあります(2018年現在)。それらのいくつかは次のとおりです。

  • sudo-edit、既に開いている読み取り専用ファイルの編集権限を切り替えることができます。M-x sudoパスワードを入力するだけで完了です。これを何年も使用した後、私はこのニーズにもっと便利だと思います。sudo-edit任意のユーザーとしてファイルを開くことができますが、何も指定されていない場合はデフォルトでsudoが使用されます。
  • dired-toggle-sudo。これはこの質問をした後に見つけた最初のパッケージソリューションです。Dired指向なので、ファイル指向のバージョンを好む場合は、このリストの最初の箇条書きを参照してください。
  • Melpaには他のソリューションもあります

2

Helmを使用する場合。外部パッケージ/追加の設定は必要ありません。そのまま使用できます。

内部では、にバインドされたをhelm-find-files呼び出すことができます。これは、セッション中のファイルまたはディレクトリに対して機能します。find file as rootC-c rhelm-find-files

ルートファイル/ディレクトリを開くたびにパスワードを入力したくない場合。次の行を~/.authinfo.gpg

machine localhost port sudo login root password xxxxxx
machine your_machine_name port sudo login root password xxxxx

ソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.