将文本回显到sudo文件中

时间:2016-04-26 00:52:11

标签: bash file sudo

我正在尝试将一些文本推送到需要sudo的文件中:

sudo echo "some text" > /etc/path/to/file

但我一直收到以下错误:

bash: /etc/path/to/file: Permission denied

我可以使用nano执行此操作,但我需要以编程方式执行此操作。这是>运算符的问题吗?是否有我可以使用的脚本?

2 个答案:

答案 0 :(得分:4)

Shell(在这种情况下为bash)在运行命令之前首先执行重定向(>)。因此,在/etc/path/to/file的命令运行之前将创建sudo并且普通用户没有足够的权限来创建文件/etc/path/to/file,因此会出现关于权限的错误消息。

你可以这样做:

sudo bash -c 'echo "some text" > /etc/path/to/file'

或使用tee

echo "some text" | sudo tee /etc/path/to/file

答案 1 :(得分:0)

heemayl已经解释了权限问题,但是您需要考虑运行sudo命令仍然需要您手动输入用户密码。这是除非你在sudoers文件中指定运行sudo的用户不需要密码,我希望不是这样。

因此,为了避免手动输入密码,您有几种可能性几乎都是一个非常糟糕的主意,因为它们基本上要求您将用户密码存储在常规{{}之外1}}文件。

您可能做的最好的事情是将您的密码存储在普通文件中,并严格限制对权限的访问。

/etc/shadow

之后,您可以使用sudo的echo "password" > ~/.password && chmod 400 ~/.password 参数从外部文件中读取密码。

-S

再一次,将用户密码存储在sudo -S bash -c 'echo "some text" > /etc/test' <~/.password 之外是一个巨大的安全风险,特别是如果用户具有sudoer权限,那么即使它提供了一些基本的保护,我也会建议不要这样做。

相关问题