Linux bash中的sudo,权限被拒绝

Linux bash中的sudo,权限被拒绝,linux,bash,sudo,Linux,Bash,Sudo,我想在局域网的一些系统中阻止usb大容量存储。我已经编写了一个bash脚本,它将修改文件。我在ubuntu中以默认管理员的身份运行脚本。但是脚本无法修改该文件。我得到以下错误 “bash:/etc/modprobe.d/blacklist.conf:权限被拒绝” 下面是我的bash脚本 #/bin/bash password='mypassword' #admin password of remote system val='blacklist usb-stor

我想在局域网的一些系统中阻止usb大容量存储。我已经编写了一个bash脚本,它将修改文件。我在ubuntu中以默认管理员的身份运行脚本。但是脚本无法修改该文件。我得到以下错误 “bash:/etc/modprobe.d/blacklist.conf:权限被拒绝

下面是我的bash脚本

#/bin/bash
password='mypassword'                  #admin password of remote system
val='blacklist usb-storage'            #text which i want to add in the file
for sysName in $(cat systemDetails)    #systemDetails is file which stores
do
ssh $sysName 'echo '$password' | sudo -S echo '$val ' >> /etc/modprobe.d/blacklist.conf'
echo
done
#script ends
注意:我已将系统配置为不需要ssh密码

这方面的任何提示都会非常有用。

试试以下方法:

ssh $sysName "echo $password | sudo -S sh -c 'echo $val >> /etc/modprobe.d/blacklist.conf'"

检查:ls-la/etc/modprobe.d/blacklist.conf。查看什么是权限。看起来您在引用时遇到了问题。当您可以直接在根帐户下运行sudo时,为什么要这样使用它呢?您的命令在写入时的重定向是由调用sudo的shell处理的,您需要写入/重定向以由sudo启动的进程(提升的进程)启动。要使用root帐户,我必须将root的ssh密钥与我想要的所有系统配对configure@griffonvulture:结果是-rw-r--r--1根根根1627年4月27日11:00/etc/modprobe.d/blacklist.conf虽然此代码可以解决此问题,几句话的解释将帮助所有读者对解决方案有更多的了解。这篇文章中公认的答案解释了很多: