- Изменение параметров загрузчика Grub2
- Установка и изменение пароля для меню загрузчика
- Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.
- Запрет выбора загрузки ядра GENERIC
- Настройка выбора ядра для загрузки
- 🐧 Как выполнить команду или скрипт при перезагрузке или запуске системы
- Метод 1: Как запустить скрипт или команду при перезагрузке или запуске системы с помощью файла /etc/rc.d/rc.local
- Способ 2: Как выполнить команду или скрипт при перезагрузке или запуске системы с помощью crontab
- Метод 3: Как запустить команду или скрипт при перезагрузке или запуске системы с помощью системного сервисного юнита
- Бонусные советы:
Изменение параметров загрузчика Grub2
В общем случае, после внесения изменений в конфигурационные файлы загрузчика (файл /etc/default/grub или файлы в каталоге /etc/grub.d/) для вступления изменений в силу следует выполнить команду обновления загрузчика:
При этом будет переписан файл /boot/grub/grub.cfg, и все внесенные в него изменения будут утеряны.
Для внесения изменений в конфигурационные файлы требуются права суперпользователя (при включенном МКЦ — права суперпользователя с высоким уровнем целостности).
Установка и изменение пароля для меню загрузчика
Системный загрузчик GRUB2 поддерживает возможность задания паролей в открытом виде, и многие инструкции предлагают именно такой способ. В настоящей инструкции предлагается более безопасный способ задания пароля в виде хеша. Независимо от выбранного способа рекомендуется максимально ограничить доступ к файлу с паролем .
Для смены пароля системного загрузчика необходимо создать хеш нового пароля и заменить им старый хеш:
- Для генерации хеша выполнить команду и дважды ввести новый пароль:
Полученный хеш (начиная со слова grub) скопировать в буфер (например, выделив его с помощью мыши, и нажав правую кнопку мыши выбрать «копировать»);
#!/bin/bash cat << EOF
set superusers=» username »
password_pbkdf2 username grub.pbkdf2.sha512.10000.9C319610666.
EOF<>
Цветами условно обозначены имя пользователя (красный) и созданный кеш (зеленый), в реальном редакторе цветовых обозначений нет.
Можно отключить запрос пароля grub, например для записи Windows. Для этого в файла /boot/grub/grub.cfg в параметрах загрузочного меню (строка, начинающаяся с «menuentry») указать (добавить) параметр —unrestricted, например:
. --class gnu-linux --class gnu --class os --unrestricted .
Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Для того, чтобы изменения сделать постоянными нужный элемент меню можно добавить в файл /etc/grub.d/40_custom, указав в нем все необходимые параметры. Например, для создания элемента меню «Windows 10 без пароля» для загрузки Windows 10 без запроса пароля (опция —unrestricted) добавить следующие строки:
menuentry "Windows 10 без пароля" --class windows --class os --unrestricted < insmod ntfs search --no-floppy --set=root --fs-uuid ntldr /bootmgr >
В качестве образца для создания своего элемента меню можно использовать записи menuentry из файла /boot/grub/grub.cfg.
Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.
Для того, чтобы запретить варианты загрузки в режиме восстановления:
- Открыть в редакторе файл /etc/default/grub:
Пункты меню, позволяющие выбрать для загрузки режим восстановления, можно убрать из меню и путем редактирования файла /boot/grub/grub.cfg (см. ниже, но эти изменения не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Запрет выбора загрузки ядра GENERIC
Для того, чтобы запретить все варианты загрузки, кроме варианта HARDENED:
- С правами суперпользователя открыть в редакторе файл /boot/ grub/ grub/grub.cfg:
#menuentry ‘AstraLinuxCE GNU/Linux, с Linux 4.15.3-1-generic’ —class astralinuxce —class gnu-linux —class gnu —class os —unrestricted $menuentry_id_option ‘gnulinux-4.15.3-1-generic-advanced-f923f219-185e-4747-9066-6b09fd0103ae’ <
# load_video
# insmod gzio
# if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
# insmod part_msdos
# insmod ext2
# set root=’hd0,msdos1′
# if [ x$feature_platform_search_hint = xy ]; then
# search —no-floppy —fs-uuid —set=root —hint-bios=hd0,msdos1 —hint-efi=hd0,msdos1 —hint-baremetal=ahci0,msdos1 f923f219-185e-4747-9066-6b09fd0103ae
# else
# search —no-floppy —fs-uuid —set=root f923f219-185e-4747-9066-6b09fd0103ae
# fi
# echo ‘Загружается Linux 4.15.3-1-generic …’
# linux /boot/vmlinuz-4.15.3-1-generic root=UUID=f923f219-185e-4747-9066-6b09fd0103ae ro quiet net.ifnames=0
# echo ‘Загружается начальный виртуальный диск …’
# initrd /boot/initrd.img-4.15.3-1-generic
#>
Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Настройка выбора ядра для загрузки
Для указания ядра, загружаемого по умолчанию используется параметр GRUB_DEFAULT в файле /etc/default/grub. Значением этого параметра может быть:
- число — порядковый номер элемента выбора ядра меню загрузчика. Нумерация начинается с нуля;
- идентификатор элемента меню загрузчика. Например:
GRUB_DEFAULT=gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d
Получить список элементов меню выбора ядра можно командой:
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d'Идентификаторы элементов меню, которые можно использовать для задания умолчания, находятся после параметра $menuentry_id_option .
Получить список элементов меню с их номерами можно командой:
0 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency 1 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode) 2 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened 3 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode) 4 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic 5 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode) 6 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened 7 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode) 8 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic 9 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode) 10 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic 11 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)После внесения изменений в файл /etc/default/grub обновить параметры загрузчика:
🐧 Как выполнить команду или скрипт при перезагрузке или запуске системы
Мануал
Хорошо известные сервисы на Linux могут быть добавлены на старт при загрузке системы без каких-либо проблем.
Например, если вы хотите добавить службу Apache Httpd при загрузке, вы можете сделать это с помощью команд chkconfig и systemctl.
Иногда вам нужно добавить собственный скрипт или команду или службу при загрузке, и как это сделать?
Вы можете сделать это, используя следующие три метода.
В этом руководстве мы покажем вам, как использовать эти методы на примерах.
Метод 1: Как запустить скрипт или команду при перезагрузке или запуске системы с помощью файла /etc/rc.d/rc.local
Файл «/etc/rc.local» традиционно выполняется после того, как все обычные службы были запущены в конце процесса перехода в многопользовательский уровень выполнения.
Этот метод также работает в системе systemd.
Вам нужно добавить местоположение вашего скрипта в файл «/etc/rc.d/rc.local» для запуска при старте системы.
Убедитесь, что файл имеет права на запуск.
# vi /opt/scripts/run-script-on-boot.sh #!/bin/bash date > /root/on-boot-output.txt hostname > /root/on-boot-output.txt# chmod +x /opt/scripts/run-script-on-boot.shНаконец добавьте скрипт в конец файла.
# vi /etc/rc.d/rc.local /opt/scripts/run-script-on-boot.shСпособ 2: Как выполнить команду или скрипт при перезагрузке или запуске системы с помощью crontab
cron автоматически выполняет запланированные задания в бэкэнде в определенное время.
@reboot – это специальная строка, которая позволяет пользователю запускать любую команду или скрипт при запуске ( во время загрузки).
В этом примере запускается файл «/opt/scripts/run-script-on-boot.sh» при перезагрузке системы.
Мы будем использовать тот же скрипт, что и выше.
Для этого просто добавьте следующую запись в файл crontab.
# crontab -e @reboot /opt/scripts/run-script-on-boot.shМетод 3: Как запустить команду или скрипт при перезагрузке или запуске системы с помощью системного сервисного юнита
Этот метод работает только в системах systemd.
Мы собираемся использовать тот же скрипт, показанный выше, чтобы продемонстрировать этот способ.
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог «/etc/systemd/system/».
Это наш пример скрипта запуска юнита systemd.
# vi sample-on-boot-script.service [Unit] Description=Run a Custom Script at Startup After=default.target [Service] ExecStart=/opt/scripts/run-script-on-boot.sh [Install] WantedBy=default.targetКак только вы поместите скрипт в расположение systemd, выполните следующую команду, чтобы обновить файлы конфигурации systemd и включить службу.
# systemctl daemon-reload # systemctl enable sample-on-boot-script.serviceБонусные советы:
Если вы хотите запустить скрипт в фоновом режиме, вам нужно добавить амперсанд «&».
Если вы хотите выполнить команду от имени другого пользователя, используйте следующий формат.
su - $USER -c /Path/To/My_ScriptПожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Не получается разобраться с вторым вариантом. Хочу при запуске системы активировать команду “net.inet.ip.ttl=65”. Как её активировать при помощи crontab?
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (105)
- Книги (27)
- Мануал (2 306)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (820)
- Обход запретов (34)
- Опросы (3)
- Скрипты (114)
- Статьи (352)
- Философия (114)
- Юмор (18)
Anything in here will be replaced on browsers that support the canvas element
OpenVPN Community Edition (CE) – это проект виртуальной частной сети (VPN) с открытым исходным кодом. Он создает защищенные соединения через Интернет с помощью собственного протокола безопасности, использующего протокол SSL/TLS. Этот поддерживаемый сообществом проект OSS (Open Source Software), использующий лицензию GPL, поддерживается многими разработчиками и соавторами OpenVPN Inc. и расширенным сообществом OpenVPN. CE является бесплатным для […]
Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]
В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]
Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]
Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]