![重定向 sudo sed 输出时权限被拒绝](https://linux22.com/image/20746/%E9%87%8D%E5%AE%9A%E5%90%91%20sudo%20sed%20%E8%BE%93%E5%87%BA%E6%97%B6%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
可能的重复:
将标准输出重定向到您没有写入权限的文件
我正在尝试按照本教程中给出的说明安装 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