Lab003: Thực hành viết Script cơ bản trên môi trường Linux
Trong bài Lab ngày hôm nay, để có hình dung đầu tiên về Scripting, chúng ta sẽ thử viết và chạy một script đơn giản. Để toàn bộ quá trình này được rõ ràng, chúng ta sẽ cài đặt máy ảo trên nền tảng VMware, qua đó cũng có cái nhìn đầu tiên về một trong những nghiệp vụ cơ bản trên Cloud đó là ảo hóa (Virtualization)
I. Cài đặt Kali-linux trên VMware
Trong các bài Lab trước đây, chúng ta đã cùng cài đặt giả lập Linux trên nền WSL. Hôm nay, để thực hiện bài Lab viết Script đơn giản thì chúng ta sẽ thử dùng một phương pháp giả lập khác cũng được dùng rộng rãi đó là thông qua nền tảng VMware.
Để chuẩn bị cho bài Lab này, chúng ta sẽ tải và cài đặt phần mềm VMware Workstation theo địa chỉ sau:
https://customerconnect.vmware.com/en/downloads/details?downloadGroup=WKST-PLAYER-1621&productId=1039&rPId=77292#product_downloads
Và tải bản cài đặt Kali-linux định dạng ISO tại trang chủ của Kali:
Ở đây chúng ta hãy chú ý có 2 lựa chọn dễ thấy nhất là Bare Metal và Virtual Machines với ý nghĩa như sau:https://www.kali.org/get-kali/
- Virtual Machines: Là bản cài đặt đã được nhà phát triển đóng gói và tối ưu sẵn cho các phần mềm ảo hóa phổ biến như VMware, VirtualBox.. Với định dạng này, ta chỉ việc down bộ cài về và dùng phần mềm ảo hóa để mở nó là xong, rất đơn giản.
- Bare Metal: Là bản cài đặt với định dạng file ISO, định dạng cơ bản và phổ biến để cài đặt hệ điều hành lên mọi máy tính cá nhân cũng như Server. Trong khuôn khổ bài Lab này, mình sẽ dùng file ISO để cài đặt máy ảo trên VMware. Như thế việc cài đặt sẽ phần nào giống với việc chúng ta cài HDH lên một chiếc máy tính thực hơn so với sử dụng bản cài đặt được tối ưu sẵn.
1.1 Bước 1: Cài đặt VMware
Mở VMware lên và chọn Home -> Create a New Virtual Machine -> Custom:
Đặt password đăng nhập Kali-linux cho Account bạn vừa tạo, cái này thì tùy mỗi người.
Nhấn Continue để đến với phần cấu hình ổ đĩa ảo.
Mục Partition Disks: Đây là mục cấu hình ổ đĩa ảo cho Máy ảo Linux, chúng ta sẽ chọn Use entire disk tức chọn toàn bộ đĩa ảo 30GB khi nãy chúng ta đã tạo. Phần tiếp theo: Select disk Partition -> mặc định Continue.
Mục Partition Scheme: Kali-linux sẽ đưa ra cho chúng ta lựa chọn có tách riêng thư mục /home; /var; /tmp ra thành từng phân vùng không. Trong trường hợp này thì chúng ta chưa cần thiết phải phân lập vội -> chọn All files in one Partition. Trong bảng lựa chọn tiếp theo -> chọn mặc định Continue.
Mục Install Boot Loader -> chọn Yes.
Mục Device for Boot Loader Installation: Chỉ định phân vùng cài Boot Loader -> chọn /dev/sda/ -> Continue.
Vậy là đã xong bước cài đặt Kali-linux trên VMware, Kali-linux sẽ tự động Reboot.
Và đây là màn hình sau khi đăng nhập vào Kali-linux.
1.2 Bước 2: Cấu hình ban đầu cho Máy ảo
Từ đây trở đi, mình sẽ note những phần cần chú ý cấu hình, các phần còn lại chúng ta sẽ mặc định Next.
- Choose the Virtual Machine Hardware Compatibility: Workstation 16.x hoặc cứ chọn version cao nhất.
- Guest Operating System Installation: Installer Disc Image File (ISO) -> Browse -> chọn đường dẫn đến file ISO mà chúng ta vừa download về.
- Select a Guest Operating System: Linux -> Debian 10.x 64-bit. Sở dĩ chúng ta có lựa chọn này vì Kali-linux là 1 Distro thuộc họ Debian với cây lệnh đặc trưng "apt". Về Version thì bạn cứ chọn phiên bản cao nhất là được.
- Name the Virtual Machine: Hãy đặt một cái tên thật đẹp cho con Máy ảo tương lai của bạn -> Location - chọn nơi để lưu Máy ảo, cái này có thể để mặc định hoặc thay đổi tùy vào ý đồ của bạn. Mình thường tạo một thư mục riêng trên một ổ SSD để chạy cho nhanh, trong trường hợp của mình là thư mục F:\VirtualMachines\Kali-linux 10.x 64-bit\
- Processor Configuration: Chọn số lượng chip ảo và số nhân trong mỗi chip ảo dành cho Máy ảo. Cái này thì khi làm quen tay chúng ta sẽ tự có căn chỉnh dựa trên phần cứng thực tế và có thể tùy chỉnh bất kì lúc nào nên các bạn không cần quá đắn đo.
- Memory of the Virtual Machine: Tương tự như Processor Configuration, các bạn có thể chọn từ 4~8GB RAM cho Máy ảo, tùy tài nguyên hiện có.
- Specify Disk Capacity: Nên để dung lượng dành cho Kali-linux là khoảng 30GB -> lưu trữ bằng 1 file duy nhất cho dễ quản lí.
- Các bước khác không được nhắc tới chúng ta đều có thể Next, đừng lo vì tất cả các lựa chọn trên đều có thể thay đổi được về sau.
1.3 Bước 3: Cài đặt Kali-linux
Khởi động quá trình cài đặt Linux vào nền tảng ảo VMware: Chọn Power on this Virtual Machine -> Graphical Install, và đợi một lát để nhìn thấy màn hình cài đặt Kali-linux sẽ được boot lên như sau, ở đây nếu cần chuyển qua lại giữa môi trường Windows bên ngoài và môi trường Linux thì hãy dùng cặp phím tắt "Ctrl+G" và "Ctrl+Alt"
Nếu có bất kì lỗi gì ở lần boot đầu tiên, bạn hãy lên Menu của VMware -> chọn Reset.
Select a Language -> English.
Select your Location: Nên chọn đúng quốc gia chúng ta đang ở (Việt Nam), vì phần này sẽ có liên quan đến múi giờ. Nếu múi giờ, giờ trên máy bị sai có thể dẫn đến lỗi khi truy cập Internet.Configure Locales: chọn khu vực múi giờ Singapore.
Keymap to Use: Cứ chọn American English đã, nếu có nhu cầu dùng thêm bộ gõ tiếng Việt, Trung, Hàn..vv.. Chúng ta sẽ đều có cách config sau. Tiếp tục nhấn Continue, Kali-linux sẽ tự động khởi chạy mục setup Network.
Tiếp theo, phần Configure Network -> đây là tên của máy ảo (hostname), về sau sẽ được hiển thị trong hệ thống mạng ảo của bạn. Ví dụ mình đặt tên là "kali". Phần DomainName tiếp theo bạn có thể bỏ qua.
Setup Users and Password: ở đây Kali-linux yêu cầu nhập tên của bạn, cái này thì tùy thích. Ở đây mình đặt là "l" cho ngắn gọn.
Select user name for the new account: Đây mới là phần đặt tên dùng để đăng nhập vào Kali-linux của bạn. Mình tiếp tục để là "l" giống phần trước.Đặt password đăng nhập Kali-linux cho Account bạn vừa tạo, cái này thì tùy mỗi người.
Nhấn Continue để đến với phần cấu hình ổ đĩa ảo.
Mục Partition Disks: Đây là mục cấu hình ổ đĩa ảo cho Máy ảo Linux, chúng ta sẽ chọn Use entire disk tức chọn toàn bộ đĩa ảo 30GB khi nãy chúng ta đã tạo. Phần tiếp theo: Select disk Partition -> mặc định Continue.
Mục Partition Scheme: Kali-linux sẽ đưa ra cho chúng ta lựa chọn có tách riêng thư mục /home; /var; /tmp ra thành từng phân vùng không. Trong trường hợp này thì chúng ta chưa cần thiết phải phân lập vội -> chọn All files in one Partition. Trong bảng lựa chọn tiếp theo -> chọn mặc định Continue.
Kali-linux sẽ rất chu đáo xác nhận lại với bạn về cấu hình ổ đĩa vừa thiết lập -> chọn Yes.
Giờ thì tiến trình cài đặt mới bắt đầu.Mục Sofware Selection: Chọn mặc định -> Continue.
Và Kali-linux sẽ tiến hành cài đặt các app bạn vừa chọn. Giờ thì bạn có thể đi pha 1 ấm chè trong lúc chờ đợi.Mục Install Boot Loader -> chọn Yes.
Mục Device for Boot Loader Installation: Chỉ định phân vùng cài Boot Loader -> chọn /dev/sda/ -> Continue.
Vậy là đã xong bước cài đặt Kali-linux trên VMware, Kali-linux sẽ tự động Reboot.
Và đây là màn hình sau khi đăng nhập vào Kali-linux.
**
II. Thực hành viết Script đơn giản
Chúng ta hãy nói về một ví dụ đơn giản sau: Kali-linux mới được cài đặt và việc đầu tiên cần làm là update HDH. Vậy ít nhất ta sẽ phải gõ lần lượt mấy câu lệnh sau, đợi câu lệnh trước được thực thi xong mới có thể gõ câu lệnh sau, chưa kể khi HDH thực hiện cài đặt gói mới thì chúng ta cũng phải lọ mọ xác nhận (Yes).
sudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgrade
Để loại bỏ những bất tiện trên, chúng ta sẽ gom các câu lệnh vào 1 file text, sau đó yêu cầu HDH rằng: "Hãy thực hiện tập lệnh này". Vậy file text đó sẽ cần được định dạng ra sao, thực thi thế nào?? Chúng ta sẽ tìm hiểu ngay sau đây.
2.1 Thông tin cơ bản về một Script
Một Script và thực thi Script sẽ có các đặc điểm chung sau:
- File Script có định dạng *.sh
- Nội dung file Script mở đầu bằng #!/bin/bash (hoặc #!/bin/sh tùy trường hợp)
- Các dòng code cần thực thi được viết trong file *.sh
- Cấp quyền thực thi cho file Script (câu lệnh chmod)
- Thực thi file Script
Tương ứng với đó, ta có thể hình dung ra các bước thực hiện sau:
- Vì file Script thực chất là một tệp văn bản, vậy có thể tạo bằng cách dùng trình soạn thảo Nano hoặc Vim.
- Viết các câu lệnh vào file Script với dòng đầu tiên luôn là #!/bin/bash (hoặc /sh)
- Lưu nội dung file Script
- Cấp quyền thực thi cho file Script
- Thực thi file Script
2.2 Tạo file Script update hệ thống
Chúng ta bắt tay vào việc viết Script của mình, đầu tiên hãy mở vũ khí tối thượng Terminal của Kali-linux lên.
2.2.1 Bước 1: Tạo file Script với đuôi *.sh
Để dễ quản lí thì chúng ta sẽ tạo trước 1 folder có tên ~/script/ và đặt các Script trong tương lai vào đó.
cd ~/mkdir ~/script/touch ~/script/update.shnano ~/script/update.sh
Ở đây mình sẽ giải thích chi tiết từng câu lệnh sau:
- cd ~/ Di chuyển đến thư mục người dùng, trong ví dụ này là thư mục /home/l/
- mkdir ~/script/ Tạo folder script ở bên trong thư mục người dùng (thư mục ~/)
- touch ~/script/update.sh Tạo tệp update.sh
- nano ~/script.update.sh Truy cập vào tệp update.sh để soạn thảo nội dung
Sau khi gõ câu lệnh nano, ta sẽ mở được nội dung tệp update.sh lúc này đang rỗng, chưa có nội dung gì.
2.2.2 Bước 2: bắt đầu soạn thảo nội dung Script
Chúng ta bắt đầu nhập các câu lệnh cần thực thi vào file Script như sau:
#!/bin/bashsudo apt-get update -ysudo apt-get upgrade -ysudo apt0get dist-upgrade -ysudo apt autoclean -ysudo apt autoremove -yecho "___Update Completed___"
Với ý nghĩa các câu lệnh như sau:
- #!/bin/bash/ Dòng mở đầu mặc định cho mọi Script.
- sudo apt-get update -y Câu lệnh cập nhật HDH với cờ -y sẽ mặc định đồng ý cài đặt gói khi được hỏi (Yes).
- sudo apt-get upgrade -y Câu lệnh nâng cấp HDH với cờ -y tương tự như trên.
- sudo apt-get dist-upgrade -y Câu lệnh nâng cấp HDH với cờ -y tương tự như trên
- sudo apt autoclean / autoremove Câu lệnh dọn dẹp các file thừa sau quá trình nâng cấp
- echo "___Update Completed___" Câu lệnh xuất ra màn hình thông báo với nội dung tùy ý
Thao tác tiếp theo là lưu nội dung vừa soạn thảo bằng thao tác với trình soạn thảo Nano chúng ta đã biết ở các bài Lab trước Ctlr+X -> Y -> Enter.
2.2.3 Bước 3: Cấp quyền thực thi cho file Script
Ở phần này, chúng ta sẽ làm quen với khái niệm mới là Quyền hạn (Permission) được thể hiện qua bảng phân quyền dưới đây. Gồm các quyền Read (đọc); Write (ghi); Execute (thực thi).
Với các Permission được phân cho các đối tượng sau:
- Owner: Người chủ sở hữu của file / folder..vv..
- Group: Nhóm các Users được lập ra bởi Admin hoặc RootUser
- AllUsers: Tất cả người dùng đang truy cập vào HDH của chúng ta
Vậy để cấp quyền thực thi (Execute) cho file Script của chúng ta, cần dùng lệnh chmod với cú pháp sau:
sudo chmod <PermissionNumber> <Object> trong đó:
- PermissionNumber: Được tính bằng bảng Permission theo qui tắc nhất định. Ví dụ ta muốn cấu hình Permission cho cho tệp update.sh này như sau
- Owner được toàn quyền Read, Write, Execute (rwx) tương ứng với 7
- Group được quyền Read và Execute, không được phép Write (r-x) tương ứng với 5
- AllUsers nói chung chỉ được quyền Read (r--) tương ứng với 4
- Vậy PermissionNumber trong trường hợp này sẽ là 754. Và nếu bạn muốn cấp full quyền cho mọi Users thì PermissionNumber sẽ là 777
- Object: Một đối tượng để thực thi như file Script của chúng ta vừa soạn thảo chẳng hạn.
Vấn đề Permission là một trong những vấn đề khó và cốt lõi của tất cả các HDH, chúng ta sẽ làm quen dần. Nếu các huynh đệ đang cảm thấy rối mù thì cũng chẳng có gì đáng lo, điều đó chứng tỏ hệ thần kinh của chúng ta hoàn toàn bình thường (vẫn là thầy tôi bảo thế)
Để áp dụng vào bài Lab của chúng ta ngày hôm nay, câu lệnh chmod sẽ có dạng:
sudo chmod 754 ~/script/update.sh
2.2.4 Bước 4: Thực thi file Script
Đến đây thì mọi sóng gió qua rồi, chúng ta sẽ chỉ cần chạy câu lệnh thực thi là xong, quá trình cập nhật Kali-linux sẽ bắt đầu và sẽ khá lâu với lầu đầu đấy.
~/script/update.sh
Chúng ta sẽ cùng xem câu lệnh update / upgrade trong Script được lần lượt thực thi mà chúng ta không cần xác nhận gì thêm.
Hoàn thành quá trình update, câu lệnh dọn dẹp tập tin thừa sẽ giúp chúng ta tiết kiệm không gian bộ nhớ.
Thực ra trong quá trình Upgrade Distro chúng ta vẫn có thể phải xác nhận những vấn đề hệ trọng như "Cho phép terminate / restart một dịch vụ trong quá trình nâng cấp". Nếu đã đọc kĩ thông báo và cân nhắc cẩn thận, chúng ta có thể đồng ý để tiếp tục tiến trình nâng cấp.
**
Nhận xét
Đăng nhận xét