Gentoo: no se puede modificar el archivo de nombre de host como un sudoer

1

Estoy intentando cambiar el nombre de host de un host de Gentoo usando una cuenta de sudoer. Yo uso el siguiente procedimiento:

  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

Sólo el paso 3 falla. Se plantea un permission error. ¿Así que me gustaría saber por qué me sale esto? Intenté detener el servicio de red primero, pero sin cambios.


fuente

Respuestas:

2

Falla porque la >> es interpretado por el shell del usuario normal; Solo el echo se ejecuta como root.

Una forma sencilla de evitar esto es ejecutar el comando en una shell raíz interactiva:

$ sudo su -
# echo "hostname=foo" > /etc/conf.d/hostname
# /etc/init.d/net.lo restart
# exit
$

Tenga en cuenta que no necesita el touch comando, y si solo usas > También puedes prescindir de la rm, como > sobrescribirá el contenido del archivo.

Flup
fuente
0

La forma correcta de hacer esto:

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

No necesitas sudo para correr echo, pero no puede aplicar sudo a la redirección, así que en lugar de canalizarlo tee (un divisor de salida), en modo agregado ( -a, actúa como >> ), y luego puede la salida (porque no está interesado en ella) redirigiéndolo a /dev/null.

Synchro
fuente