Gentoo:无法以 sudoer 身份修改主机名文件

Gentoo:无法以 sudoer 身份修改主机名文件

我正在尝试使用 sudoer 帐户更改 Gentoo 主机的主机名。我使用以下步骤:

  1. sudo rm -f /etc/conf.d/hostname
  2. sudo touch /etc/conf.d/hostname
  3. sudo echo "hostname=foo" >> /etc/conf.d/hostname
  4. sudo /etc/init.d/net.lo restart

只有步骤 3 失败。它引发了permission error。所以我想知道为什么会出现这种情况?我先尝试停止网络服务,但没有变化。

答案1

它失败是因为>>被普通用户的 shell 解释;只有 被echo作为 运行root

解决此问题的简单方法是在交互式 root shell 中运行该命令:

$ sudo su -
# echo "hostname=foo" > /etc/conf.d/hostname
#/etc/init.d/net.lo 重启
# 出口
$

请注意,您不需要该touch命令,如果您只是使用,那么>您也可以不用该命令rm,因为>会覆盖文件的内容。

答案2

正确的做法是:

echo "hostname=foo" |  sudo tee -a /etc/conf.d/hostname > /dev/null

您不需要 sudo 来运行echo,但您不能将 sudo 应用于重定向,因此,改为将其通过管道传输到tee(输出分离器)中,以附加模式(-a,作用类似于>>),然后可以通过将其重定向到 来输出(因为您对它不感兴趣)/dev/null

相关内容