web-dev-qa-db-ja.com

システム構成ファイルを編集する権限を取得するにはどうすればよいですか?

ルートシステムで設定ファイルを編集して保存できないようです(例:/etc/dhcp/dhcpd.config); 「許可が拒否されました」と表示されるか、テキストエディタで保存オプションがブロックされます。

私はrootユーザーだと確信していますが、どうすれば確認できますか?ルートユーザーの場合、これを修正するにはどうすればよいですか?

47
Matthew Wilson

どのテキストエディターを使用していますか?あなたがrootユーザーであり、パスワードを知っている場合は、(端末で)次のいずれかを試してください。

  • sudoedit /etc/dhcp/dhcpd.configは、nanoなどのターミナルベースのエディターを使用している場合、またはサーバーにSSH接続している場合。
  • gksudo <text editor here> /etc/dhcp/dhcpd.configgeditなどのGUIベースのエディターを使用している場合

どちらの場合でも、要求されたときに最初にルートパスワードを提供する必要があります。

Ubuntu 14.04以降では、gksudoはデフォルトではインストールされません。 gksuパッケージをインストールする必要があります(ソフトウェアセンターから、またはSudo apt-get install gksu経由で)。

Ubuntu 17.10では、従来のXサーバーの代わりにWaylandがデフォルトであり、rootとしてグラフィカルエディターを実行することは困難です。 なぜgksu/gksudoを実行しないのか、Sudoでグラフィカルアプリケーションを起動しないのはWaylandで動作しないのですか? .

Ubuntu 18.04では、gksudoは公式リポジトリでは使用できません。代わりにSudo -H <text editor>を使用するか、 admin://プロトコル

gedit admin:///etc/dhcp/dhcpd.config

端末を使用したくない場合は、GUIプログラムをルートとして呼び出すことができます(この例はGedit用です)。

  1. ヒット Alt+F2 [実行]ダイアログを表示します。
  2. gksudoと入力し、その後にプログラムの実行可能ファイル名(GUIで表示される名前とは異なる場合があります)を入力します。例えば:

    gksudo gedit
    
  3. ヒット Enter
15
Scott Severance

ルートがpermission deniedを取得する場合は考えられません。

12.04では、次のようにできます。 alt+f2 次のように表示されるボックスにgksudoと入力します。

F2 dialogue

このようなボックスが表示されたら、geditと入力してクリックします ok

Type gedit in Run dialogue

クリック Open

Open tab inside gedit

ファイルを参照するだけです:

open files dialogue

完了

警告:理由により、スーパーユーザー/ルートが存在します。誤って重要なものに誤って何か悪いものや構造から外れたものを入れないようにするためです。ルートとして編集するものはすべて、編集しようとしている正しいファイルであり、構文が完璧であることを非常に注意する必要があります。他のツールを編集に使用できる場合は、それらを使用することをお勧めします。たとえば、/etc/sudoersを手動で編集する代わりに、visudo端末コマンド を使用します。

混乱する可能性のあるファイルは、簡単に回復できます。その他は比較的複雑であるか、回復コンソールと多くのコマンドラインを使用する必要があります。

はい、リカバリコンソールのコマンドラインは this よりも少し怖いようです。注意してください。

10
RobotHumans

現在のシェルがルートとして実行されているかどうかをいくつかの異なる方法でテストできます

~/ > whoami
paul
~/ > Sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > Sudo id
uid=0(root) gid=0(root) group=0(root)

他の答えはルート権限にエスカレートする良い方法を与えるので、それらを繰り返すことはしません。 are rootでファイルを編集できない場合/etc/dhcp/dhcpd.config-その後veryおそらく誰かまたは何らかのプログラムがchattrプログラムを使用してファイルを不変にする。

chattrマニュアルページ から:

「i」属性を持つファイルは変更できません。削除または名前変更することはできません。このファイルへのリンクを作成することも、ファイルにデータを書き込むこともできません。この属性を設定またはクリアできるのは、CAP_LINUX_IMMUTABLE機能を持つスーパーユーザーまたはプロセスのみです。

lsattr を使用して調べることができます

lsattr /etc/dhcp/dhcpd.config

実際に不変の場合は、次のように無効にすることができます。

chattr -i /etc/dhcp/dhcpd.config
6
pbr

buntu 17.04以上を使用している場合は、gvfs admin backendを使用することをお勧めします。 Text EditorまたはFiles appsのように、アプリで開く完全なファイルパスの前にadmin://を追加するだけです。

たとえば、起動設定を変更するには、開く

admin:///etc/default/grub

デフォルトのWaylandでUbuntu 17.10を使用している場合、ここの古い回答で述べたSudoおよびgksunot動作します。

3
Jeremy Bicha

お気に入りのテキストエディターを使用する

Sudo -e またはそのエイリアス sudoedit は、VISUAL環境変数を介して、お気に入りの(グラフィカル!)テキストエディターで使用できます。1

VISUAL=gedit Sudo -e /path/to/some-config-file.cfg

これは

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

もちろん、好きな他のエディターを使用できます。 g。 leafpadkate、またはsubl

エディタの中には、alwaysを実行するコマンドラインオプションを提供するものがあります(現在実行されている場合でも)。 sudoeditは、エディタープロセスが終了して編集済みファイルに変更を適用するのを待つため、同じエディターの他のインスタンスを実行している場合、これが必要になる場合があります。

  • GEditの場合はVISUAL='gedit -s'を使用します。
  • ケイトの場合はVISUAL='kate -n'を使用します。

長所

  • 追加のアプリケーションや廃止されたアプリケーションは必要ありません。
  • pkexecのようなセキュリティポリシーの変更は必要ありません(ファイルを編集する必要があります。スーパーユーザーとして、この答えが解決しようとしている正確なことです)。
  • 昇格した特権で安全でない可能性のあるアプリケーションを実行する必要はありません。
  • 現在のユーザーのアプリケーション構成を使用しますが、Sudo -Hなどの構成ファイルのアクセス許可を台無しにします。
  • rootユーザーのユーザーアプリケーション設定データにフォールバックしないでください。このデータは、容認できるように見える場合とそうでない場合があります。

欠点

  • 短い新しいコマンドを学ぶ必要があります。

1 EDITORまたはSudo_EDITORも機能しますが、優先順位は低くなりますが、それぞれ特化されています。詳細については、 manual page をご覧ください。

2
David Foerster

安全にcp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backupを使用してバックアップし、gksu gedit /etc/dhcp/dhcpd.configを実行するには

geditを選択したエディターに置き換えます

このようなプロンプトが表示されます

password Prompt

ここにパスワードを入力してください。

新しいウィンドウが開き、そこで設定を編集できます。

問題が発生した場合は、ホームフォルダーのバックアップから復元できます。

Linuxが許可を処理する方法が原因で、「許可が拒否されました」。

$HOMEフォルダー内のすべてのものはユーザーに属しますが、他のほとんどすべてはルートに属します。

アクセスしようとしている/etc/dhcp/dhcpd.confファイルはルートに属し、/etc/内のほとんどのファイルはセキュリティ上の理由からデフォルトでルートに属します。

アクセス許可を上げることで、このファイルを編集できます。

これを行うには、いくつかの方法があります。

  • ユーザーの切り替えを表すsuを使用します。属性がなければ、rootアカウントに切り替えるコマンドとして機能しますが、切り替え先のユーザーのパスワードを入力する必要があります。また、Ubuntuではrootがデフォルトでパスワードを持たないため(rootアカウントを事実上無効にします) 、これはお勧めしませんが、rootのパスワードを設定しないと機能しません。

  • Sudoを使用すると、1つのコマンドのみに対するアクセス許可が高くなります。これは通常、vimnanoなどのCLIテキストエディターなどのコマンドラインアプリでのみ使用されます

  • gksuを使用すると、1つのコマンドの許可のみが引き上げられますが、Sudoとは異なり、geditなどのGUIテキストエディターなどのグラフィカルプログラムに使用されます。グラフィカルプロンプトを使用して、パスワードの入力を容易にします。

0
Amith KK
Sudo < editor > < filelocation >

例えば。:

Sudo -H gedit etc/dhcp/dhcpd.config
0
user392272