sudo echo 命令报错:Permission denied

转发:http://blog.csdn.net/hejinjing_tom_com/article/details/7767127

避免’sudo echo x >’ 时’Permission denied’

甲: 示例
sudo echo a > 1.txt
-bash: 1.txt: Permission denied
乙: 分析:
bash 拒绝这么做,说是权限不够.
这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,
但是没有让 “>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。
丙: 解决办法。三种:
1. 利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。
具体用法如下:

sudo sh -c "echo a > 1.txt"

利用bash -c 也是一样的,现在bash shell 流行。

2.  利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,
具体用法如下:
echo a |sudo tee 1.txt

echo a |sudo tee -a 1.txt   // -a 是追加的意思,等同于 >>

tee 命令很好用,它从管道接受信息,一边向屏幕输出,一边向文件写入。

linux 总是有一些小工具为我们考虑的很贴切!

3. 提升shell 权限。
sudo -s        //提到root 权限。提示符为#
当你觉得该退回到普通权限时,
sudo su username //退回到username 权限,提示符为$

centos 提升权限: su  -

ubuntu 提升权限: sudu -s, sudo su

转发另外一个帖子:http://digdeeply.org/archives/05232211.html

Example

1

2


sudo "echo ‘[yaf]‘ > /usr/local/php/etc/include/yaf.ini"

#Permission denied 权限不够

使用sudo echo ‘xxx’ > /path/file 时,其实sudo只用在了 echo 上,而重定向没有用到sudo的权限,所以会出现“Permission denied”的情况,解决的方法也很简单,就是一个参数而已。加一个“ sh -c ”就可以把权限指定到整条shell了。

Example

1

sudo sh -c "echo ‘[yaf]‘ > /usr/local/php/etc/include/yaf.ini"

另一种方法是利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:

Example

1

echo “xxxx” | sudo tee -a test.txt

tee 命令de “-a” 选项的作用等同于 “>>” 命令,如果去除该选项,那么 tee 命令的作用就等同于 “>” 命令。

时间: 2024-07-28 19:31:37

sudo echo 命令报错:Permission denied的相关文章

java sftp 报错 Permission denied (没有权限;拒绝访问)

解决办法: 1.检查账号密码是否错误 2.检查freeSSHD是否是以管理员身份运行的 3.检查sftp路劲有没有配置错误,java通过sftp将图片文件传输到指定文件夹,如果这个文件夹在配置的当前目录找不到,则会报错Permission denied 2017/5/2 今天就是路径配置错误,调试了半天,差点放弃,幸好我坚持了下来,这是一个很小的错误,下次谨记要仔细一点,不要轻言放弃.

Visual Studio Code 使用 Git插件报错 - Permission denied (publickey)

在使用GitHub的时候,为了避免每次输入用户名密码,都会使用SSH方式代替Https. 按网上教程,大多数使用SSH-KeyGen生成公私钥对,而后上传公钥至Github,并切换Repositorie为SSH. 使用SSH-KeyGen输出如下: Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ss

记录在shell脚本中使用sudo echo x > 时,抛Permission denied错误

1.场景 在一个非root且带有sudo权限的用户,使用shell脚本(单独手工执行命令不会抛错,是成功的):会抛错 #!/bin/bash -x DNS_SERVER=10.xx.xx.xx; echo "Add DNS Server"; sudo chattr -i /etc/resolv.conf; sudo echo "nameserver $DNS_SERVER" > /etc/resolv.conf; sudo chattr +i /etc/res

eclipse 向HDFS中写入文件报错 permission denied

环境:win7  eclipse    hadoop 1.1.2 当执行创建文件的的时候, 即: fileSystem.mkdirs(Path);//想hadoop上创建一个文件报错 报错: org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 原因: 1. 当前用户

iOS编译Unity3d文件报错 Permission denied

最近在尝试Unity3d的使用,毕竟Unity可以很好的编译出iOS代码,只用我们正常进行打包就好了. 这里遇到了个问题,分享一下. Archive快结束的时候,报了三个错误,类似于 /Users/sciyonSoft/Library/Developer/Xcode/DerivedData/Unity-iPhone-ghjhxtadvpljitbubdnbjvnxumck/Build/Intermediates/Unity-iPhone.build/Release-iphoneos/Unity-

jenkins报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password) 的处理

问题背景:jenkins服务器发布代码后需要执行删除缓存的操作ssh -p222 [email protected] "sudo rm -rf /dev/shm/nginx/hipdf/cache/*" 分析:要让jenkins能删除远程服务器上的缓存,需要配置免秘钥打通为避免权限过大,使用 eus_pe_devadmin 操作,即jenkins服务器上运行tomcat服务的apache用户操作远程 eus_pe_devadmin 用户来删除缓存需要把运行jenkins程序的apach

fedora终端ssh其它主机报错 Permission denied, please try again.

今天升级fedora23,普通用户ssh到我的openwet路由器报错 [[email protected] ~]$ ssh 192.168.10.1  [email protected]'s password: Permission denied, please try again. 解决方法: 去掉第25行#注释即可 [[email protected] sunliming]# vim /etc/ssh/ssh_config 25  PasswordAuthentication yes --

避免 ‘sudo echo xxxx >’ 时候 出现 “permission denied”

?  ~ echo "/opt/nfs 10.10.10.*(rw,all_squash,sync)">>/etc/exports zsh: permission denied: /etc/exports 解决办法: 1)sudo sh -c ' echo "/opt/nfs 10.10.10.*(rw,all_squash,sync)" >> /etc/exports' 2)echo "/opt/nfs 10.10.10.*(rw

httpd 启动报错“”Permission denied: make_sock: could not bind to address [::]:80“”

今天闲来无事复习一下普通用户httpd源码的安装,安装过程不赘述,在启动过程中提示错误 [[email protected] bin]$ ./httpd -k start httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.56.115 for ServerName (13)Permission denied: make_sock: could not bind t