このコマンドでsudoをどこに入力する必要がありますか? [コピー]

このコマンドでsudoをどこに入力する必要がありますか? [コピー]

重複の可能性:
書き込み権限のないファイルに標準出力をリダイレクトします。

echo "some words" >> /etc/apt/source.list

permission denied

sudo echo "some words" >> /etc/apt/source.list

また、拒否された権限を返します。

それから、追加の演算子が別の命令である可能性があり、その前にsudoを入れなければならないと考えてみました。

echo "some words" >> sudo /etc/apt/source.list

また、拒否された権限を返します。

どうすればこれを行う必要がありますか?

ベストアンサー1

sudo sh -c 'echo "some words" >> /etc/apt/source.list'

sudo echo "some Words" >> /etc/apt/source.list が機能しない理由は、sudo が 'echo' コマンドをリダイレクトするのではなく権限を高めるためです。

>>リダイレクトを使用すると、現在のシェルはファイルを作成/追加します。シェルにこれを行う権限がないため失敗します。

私の答えがうまくいく理由は、sudoedされた新しいシェルでプロセス全体(エコーとリダイレクト)を実行しているからです。sh -c ...新しいシェルを呼び出し、サブシェルで指定されたコマンドを実行します。上記のsudoを使用すると、サブシェルは昇格された権限で実行されます。

2番目のsudoの例は、sudoを実行するためのコマンドが必要ですが、ユーザーが渡すコマンドではないため意味がありません。これで、ローカルディレクトリに「some Words」を含むsudoというファイルがあります。ぜひ削除してください:-)

おすすめ記事