Ubuntu の bash スクリプトで '/etc/network/interfaces' ファイルを編集できない

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

この質問に対する回答はこのサイトのどこかに既にありますが、見つけることができませんでした。

しかし、基本的には次のようになります。

sudo nano /etc/network/interfaces始まるナノ /etc/ネットワーク/インターフェースuid 0 として。nano は uid 0 で実行され、/etc/network/interfaces への書き込み権限を持っているためです。

sudo echo something > /etc/network/interfaces始まる何かを反響させるuid 0 として。この部分は成功します。出力は>/etc/network/interfaces にリダイレクトされます。ただし、このリダイレクトは自分のアカウントで行われます。そして、そのアカウントにはその場所への書き込み権限がありません。


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

これにより、bash が uid 0 として実行され、bash がコマンド全体を uid 0 として実行できるようになります。

または、単にsu -root になります。常に root として実行することは推奨されませんが、各行の前に sudo コマンドを入力しなくても十分な権限を持ちたい場合があります。メイン ユーザーとして root を使用しないでください。システムのインストールと構成に使用するのは問題ありません。

関連情報