web-dev-qa-db-ja.com

Ubuntuのbashスクリプトで「/ etc / network / interfaces」ファイルを編集できません

重複の可能性:
sudo権限が拒否されました

私はbashスクリプトを介して/ etc/network/interfacesを編集する必要がありました。私は以下のようなことをしています...

Sudo echo something > /etc/network/interfaces

この行を実行すると、以下のエラーが発生します:bash: /etc/network/interfaces: Permission denied

しかし、同じファイルをエディターで編集すると、問題なく動作します...つまり、.

Sudo nano /etc/network/interfaces

上記でこのファイルを編集させてください。

1
Saqlain

私はそれを見つけることができませんでしたが、この質問はすでにこのサイトのどこかで答えられています。

しかし、基本的にはこれに帰着します:

Sudo nano /etc/network/interfaces start nano/etc/network/interfaces asuid0。nanoはuid0で実行され、/ etc/network/interfacesへの書き込み権限があるため。

Sudo echo something > /etc/network/interfaces start echosomething as uid0。その部分は成功します。出力は>で/ etc/network/interfaces`にリダイレクトされます。ただし、このリダイレクトは自分のアカウントで行われます。そして、その人にはその場所に書き込む権限がありません。


代わりにこれを試してください:
Sudo bash -c "echo something > /etc/network/interfaces"

これにより、bashをuid 0として実行し、bashにコマンド全体をuid0として実行させる必要があります。

または、単にsu -をrootにします。 rootとして常に実行することはお勧めしませんが、すべての行の前にSudoコマンドを入力せずに、単に十分な権限が必要な場合があります。 rootをメインユーザーとして使用しないでください。これを使用してシステムをインストールおよび構成することは問題ありません。

4
Hennes