首先,永远不要使用echo password | ...
. 在命令行上。这是不安全的,因为密码将保留在历史文件中,而且其他用户可以使用该ps
命令查看密码。如果要在sudo
不输入密码的情况下执行命令,可以NOPASSWD
使用/etc/sudoers
. 检查这个:https ://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt
关于权限问题。你是对的,问题是输出重定向>
。您需要知道 shell 将打开输出文件,而不是使用sudo
.
在这个例子中:
sudo command > output.file
shell 尝试打开output.file
,然后启动sudo command
并将其标准输出设置为打开的文件。但是,shell 没有 root 权限。
一种解决方法可能是使用该tee
命令,如下所示:
command | sudo tee output.file
但是,我只会授予适当的权限来编辑该文件。例如,可以创建一个组,更改该文件的组所有权,然后您进入该组。例如:
# Add group
sudo groupadd developers
# Change group ownership of the file
sudo chown root:developers output.file
# make the file writable by the group
sudo chmod g+w output.file
# Finally put you into that group
sudo usermod -a -G developers YOU
但是,如果您是管理员用户,这意味着您可以使用 执行每个命令sudo
,那么tee
上面的解决方案就足够了。