GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Uso de Sed para actualizar el archivo Grub?

Soy nuevo en el uso de sed, pero aprendo rápidamente a amarlo por su flexibilidad general en la automatización. Busco ejecutar un script con varios controles de seguridad cada vez que implemento un nuevo sistema, y ​​parte de eso requiere que bloquee GRUB. Estoy buscando desbloquear la opción general de Ubuntu desde el menú de GRUB para que cualquiera pueda usarla después sin contraseña, manteniendo todo lo demás protegido con contraseña.

Dicho esto, busco buscar en el archivo /boot/grub/grub.cfg una línea específica y agregar –sin restricciones a esa opción. (Solo usamos 16.04.03, por lo que todos los sistemas teóricamente tendrían el mismo archivo al momento de la instalación)

La línea en el archivo es:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {

Y quiero que se vea como:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {

Sé que sed -i es para editar en el lugar y s/ debería buscar. Pero más allá de eso, estoy perdido en la sintaxis aquí para hacer que realmente haga lo que necesitamos. Por lo que puedo decir, ese posicionamiento de –unrestricted es necesario ya que creo que sería más fácil si no tuviéramos que tener una búsqueda tan larga, pero nuevamente soy nuevo en sed y no estoy seguro. ¿Alguien podría ayudarme con esta inserción de sed? Preferiblemente, también explíqueme por qué la sintaxis diferente va donde va, así lo sé para el futuro.

Respuesta aceptada:

Aquí está el comando.

sed -i "s/--class os/--class os --unrestricted/" filename

Esto reemplazará la línea en el archivo sin requerir un archivo temporal, debido a la opción -i.

Si no importa en qué parte de la línea va "-sin restricciones", esto podría ser más simple.

sed -i "s/'Ubuntu'/'Ubuntu' --unrestricted/" filename

Ubuntu
  1. ¿Cómo reemplazar una cadena en un archivo (s)?

  2. ¿Mostrar todo el archivo hasta el partido?

  3. Texto de archivo múltiple ¿Reemplazar con Sed?

  4. ¿El archivo Grub no se puede guardar después de la modificación?

  5. Cómo actualizar/agregar un archivo en la imagen de Docker

Sustitución de cadena en Bash

Cómo actualizar Grub en Ubuntu y otras distribuciones de Linux

Debian – ¿Cómo reparar Grub en Debian?

Uso del comando Linux mv con ejemplos

Uso del comando sed de Linux con ejemplos

sed:comando no encontrado