重定向 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/drupal设置为777。

答案1

本教程不使用sudo并且需要 root shell。您可以使用 获得 root shell sudo -i

如果您愿意sudo,重定向由 shell 处理,而不是由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

相关内容