Bash скриптовете са важна част от работата на системния администратор. Те ви позволяват да автоматизирате както обикновени, така и критични задачи.
Едно от най-добрите неща със скриптовете е, че те могат да работят независимо без човешка намеса, но понякога може да бъде предизвикателство да се автоматизират задачи, които изискват потребителски пароли. Нека да разгледаме как можете сигурно да автоматизирате скриптове, които изискват пароли, без да компрометирате сигурността.
Създаване на прост скрипт
Да предположим, че искате да създадете прост скрипт, който архивира вашата начална папка на Linux на отдалечено място, така че да можете лесно да възстановите данните си в случай на загуба на данни.
Започнете, като създадете Bash скрипт файл във вашата домашна папка, с помощта на командата докосване или всеки друг метод и го наименувайте backup_home.sh. Чувствайте се свободни да използвате всяко име и директория по ваш вкус.
Сценарият използва rsync команда, мощен инструмент за копиране на файлове, за да архивирате всички файлове във вашата локална домашна директория на отдалечен сървър.
Копирайте съдържанието на следния скрипт и го поставете във вашия Bash файл. Не забравяйте да замените потребителя john с правилното име на вашия местен домашен потребител. Предоставете също правилното потребителско име и IP адрес за отдалечения сървър.
#!/bin/bash
#Копирайте данни на отдалечен сървър
rsync -avl --mkpath /home/john потребителско_име@дистанционно_server/home/Backup
Ако нямате отдалечен сървър, с който да тествате, можете просто инсталирайте VirtualBox и настройте VM на вашата локална машина. Използвайте VM гост като ваш отдалечен сървър.
Запазете файла. За да изпълните скрипта, трябва да му дадете разрешение за изпълнение с помощта на командата sudo chmod 755. Всички потребители могат да изпълняват скрипта, но само потребителите на sudo могат да променят файла.
Накрая изпълнете скрипта Bash от терминала, като използвате командата:
./backup_home.sh
Всеки път, когато стартирате този скрипт, ще бъдете подканени да въведете паролата на отдалечения сървър. Това не е идеално, ако искате да стартирате скрипта без човешка намеса, като например когато използвате Cron.
Автоматизиране на влизането с парола
Инсталирай sshpass, неинтерактивен доставчик на пароли, на вашия локален компютър или компютъра, от който ще стартирате скрипта.
На базирани на Debian дистрибуции
Ако използвате базирана на Debian дистрибуция като Ubuntu, Pop!_OS и Lubuntu:
sudo apt актуализация && sudo apt Инсталирай sshpass
На RHEL и Fedora
dnf Инсталирай sshpass
След като инсталирате sshpass, променете скрипта, така че да изглежда по следния начин.
#!/bin/bash
#Копирайте данни на отдалечен сървър
sshpass -p "твоята парола" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Тук предоставяте паролата в обикновен текст. Очевидно това не е идеалният начин, тъй като не е сигурен и не е добра практика. Ако сценарият някога попадне в неподходящи ръце, вие сте в голяма беда.
За да направим това по-сигурно, ще използваме GnuPG, сигурен инструмент за криптиране с отворен код.
Шифроване на вашата парола
GnuPG е инсталиран по подразбиране на повечето Linux системи, но в случай че не е инсталиран на вашата система, ето как да инсталирате GnuPG.
Създайте скрит файл с име тайни използвайки командата докосване .тайни. Тъй като сме направили файла скрит по подразбиране като допълнителна мярка за сигурност, ето как можете да го направите преглеждайте скрити файлове в Linux.
В тайния файл въведете паролата на вашия отдалечен компютър и я запазете.
След това шифровайте файла с помощта на gpg команда.
sudogpg.тайни
Ще бъдете подканени да въведете сигурна и силна парола за отваряне на шифрования файл.
GnuPG ще създаде нов файл с разширението .gpg добавен към старото име на файл. Вашето ново име на файл вече трябва да бъде secrets.gpg, ако приемем, че сте използвали тайни име на файл.
Ако видите съдържанието на secrets.gpg с помощта на котка команда, ще ви бъде представен някакъв безсмислен текст, за да покаже, че вашата парола е криптирана.
За да видите съдържанието на файла в обикновен текст, ще трябва да го декриптирате, като използвате следната команда (ще бъдете подканени да въведете паролата, която сте задали по време на криптирането):
gpg-dqтайна.gpg
Използване на шифрована парола във вашия скрипт
За да използвате шифрованата парола в скрипта, актуализирайте скрипта, както следва:
#!/bin/bash
#Копирайте данни на отдалечен сървър
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john потребителско_име@дистанционно_server/home/Backup
Стартирайте отново скриптовете за архивиране и този път няма да бъдете подканени за парола.
Автоматизирайте задачи с Bash скриптове
GnuGP често се използва за защита на чувствителни файлове и данни на вашия компютър и също така е чудесен инструмент за защита на пароли в автоматизирани Bash скриптове на Linux.
Има много неща, които можете да направите с Bash скриптове. Bash е мощен инструмент, който може да ви помогне да автоматизирате много неща в Linux и да се научите да пишете Bash скриптове е инвестиция, която си заслужава.