sudo sed出力をリダイレクトするときに権限が拒否されました。

sudo sed出力をリダイレクトするときに権限が拒否されました。

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

このチュートリアルで提供されている指示に従ってdrupalをインストールしようとしています。 http://how-to.linuxcareer.com/how-to-install-drupal-7-on-ubuntu-linux 一段階で詰まった。

$ cd /etc/apache2/sites-available
$ sudo sed 's/www/www\/drupal/g' default > drupal
bash: drupal: Permission denied

権限は/var/www/drupal777に設定されています。

答え1

sudoこのチュートリアルではルートシェルを使用せず、必要です。を使用してルートシェルを取得できますsudo -i

を好む場合、sudoリダイレクトはsudoコマンドではなくシェルによって処理されます。したがって、/etc/apache2/sites-available以前のように起動出力からファイルを生成することはできません。sudoマニュアルによると、次のサブシェルを使用する必要があります。

$ cd /etc/apache2/sites-available
$ sudo sh -c "sed 's/www/www\/drupal/g' default > drupal"

答え2

明らかに、権限は/etc/apache2/sites-available出力を作成する777ではありません。リダイレクトは個別に処理され、書き込みsudo権限がありません。さて、そこには何もありません/var/www/drupal。そこに書くのですか?その場合は、su -c "sed 's/www/www\/drupal/g' default > /var/www/drupal"またはを使用できますsed 's/www/www\/drupal/g' default | sudo tee drupal

答え3

まず、あなたはここにいません/var/www/drupal/drupalにファイルを生成しようとしています/etc/apache2/sites-available/。次の場所にファイルを作成したい場合/var/www/drupal

sed 's/www/www\/drupal/g' default >/var/www/drupal/drupal

それ以外の場合:

sed 's/www/www\/drupal/g' default | sudo tee drupal

関連情報