请注意:这是在我的本地计算机上运行的来宾VM(VBox),我并不担心安全问题。
我正在编写一个脚本,它将作为myuser
用户在Linux(Ubuntu)VM上执行。该脚本将在/etc/myapp
下创建一个非常大的目录树。目前我必须手动执行所有操作,并且首先在myuser
下提供/etc
recrusive rwx 权限,如下所示:
sudo chmod -R 777 /etc
[sudo] password for myuser: <now I enter the password and hit ENTER>
我的问题:我如何编写一个bash脚本,为我的密码提供sudo
命令,以便我可以执行bash myscript.sh
并为我做出必要的权限更改?
答案 0 :(得分:3)
(BASH)
好的,如果你必须这样做,(记住安全警告):
$ sudo -S&lt; &lt;(echo&#34;&lt; your password&gt;&#34;)&lt; your sudo command&gt;
答案 1 :(得分:1)
您可以使用expect
或autoexpect
。不过,这是一个坏主意。
永远不要将系统密码写入。至少,不是在所述系统上的文件上。在已知需要root访问权限的安装脚本上更少。你让自己成为一个轻松的目标。
您要做的是通过sudo
配置/etc/sudoers/
以允许完全相同的用户在没有密码的情况下执行完全相同的脚本:< / p>
myuser ALL=(ALL) NOPASSWD : /path/to/script
注意:
如果您删除了/path/to/script
部分,myuser
将能够sudo
没有密码的任何内容。
如果您更改myuser
的{{1}},则每个人都可以在没有密码的情况下运行该脚本。
答案 2 :(得分:1)
如果你说,完全不关心安全......
运行visudo
以编辑/etc/sudoers
并进行验证。添加以下行:
ALL ALL=(ALL) NOPASSWD: ALL
这将阻止sudo
为任何用户提供任何命令的密码。