grub-password.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #Обновление репозиториев и установка зависимостей:
  2. apt update
  3. apt install -y sudo grub-common
  4. ####################################################################################################################
  5. #Удаление дубликатов паролей (между решетками копия скрипта remove-grub-password.sh)
  6. #Удаляет строки с паролем из 40_custom
  7. sed -i '/password_pbkdf2 root grub./d' /etc/grub.d/40_custom
  8. sed -i '/set superusers=root/d' /etc/grub.d/40_custom
  9. #Удаляет строки с паролем из бэкапа 40_custom.old (да, это нужно)
  10. sed -i '/password_pbkdf2 root grub./d' /etc/grub.d/40_custom.old
  11. sed -i '/set superusers=root/d' /etc/grub.d/40_custom.old
  12. #Удаляет строки с паролем из grub.cfg
  13. sed -i '/password_pbkdf2 root grub.pbkdf2./d' /boot/grub/grub.cfg
  14. sed -i '/set superusers=root/d' /boot/grub/grub.cfg
  15. #Убирает опцию --unrestricted из опций загрузки ядра
  16. sed -i 's/CLASS="--class gnu-linux --class gnu --class os --unrestricted"/CLASS="--class gnu-linux --class gnu --class os"/g' /etc/grub.d/10_linux
  17. #sed -i 's/CLASS="--class gnu-linux --class gnu --class os --class xen --unrestricted"/CLASS="--class gnu-linux --class gnu --class os --class xen"/g' /etc/grub.d/34_linux_xen
  18. ####################################################################################################################
  19. #Команда что заставляет скрипт останавливатся при ошибке:
  20. set -e
  21. #Показывает данные инструкции в терминале
  22. echo "Важно! Чтобы поставить пароль на Grub:
  23. 1) Откройте текстовый редактор комбинацией клавиш Win+E
  24. 2) Введите пароль которым зашифрован ваш devuan
  25. 3) Скопируйте его и вставте в поле ниже на Ctrl+Shift+V, или ПКМ>вставить
  26. 4) Нажмите Enter, вставьте пароль еще раз и снова подтвердите на Enter:"
  27. #Записывает вывод комманды создания пароля в файл grubpassword.txt
  28. grub-mkpasswd-pbkdf2 > grubpassword.txt
  29. #Удаляет лишние слова из файла grubpassword.txt оставляя только пароль
  30. sed -i -e '1,2d' grubpassword.txt
  31. sed -i 's/Хэш PBKDF2 вашего пароля://g' grubpassword.txt
  32. sed -i 's/ //g' grubpassword.txt
  33. #Записывает grubpassword.txt в переменную $grubpassword421
  34. grubpassword421=$(< grubpassword.txt)
  35. #Делает бэкап файла 40_custom
  36. cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old
  37. #Добавляет параметры пароля и к нему пароль который содержится в переменной $grubpassword421
  38. echo "set superusers="root"
  39. password_pbkdf2 root $grubpassword421" >> /etc/grub.d/40_custom
  40. #Удаляет файл grubpassword.txt и очищает переменную $grubpassword421 от пароля
  41. rm -r grubpassword.txt
  42. grubpassword421=123
  43. #Записывает кавычки в переменные $cav
  44. cav='"'
  45. cavsysvinit='"sysvinit'
  46. #Если существует файл с параметрами 10_linux
  47. if grep -q "class gnu-linux --class gnu --class os" /etc/grub.d/10_linux; then
  48. #То добавляет параметр который разрешает запуск Devuan без пароля Grub:
  49. #(при редактировании параметров grub его будет нужно ввести)
  50. sed -i 's/CLASS="--class gnu-linux --class gnu --class os"/CLASS="--class gnu-linux --class gnu --class os --unrestricted"/g' /etc/grub.d/10_linux
  51. #И выводит данный текст:
  52. echo "Строка заменена на строку с параметром"
  53. #В противном случае (если файл с параметрами не существует):
  54. else
  55. #Добавляет файл с параметром который разрешает запуск Devuan без пароля Grub:
  56. echo "CLASS=$cav--class gnu-linux --class gnu --class os --unrestricted$cav
  57. SUPPORTED_INITS=$cavsysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart$cav" >> /etc/grub.d/10_linux
  58. #И выводит данный текст:
  59. echo "Файл с параметром создан"
  60. #Конец if else
  61. fi
  62. #Обновляет Grub применяя к нему новые параметры, в нашем случае пароль и запуск системы без ввода пароля
  63. sudo grub-mkconfig -o /boot/grub/grub.cfg
  64. sudo update-grub
  65. #nano /etc/grub.d/40_custom