Bash 从shell脚本执行SUDO的更安全的方法

Bash 从shell脚本执行SUDO的更安全的方法,bash,shell,unix,sudo,Bash,Shell,Unix,Sudo,嗨,我正在从shell脚本执行SUDO,并接受herdeoc的指导。但我想知道我做的是否正确,是否更安全。它有时会锁定我的帐户(当我试图改变路径时),我不知道为什么 #!/bin/bash # set the STRING variable path=/u/siebel/abcdef/sie/sieb/ echo abcd | sudo -S /usr/bin/su - abcdef << EOF crontab -l > cronbackup1.txt #ls -lrt cd

嗨,我正在从shell脚本执行SUDO,并接受herdeoc的指导。但我想知道我做的是否正确,是否更安全。它有时会锁定我的帐户(当我试图改变路径时),我不知道为什么

#!/bin/bash
# set the STRING variable
path=/u/siebel/abcdef/sie/sieb/
echo abcd | sudo -S /usr/bin/su - abcdef << EOF
crontab -l > cronbackup1.txt
#ls -lrt
cd "$path"
ls -lrt
EOF
对于相同的密码,crontab工作正常。

当您这样做时:

somecmd | cmd << EOF
...
EOF
但我劝你不要这样做。 在shell中以明文形式传递密码, 尤其是在脚本中,安全性非常差。
最好创建一个专用脚本来执行其他用户帐户所需的操作,并适当配置
sudoers

您收到了什么消息?我很确定它不会说“你的帐户被锁定了,因为……”。只有在输入错误的密码时,它才会要求输入密码3,因为这是sudo的行为。尝试运行
sudo echo test
@NieDzejkob更新答案
3次密码错误尝试
表示
3次密码错误尝试
,而不是
入侵者警报
。停止阅读未编写的内容。@NieDzejkob,但只有当我尝试更改路径而不是其他方式以及为什么它运行3次时才会发生这种情况。如果我编写许多其他命令,使用相同的密码也可以。您最好创建脚本,然后为该脚本设置无密码的用户sudo。这样,就根本不需要su。谢谢janos的解释。有什么要求使用上面的BASH吗?@TusharSharma我不理解你的评论。在任何情况下,在你的问题和这个答案的上下文中都没有讨论Bash要求。没关系,Janos,你的回答帮助我解决了我的问题,谢谢。
somecmd | cmd << EOF
...
EOF
echo abcd | sudo -S true
sudo /usr/bin/su - abcdef << EOF
crontab -l > cronbackup1.txt
#ls -lrt
cd "$path"
ls -lrt
EOF