4 votos

Uso de Sed para actualizar el archivo GRUB

Soy nuevo en el uso de sed pero aprendiendo rápidamente de que el amor por su flexibilidad en la automatización. Estoy buscando para ejecutar una secuencia de comandos con diversos controles de seguridad cada vez que implementar un nuevo sistema, y a parte de que me obliga a bloquear el GRUB. Estoy buscando para desbloquear el general Ubuntu opción desde el menú de GRUB por lo que cualquiera puede utilizar después de que sin una contraseña, manteniendo todo lo demás protegido por contraseña.

dicho esto, estoy buscando para buscar en el /boot/grub/grub.archivo cfg para una línea específica y añadir --sin restricciones a esa opción. ( Sólo usamos 16.04.03 para todos los sistemas teóricamente tienen el mismo después 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 así:

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

Sé sed-i es para la edición en el lugar y s/ debe de búsqueda. Pero más allá de que estoy perdido en la sintaxis aquí para hacer lo que realmente hacemos lo que necesitamos. Como lo que yo puedo decir, que el posicionamiento de --sin restricciones es necesario ya que creo que sería más fácil si no teniamos que tienen una larga búsqueda, pero, de nuevo, soy nuevo en el sed y seguro. Podría alguien ayudarme con esta sed de inserción? Preferiblemente también me explique por qué una sintaxis diferente a donde se hace, así que yo sé que para el futuro.

5voto

Kerem Kusmezer Puntos 189

Mi respuesta es similar a la de RaidPinata:

 sudo sed -i s'/--class os \$menu/--class os --unrestricted \$menu/' /etc/default/grub
 

el "\ $" escapa al símbolo "$" para que no se interprete mal y estoy especificando una cadena más larga para que si el comando se ejecuta dos veces, no se obtiene la inserción dos veces.

2voto

DmitrySemenov Puntos 274

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é lugar de la línea "va sin restricciones", esto puede ser más simple.

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

2voto

Como @oldfred menciona en su comentario. Mi respuesta es, NO hagas ESTO.

Yo no soy un profesional, pero estoy bastante seguro de que cada vez que el kernel se actualiza su grub se actualiza y cualquier cambio en /boot/grub/grub.cfg será sobrescrito.

Desea probabilidades de crear una Entrada de Grub y también si la seguridad es su mayor preocupación en este artículo parece ser una buena lectura y tener mejores opciones.

https://help.ubuntu.com/community/Grub2/Passwords

https://help.ubuntu.com/community/Grub2/Passwords#Protecting_Menuentries

Nota: "Otra opción es crear un menú personalizado, añadir los elementos de menú que desea (incluyendo aquellos que quieren proteger), y desactivar el estándar de secuencias de comandos. Los usuarios y las contraseñas pueden ser incluidos en este archivo, en lugar de en el 00_header archivo. Esto puede ser un método más fácil de asignar la protección de contraseña - especialmente si sólo algunos de los elementos de menú estarán protegidos."

Esta es la forma en que me gustaría añadir una entrada de menú personalizado para Grub2, pero nunca he hecho una entrada personalizada para el existente OS lo dejo a usted para la investigación.

sudo nano /etc/grub.d/40_custom && sudo update-grub2

 menuentry "Ubuntu ISO" {
        set isofile="/home/isos/ubuntu.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject toram
        initrd (loop)/casper/initrd.lz
}

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: