Bash script là một phần quan trọng trong công việc của quản trị viên hệ thống. Chúng cho phép bạn tự động hóa cả các tác vụ thông thường và quan trọng.
Một trong những điều tốt nhất với các script là chúng có thể chạy độc lập mà không cần sự can thiệp của con người, nhưng đôi khi việc tự động hóa các tác vụ yêu cầu mật khẩu người dùng có thể là một thách thức. Hãy xem cách bạn có thể tự động hóa các script yêu cầu mật khẩu một cách an toàn mà không ảnh hưởng đến bảo mật.
Tạo một script đơn giản
Giả sử rằng bạn muốn tạo một script đơn giản để sao lưu thư mục chính Linux của mình vào một vị trí từ xa để bạn có thể dễ dàng khôi phục trong trường hợp mất dữ liệu.
Bắt đầu bằng cách tạo file Bash script trong thư mục chính của bạn, sử dụng lệnh touch hoặc bất kỳ phương pháp nào khác và đặt tên là backup_home.sh. Hãy thoải mái sử dụng bất kỳ tên và thư mục nào theo ý thích của bạn.
Script sử dụng lệnh rsync, một công cụ sao chép file mạnh mẽ, để sao lưu tất cả các file trong thư mục chính cục bộ của bạn vào một máy chủ từ xa.
Sao chép nội dung của script sau và dán vào file Bash của bạn. Hãy nhớ thay thế user john bằng tên chính xác cho local home user của bạn. Đồng thời cung cấp tên người dùng và địa chỉ IP chính xác cho máy chủ từ xa.
#!/bin/bash
#Copy data to a remote server
rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Nếu không có máy chủ từ xa để kiểm tra, bạn có thể chỉ cần cài đặt VirtualBox và thiết lập một máy ảo trên máy cục bộ của mình. Sử dụng VM guest làm máy chủ từ xa của bạn.
Lưu các file. Để thực thi script, bạn cần cấp cho nó quyền thực thi bằng lệnh sudo chmod 755. Tất cả người dùng đều có thể thực thi script nhưng chỉ người dùng sudo mới có thể sửa đổi file.
Cuối cùng, thực thi Bash script từ terminal bằng lệnh:
./backup_home.sh
Bất cứ khi nào bạn chạy script này, bạn sẽ được nhắc nhập mật khẩu máy chủ từ xa. Điều này không lý tưởng nếu bạn muốn chạy script mà không có sự can thiệp của con người, chẳng hạn như khi sử dụng Cron.
Tự động đăng nhập bằng mật khẩu
Cài đặt sshpass, một nhà cung cấp mật khẩu không tương tác, trên PC cục bộ của bạn hoặc PC mà bạn sẽ chạy script từ đó.
Trên các bản phân phối dựa trên Debian
Nếu bạn đang sử dụng bản phân phối dựa trên Debian, chẳng hạn như Ubuntu, Pop! _OS và Lubuntu:
sudo apt update && sudo apt install sshpass
Trên RHEL và Fedora
dnf install sshpass
Sau khi cài đặt sshpass, hãy sửa đổi script để nó trông như sau.
#!/bin/bash
#Copy data to a remote server
sshpass -p "yourpassword" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Ở đây, bạn cung cấp mật khẩu dưới dạng plain text. Rõ ràng, đây không phải là cách lý tưởng, vì nó không bảo mật. Nếu script rơi vào tay kẻ xấu, bạn sẽ gặp rắc rối lớn.
Để làm cho mọi thứ an toàn hơn, bài viết sẽ sử dụng GnuPG, một công cụ mã hóa nguồn mở và an toàn.
Mã hóa mật khẩu của bạn
GnuPG được cài đặt theo mặc định trên hầu hết các hệ thống Linux, nhưng trong trường hợp nó không được cài đặt trên hệ thống của bạn, đây là cách cài đặt GnuPG.
Tạo một file ẩn có tên là secrets bằng cách sử dụng lệnh touch .secrets. Vì bài viết đã đặt file ẩn theo mặc định như một biện pháp bảo mật bổ sung, đây là cách bạn có thể xem các tệp file trên Linux.
Trong file secrets, hãy nhập mật khẩu của PC từ xa và lưu nó.
Tiếp theo, mã hóa file bằng lệnh gpg.
sudo gpg .secrets
Bạn sẽ được nhắc nhập cụm mật khẩu an toàn và mạnh để mở file được mã hóa.
GnuPG sẽ tạo một file mới với phần mở rộng .gpg được thêm vào tên file cũ. Tên file mới của bạn bây giờ phải là secret.gpg, giả sử bạn đã sử dụng tên file bí mật.
Nếu bạn xem nội dung của secret.gpg bằng lệnh cat, bạn sẽ thấy một số văn bản vô nghĩa cho thấy rằng mật khẩu của bạn đã được mã hóa.
Để xem nội dung của file ở dạng plain text, bạn sẽ cần giải mã nó bằng lệnh sau (bạn sẽ được nhắc nhập mật khẩu đã thiết lập trong quá trình mã hóa):
gpg -dq secrect.gpg
Sử dụng mật khẩu được mã hóa trong script của bạn
Để sử dụng mật khẩu được mã hóa trong script, hãy cập nhật script như sau:
#!/bin/bash
#Copy data to a remote server
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Chạy lại các script sao lưu và lần này bạn sẽ không được nhắc nhập mật khẩu.
GnuGP thường được sử dụng để bảo mật các file và dữ liệu nhạy cảm trên PC của bạn và cũng là một công cụ tuyệt vời để bảo mật mật khẩu trong các Bash script tự động trên Linux.
Có rất nhiều điều bạn có thể làm với Bash script. Bash là một công cụ mạnh mẽ có thể giúp bạn tự động hóa nhiều thứ trên Linux và học viết các Bash script là một khoản đầu tư thời gian đáng giá.