<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>hieubt</title><description>secure&lt;3</description><link>https://fuwari.vercel.app/</link><language>en</language><item><title>Linux Service</title><link>https://fuwari.vercel.app/posts/dops3/03-linux-service/linux-service/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/dops3/03-linux-service/linux-service/</guid><description>Task 3 - Tìm hiểu Linux Service</description><pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate><content:encoded/></item><item><title>Wargames - Bandit</title><link>https://fuwari.vercel.app/posts/overthewire/bandit/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/overthewire/bandit/</guid><description>Làm quen Linux</description><pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Bandit0&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit0&lt;/li&gt;
&lt;li&gt;Pass: bandit0&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kết nối đến máy chủ Bandit thông qua giao thức SSH với địa chỉ bandit.labs.overthewire.org và cổng 2220.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; - giao thức cho phép người dùng điều khiển và làm việc với máy chủ từ xa an toàn.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ssh user@host -p port 
ssh bandit0@bandit.labs.overthewire.org -p 2220 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit1&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit1&lt;/li&gt;
&lt;li&gt;Pass: ZjLjTmM6FvvyRnrb2rfNWOZOTa6ip5If&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;ls&lt;/code&gt; – lệnh dùng để liệt kê các file và thư mục trong thư mục hiện tại (không bao gồm các file ẩn).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cat&lt;/code&gt; – lệnh dùng để hiển thị nội dung của file ra màn hình.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit0@bandit:~$ ls
readme
bandit0@bandit:~$ cat readme 
Congratulations on your first steps into the bandit game!!
Please make sure you have read the rules at https://overthewire.org/rules/
If you are following a course, workshop, walkthrough or other educational activity,
please inform the instructor about the rules as well and encourage them to
contribute to the OverTheWire community so we can keep these games free!

The password you are looking for is: ZjLjTmM6FvvyRnrb2rfNWOZOTa6ip5If
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit2&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit2&lt;/li&gt;
&lt;li&gt;Pass: 263JGJPfgU6LtdEvgfWU1XP5yac29mFx&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;file&lt;/code&gt; – lệnh dùng để xác định kiểu dữ liệu thực sự của một file, không phụ
thuộc vào tên hay phần mở rộng.&lt;/p&gt;
&lt;p&gt;Trong level 2 này, file cần đọc có tên là &lt;code&gt;./-&lt;/code&gt;. Ký hiệu &lt;code&gt;./&lt;/code&gt; đây là đường dẫn
tương đối, chỉ file nằm trong thư mục hiện tại.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Phân biệt đường dẫn:
&lt;ul&gt;
&lt;li&gt;Đường dẫn tuyệt đối – bắt đầu từ thư mục gốc &lt;code&gt;/&lt;/code&gt; và chỉ rõ toàn bộ đường
đi đến file.&lt;/li&gt;
&lt;li&gt;Đường dẫn tuơng đối – được xác định dựa trên thư mục đang đứng, ký
hiệu &lt;code&gt;.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;bandit1@bandit:~$ ls
-
bandit1@bandit:~$ file ./-
./-: ASCII text
bandit1@bandit:~$ cat ./-
263JGJPfgU6LtdEvgfWU1XP5yac29mFx
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit3&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit3&lt;/li&gt;
&lt;li&gt;Pass: MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ở level 3 này, tên file có chứa khoảng trống. Khi thao tác với file, cần sử
dụng ký tự &lt;code&gt;\&lt;/code&gt; trước khoảng trống để hệ thống hiểu đúng tên file và thực thi lệnh chính xác.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;bandit2@bandit:~$ ls
--spaces in this filename--
bandit2@bandit:~$ file ./--spaces\ in\ this\ filename-- 
./--spaces in this filename--: ASCII text
bandit2@bandit:~$ cat ./--spaces\ in\ this\ filename-- 
MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit4&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit4&lt;/li&gt;
&lt;li&gt;Pass: 2WmrDFRmJIq3IPxneAaMGhap0pFhF3NJ&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; - lệnh dùng để di chuyển vào thư mục mong muốn.&lt;/p&gt;
&lt;p&gt;Trong level 4 này, file chứa mật khẩu nằm trong thư mục con và là file ẩn.
Vì vậy, cần sử dụng thêm tùy chọn của lệnh &lt;code&gt;ls&lt;/code&gt; để liệt kê đầy đủ các file trong thư
mục.&lt;/p&gt;
&lt;p&gt;Cú pháp: &lt;code&gt;ls [tùy chọn]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ls -la&lt;/code&gt; – iệt kê toàn bộ file và thư mục, bao gồm cả file ẩn và thông tin
quyền truy cập.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit3@bandit:~$ ls
inhere
bandit3@bandit:~$ cd inhere/
bandit3@bandit:~/inhere$ ls -la
total 12
drwxr-xr-x 2 root    root    4096 Oct 14 09:26 .
drwxr-xr-x 3 root    root    4096 Oct 14 09:26 ..
-rw-r----- 1 bandit4 bandit3   33 Oct 14 09:26 ...Hiding-From-You
bandit3@bandit:~/inhere$ cat ./...Hiding-From-You 
2WmrDFRmJIq3IPxneAaMGhap0pFhF3NJ
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit5&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit5&lt;/li&gt;
&lt;li&gt;Pass: 4oQYVPkxZOOEOO5pTW81FB8j8lxXGUQw&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong level 5 này, thư mục chứa nhiều file khác nhau. Để xác định file chứa
mật khẩu, em sử dụng ký tự đại diện &lt;code&gt;*&lt;/code&gt; kết hợp với đường dẫn tương đối để kiểm tra đồng thời các file trong thư mục.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;*&lt;/code&gt; – ký tự đại diện cho tất cả các file trong thư mục hiện tại.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit4@bandit:~$ ls
inhere
bandit4@bandit:~$ cd inhere/
bandit4@bandit:~/inhere$ ls
-file00  -file01  -file02  -file03  -file04  -file05  -file06  -file07  -file08  -file09
bandit4@bandit:~/inhere$ file ./*
./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: data
bandit4@bandit:~/inhere$ cat ./-file07
4oQYVPkxZOOEOO5pTW81FB8j8lxXGUQw
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit6&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit6&lt;/li&gt;
&lt;li&gt;Pass: HWasnPhtq9AVKe0dmk45nxy20cvUa6EG&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong level 6 này, yêu cầu tìm file chứa mật khẩu thỏa mãn các điều kiện:
có quyền đọc, kích thước 1033 byte và không có quyền thực thi. Để tìm file thỏa mãn các điều kiện trên, sử dụng lệnh &lt;code&gt;find&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;find&lt;/code&gt; – lệnh dùng để tìm kiếm thư mục hay file dựa theo điều kiện.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.&lt;/code&gt; – thư mục hiện tại&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-type f&lt;/code&gt; – tìm các file thường -size 1033c – file có kích thước 1033 byte&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-readable&lt;/code&gt; - có quyền đọc&lt;/p&gt;
&lt;p&gt;&lt;code&gt;! -executable&lt;/code&gt; – file không có quyền thực thi&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit5@bandit:~$ ls
inhere
bandit5@bandit:~$ cd inhere/
bandit5@bandit:~/inhere$ ls
maybehere00  maybehere02  maybehere04  maybehere06  maybehere08  maybehere10  maybehere12  maybehere14  maybehere16  maybehere18
maybehere01  maybehere03  maybehere05  maybehere07  maybehere09  maybehere11  maybehere13  maybehere15  maybehere17  maybehere19
bandit5@bandit:~/inhere$ find . -type f -readable -size 1033c ! -executable 
./maybehere07/.file2
bandit5@bandit:~/inhere$ cat ./maybehere07/.file2
HWasnPhtq9AVKe0dmk45nxy20cvUa6EG
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit7&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit7&lt;/li&gt;
&lt;li&gt;Pass: morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong level này, yêu cầu tìm file chứa mật khẩu thỏa mãn các điều kiện:
thuộc user bandit7, thuộc group bandit6 và có kích thước 33 byte. Để tìm file thỏa mãn các điều kiện trên, sử dụng lệnh &lt;code&gt;find.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/&lt;/code&gt; – thư mục gốc, cho phép tìm kiếm trên toàn bộ hệ thống.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-user bandit7&lt;/code&gt; – file thuộc sở hữu của user bandit7&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-group bandit6&lt;/code&gt; – file thuộc group bandit6&lt;/p&gt;
&lt;p&gt;&lt;code&gt;2&amp;gt;/dev/null&lt;/code&gt; – ẩn các thông báo lỗi do không có quyền truy cập khi
tìm kiếm từ thư mục gốc. =&amp;gt; &lt;code&gt;2&amp;gt;/dev/null&lt;/code&gt; dùng để chuyển stderr (standard error) vào /dev/null. Khi tìm kiếm từ thư mục gốc &lt;code&gt;/&lt;/code&gt;, hệ thống sẽ sinh ra nhiều thông báo lỗi do không có quyền truy cập vào một số thư mục. Việc chuyển stderr vào /dev/null giúp ẩn các thông báo lỗi này, tránh làm rối màn hình, trong khi kết quả tìm kiếm hợp lệ vẫn được hiển thị. (nó còn hay gọi là hố đen).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit6@bandit:~$ find / -type f -size 33c -user bandit7 -group bandit6 2&amp;gt;/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit8&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit8&lt;/li&gt;
&lt;li&gt;Pass: dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Level 8, yêu cầu tìm chuỗi millionth trong file data.txt&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grep&lt;/code&gt; – lệnh dùng để tìm kiếm một chuỗi ký tự trong nội dung của file, khác với lệnh find là tìm file theo điều kiện.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit7@bandit:~$ grep &quot;millionth&quot; data.txt
millionth       dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit9&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit9&lt;/li&gt;
&lt;li&gt;Pass: 4CKMh1JI91bUIZZPXDqGanal4xvAg0JM&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;sort&lt;/code&gt; – sắp xếp các dòng của file&lt;/p&gt;
&lt;p&gt;&lt;code&gt;|&lt;/code&gt; – dùng để kết hợp nhiều lệnh&lt;/p&gt;
&lt;p&gt;&lt;code&gt;uniq&lt;/code&gt; – loại bỏ các dòng trùng lặp&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-u&lt;/code&gt; – chỉ hiển thị các dòng xuất hiện đúng một lần (-u là tùy chọn của uniq)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit8@bandit:~$ sort data.txt | uniq -u
4CKMh1JI91bUIZZPXDqGanal4xvAg0JM
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit10&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit10&lt;/li&gt;
&lt;li&gt;Pass: FGUW5ilLVJrxX9kMYMmlN4MgbpfMiqey&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;strings&lt;/code&gt; – lệnh dùng để trích xuất và hiển thị các chuỗi ký tự có thể đọc được từ file, thường được sử dụng với các file nhị phân.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit9@bandit:~$ ls
data.txt
bandit9@bandit:~$ strings data.txt | grep ====
========== the
========== password
f\Z&apos;========== is
========== FGUW5ilLVJrxX9kMYMmlN4MgbpfMiqey
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit11&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit11&lt;/li&gt;
&lt;li&gt;Pass: dtR173fZKb0RRsDFSGsg2RWnpNVj3qRr&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Sau khi kiểm tra, đề bài cho file đã bị mã hóa(Encode) Base64.&lt;/li&gt;
&lt;li&gt;Dấu hiệu nhận biết Base64: &lt;code&gt;A–Z a–z 0–9 + /&lt;/code&gt; và có thể kết thúc chuỗi bảng &lt;code&gt;=&lt;/code&gt; hoặc &lt;code&gt;==&lt;/code&gt; (padding)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;base64 -d&lt;/code&gt; - lệnh dùng để giải mã (Decode) Base64&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit10@bandit:~$ ls
data.txt
bandit10@bandit:~$ cat data.txt
VGhlIHBhc3N3b3JkIGlzIGR0UjE3M2ZaS2IwUlJzREZTR3NnMlJXbnBOVmozcVJyCg==
bandit10@bandit:~$ base64 -d data.txt
The password is dtR173fZKb0RRsDFSGsg2RWnpNVj3qRr
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Bandit12&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User: bandit12&lt;/li&gt;
&lt;li&gt;Pass: 7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ở level này, chuỗi trong data.txt được mã hóa bằng ROT13 (dịch mỗi chữ cái sang phải 13 ký tự trong bảng chữ cái). ROT13 đối xứng nên dùng cùng một lệnh để mã hóa hoặc giải mã.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;tr &apos;A-Za-z&apos; &apos;N-ZA-Mn-za-m&lt;/code&gt; - Dùng lệnh &lt;em&gt;tr&lt;/em&gt; để chuyển đổi ký tự&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bandit11@bandit:~$ ls
data.txt
bandit11@bandit:~$ cat data.txt 
Gur cnffjbeq vf 7k16JArUVv5LxVuJfsSVdbbtaHGlw9D4
bandit11@bandit:~$ echo &quot;Gur cnffjbeq vf 7k16JArUVv5LxVuJfsSVdbbtaHGlw9D4&quot; | tr &apos;A-Za-z&apos; &apos;N-ZA-Mn-za-m&apos;
The password is 7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Linux Basic</title><link>https://fuwari.vercel.app/posts/dops3/02-linux-basic/linux-basic/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/dops3/02-linux-basic/linux-basic/</guid><description>Task 2 - Tìm hiểu Linux cơ bản</description><pubDate>Fri, 21 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Nguồn gốc của Unix&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Năm 1964, MIT, Bell Labs và GE cùng phát triển một hệ điều hành tiên tiến tên là Multics. Nhưng do quá phức tạp, Bell Labs rút lui khỏi dự án.&lt;/li&gt;
&lt;li&gt;Năm 1969, tại Bell Labs, Ken Thompson viết một hệ điều hành mới trên máy PDP-7 – gọi là UNICS, sau đổi tên thành UNIX.&lt;/li&gt;
&lt;li&gt;Đến năm 1973, Dennis Ritchie và Thompson viết lại UNIX bằng ngôn ngữ C →  giúp nó có thể chạy được trên nhiều loại máy khác nhau – một bước đột phá lớn.&lt;/li&gt;
&lt;li&gt;UNIX nhanh chóng lan rộng trong giới học thuật. Tại UC Berkeley, họ phát triển ra một biến thể riêng gọi là BSD.&lt;/li&gt;
&lt;li&gt;Năm 1983, AT&amp;amp;T chính thức phát hành UNIX System V – phiên bản thương mại đầu tiên.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unix&lt;/strong&gt; là một hệ điều hành đa nhiệm, chủ yếu dùng cho doanh nghiệp/server&lt;/li&gt;
&lt;li&gt;Khác với &lt;code&gt;Windows&lt;/code&gt; hay &lt;code&gt;MacOS&lt;/code&gt; chủ yếu dùng cho cá nhân. HĐH Unix ổn định, bảo mật và khả năng vận hành lâu dài hơn.&lt;/li&gt;
&lt;li&gt;Một số hệ điều hành dựa trên Unix:
&lt;ul&gt;
&lt;li&gt;BSD&lt;/li&gt;
&lt;li&gt;Minix&lt;/li&gt;
&lt;li&gt;Linux: (Có nhiều bản phân phối - distribution)
&lt;ul&gt;
&lt;li&gt;Red Hat: RHEL, CentOS&lt;/li&gt;
&lt;li&gt;Debian: Ubuntu, Kali Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Tất cả những phần này điều dùng &lt;code&gt;POSIX&lt;/code&gt; để viết những &lt;code&gt;Command-line&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Linux là gì? bắt nguồn từ đâu? Sự khác biệt cơ bản giữa Linux và Windows&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Linux&lt;/code&gt; là một hệ điều hành có mã nguồn mở (Open-source - OS),  được tạo ra vào năm 1991 bởi &lt;code&gt;Linus Torvalds&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Được cộng đồng phát triển rộng rãi, &lt;code&gt;Linux&lt;/code&gt; hiện nay được sử dụng trên nhiều thiết bị như: máy chủ, thiết bị nhúng, máy tính cá nhân, siêu máy tính...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So sánh sự khác biệt Linux -  Windows&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tiêu chí&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tính chất mã nguồn&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mã nguồn mở, người dùng có quyền truy cập, thay đổi và phân phối lại mã nguồn.&lt;/td&gt;
&lt;td&gt;Mã nguồn đóng, phát triển độc quyền bởi Microsoft.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bảo mật&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bảo mật cao hơn nhờ khả năng cập nhật nhanh, ít bị tấn công do thị phần nhỏ.&lt;/td&gt;
&lt;td&gt;Thường là mục tiêu của phần mềm độc hại do thị phần lớn hơn.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quản lý tài nguyên&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hoạt động tốt trên phần cứng yếu, sử dụng ít tài nguyên hệ thống.&lt;/td&gt;
&lt;td&gt;Tiêu thụ nhiều tài nguyên, đặc biệt trên hệ thống cấu hình thấp.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cập nhật hệ thống&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rolling-release hoặc fixed-release, không yêu cầu khởi động lại khi cập nhật.&lt;/td&gt;
&lt;td&gt;Cập nhật bắt buộc, thường yêu cầu khởi động lại, đôi khi gây gián đoạn công việc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cộng đồng hỗ trợ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cộng đồng mã nguồn mở lớn, hỗ trợ từ diễn đàn và wiki.&lt;/td&gt;
&lt;td&gt;Hỗ trợ chính thức từ Microsoft và cộng đồng người dùng lớn.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Khả năng tùy chỉnh&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tùy chỉnh cao, người dùng có thể thay đổi từ kernel đến giao diện người dùng.&lt;/td&gt;
&lt;td&gt;Giới hạn về tùy chỉnh, phần lớn dựa vào các cài đặt sẵn có.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ứng dụng và phần mềm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phần mềm mã nguồn mở nhiều, phải sử dụng Wine để chạy ứng dụng Windows.&lt;/td&gt;
&lt;td&gt;Nhiều phần mềm thương mại hỗ trợ, đặc biệt trong môi trường doanh nghiệp.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phù hợp cho máy chủ&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phổ biến cho máy chủ web và máy chủ doanh nghiệp nhờ tính ổn định và bảo mật cao.&lt;/td&gt;
&lt;td&gt;Ít phổ biến hơn trong môi trường máy chủ, nhưng Windows Server được sử dụng nhiều trong doanh nghiệp.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Giá thành&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Miễn phí, đa số các bản phân phối Linux không có phí bản quyền.&lt;/td&gt;
&lt;td&gt;Tốn phí bản quyền cho hệ điều hành và các phần mềm bổ sung như Microsoft Office.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bảo trì hệ thống&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bảo trì ít phức tạp hơn, không cần khởi động lại thường xuyên khi cập nhật hệ thống.&lt;/td&gt;
&lt;td&gt;Bảo trì phức tạp hơn, đặc biệt với các bản cập nhật bắt buộc từ Windows Update.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Thị phần và độ phổ biến&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phổ biến trong máy chủ, hệ thống nhúng, và tổ chức phát triển phần mềm.&lt;/td&gt;
&lt;td&gt;Phổ biến nhất trên thị trường máy tính cá nhân, đa số người dùng hàng ngày.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Nguồn: &lt;a href=&quot;https://200lab.io/blog/linux-la-gi&quot;&gt;Linus Vs. Windows&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Các bản phân phối nổi bật trong của Linux. Tìm hiểu về bản phân phối RHEL và Centos. Tìm hiểu về giấy phép trong Linux và chu kỳ phát triển của một bản phân phối&lt;/h1&gt;
&lt;h3&gt;Các bản phân phối - Linux Distrubution&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Tìm hiểu về bản phân phối RHEL và Centos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RHEL - RedHat Enterprise Linux&lt;/code&gt;: một bản phân phối của Linux, nó nổi bật với độ tin cậy, tính ổn định và khả năng bảo mật cao và được tạo bởi &lt;code&gt;Red Hat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RHEL&lt;/code&gt; phù hợp cho &lt;strong&gt;server&lt;/strong&gt;, &lt;strong&gt;data center&lt;/strong&gt;, &lt;strong&gt;cloud&lt;/strong&gt;, &lt;strong&gt;ứng dụng doanh nghiệp.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Dành cho các doanh nghiệp có trả phí&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://www.freecodecamp.org/news/red-hat-enterprise-linux-guide/&quot;&gt;Hướng dẫn RHEL&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Centos&lt;/code&gt; là một bản sao của &lt;code&gt;RHEL&lt;/code&gt; dành cho người dùng mà không cần trả phí, nó được tạo bởi Cộng đồng, dựa trên mã nguồn của RHEL.&lt;/li&gt;
&lt;li&gt;Phiên bản:
&lt;ul&gt;
&lt;li&gt;CentOS Linux (đến phiên bản 8): Bản dựng lại của RHEL, không hỗ trợ thương mại.&lt;/li&gt;
&lt;li&gt;CentOS Stream (hiện nay): Dòng phát triển rolling-release, cập nhật trước RHEL — trở thành bản tiền nhiệm (preview) của RHEL.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://hypercore.vn/centos-la-gi/&quot;&gt;Thông tin về Centos&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Tìm hiểu về giấy phép trong Linux và chu kỳ phát triển của một bản phân phối&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Linux Kernel: Được phát hành theo giấy phép GNU General Public License v2 (GPLv2).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cho phép người dùng tự do sử dụng, sao chép, sửa đổi và phân phối mã nguồn, miễn là các phần mềm phát sinh cũng phải được phát hành dưới giấy phép GPL.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Giấy phép mã nguồn mở phổ biến khác:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIT License: Đơn giản, cho phép sử dụng tự do với ít ràng buộc.&lt;/li&gt;
&lt;li&gt;Apache License 2.0: Giấy phép tự do kèm điều khoản về bằng sáng chế.&lt;/li&gt;
&lt;li&gt;BSD License: Rất ít ràng buộc, cho phép sử dụng mã nguồn một cách linh hoạt.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ý nghĩa giấy phép:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tạo điều kiện cho việc phát triển cộng đồng.&lt;/li&gt;
&lt;li&gt;Cho phép doanh nghiệp tái sử dụng và tùy chỉnh.&lt;/li&gt;
&lt;li&gt;Đảm bảo tính minh bạch và chia sẻ trong phát triển phần mềm.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chu kỳ phát triển cơ bản:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lên kế hoạch (Planning): Xác định tính năng, mục tiêu.&lt;/li&gt;
&lt;li&gt;Phát triển (Development): Viết mã, tích hợp gói phần mềm.&lt;/li&gt;
&lt;li&gt;Kiểm thử (Testing): Kiểm tra lỗi, hiệu suất, bảo mật.&lt;/li&gt;
&lt;li&gt;Phát hành (Release): Cung cấp phiên bản chính thức.&lt;/li&gt;
&lt;li&gt;Hỗ trợ (Support): Vá lỗi, cập nhật bảo mật trong suốt vòng đời hỗ trợ.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vòng đời hỗ trợ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RHEL:
&lt;ul&gt;
&lt;li&gt;Hỗ trợ 10 năm (bao gồm Mainstream + Extended Support).&lt;/li&gt;
&lt;li&gt;Chu kỳ phát hành phiên bản chính thường là 3 năm/lần.&lt;/li&gt;
&lt;li&gt;Nguồn: &lt;a href=&quot;https://access.redhat.com/support/policy/updates/errata&quot;&gt;RHEL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ubuntu LTS:
&lt;ul&gt;
&lt;li&gt;Hỗ trợ 5 năm.&lt;/li&gt;
&lt;li&gt;Chu kỳ phát hành: 2 năm/lần (tháng 4 các năm chẵn).&lt;/li&gt;
&lt;li&gt;Nguồn: &lt;a href=&quot;https://wiki.ubuntu.com/Releases&quot;&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fedora:
&lt;ul&gt;
&lt;li&gt;Chu kỳ phát hành 6 tháng/lần.&lt;/li&gt;
&lt;li&gt;Hỗ trợ khoảng 13 tháng.&lt;/li&gt;
&lt;li&gt;Nguồn: &lt;a href=&quot;https://fedorapeople.org/groups/schedule/&quot;&gt;Fedora&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu các tổ chức, website phát triển các dự án liên quan đến Linux và các bản phân phối. Các website liên quan đến đóng góp, fix lỗi bug, đóng góp code&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tổ chức / Nhóm&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Phát triển cái gì&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;Website chính&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The Linux Foundation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kernel Linux và dự án mã nguồn mở khác&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://www.linuxfoundation.org&quot;&gt;linuxfoundation.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Debian Project&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Distro Debian&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://www.debian.org&quot;&gt;debian.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Canonical&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ubuntu (dựa trên Debian)&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://ubuntu.com&quot;&gt;ubuntu.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Red Hat / Fedora Project&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fedora &amp;amp; RHEL&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://getfedora.org&quot;&gt;getfedora.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Arch Linux Team&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Arch Linux&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://archlinux.org&quot;&gt;archlinux.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Website đóng gói code, fix bug, báo lỗi
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux Kernel (Lõi Linux)&lt;/strong&gt;: &lt;a href=&quot;https://www.kernel.org&quot;&gt;web&lt;/a&gt;, &lt;a href=&quot;https://www.kernel.org/doc/html/latest/process/submitting-patches.html&quot;&gt;Đóng góp code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debian&lt;/strong&gt;: &lt;a href=&quot;https://bugs.debian.org&quot;&gt;Báo lỗi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu (Canonical)&lt;/strong&gt;: &lt;a href=&quot;https://bugs.launchpad.net/ubuntu&quot;&gt;Báo lỗi&lt;/a&gt;, &lt;a href=&quot;https://discourse.ubuntu.com/t/ways-to-contribute/10329&quot;&gt;Hướng dẫn đóng góp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fedora (Red Hat)&lt;/strong&gt;: &lt;a href=&quot;https://bugzilla.redhat.com&quot;&gt;Báo lỗi&lt;/a&gt;, &lt;a href=&quot;https://docs.fedoraproject.org/en-US/project/contributing/&quot;&gt;Đóng góp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arch Linux&lt;/strong&gt;: &lt;a href=&quot;https://bugs.archlinux.org&quot;&gt;Báo lỗi&lt;/a&gt;, &lt;a href=&quot;https://wiki.archlinux.org/title/Contributing&quot;&gt;Đóng góp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Cấu trúc Kernel và quá trình khởi động trong Linux và các INIT Level&lt;/h1&gt;
&lt;h3&gt;Cấu trúc của Kernel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Kernel&lt;/code&gt; là trái tim của hệ điều hành, giao tiếp giữa các phần cứng và phần mềm. Gồm các phần chính như:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process Scheduler&lt;/code&gt;: Quản lý tiến trình, lập lịch ai dùng CPU trước – đảm bảo công bằng và hiệu quả.
Ex: Vừa nghe nhạc, vừa gõ văn bản – máy tự chia thời gian xử lý.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory Management&lt;/code&gt;: Quản lý RAM: cấp phát bộ nhớ, phân trang, tạo bộ nhớ ảo (swap) nếu cần.
Ex: Khi mở nhiều ứng dụng, RAM đầy → hệ thống dùng ổ cứng làm RAM tạm.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;File System&lt;/code&gt;: Quản lý dữ liệu trong ổ cứng: đọc, ghi, tổ chức file, thư mục theo định dạng (ext4, xfs…).
Ex: Khi bạn mở file Word hoặc lưu một bức ảnh, file system sẽ tìm đúng file đó trên ổ cứng, đọc dữ liệu và trả về.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Device Drivers&lt;/code&gt;: Là &quot;phiên dịch viên&quot; giúp kernel giao tiếp với phần cứng: chuột, bàn phím, USB, máy in…
Ex: Khi cắm máy in vào máy tính thông qua USB, nó sẽ hoạt động in tài liệu thông qua Driver của nó&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Networking&lt;/code&gt;: Xử lý mạng: gửi/nhận dữ liệu qua Internet, tách gói tin nhỏ rồi gửi đi đúng theo thứ tự đảm bảo đầy đủ thông qua giao thức TCP/IP.
Ex: Khi mình mở trình duyệt và truy cập YouTube, phần mạng trong kernel chịu trách nhiệm gửi yêu cầu đến máy chủ YouTube, sau đó nhận video về và truyền dữ liệu cho trình duyệt hiển thị.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;System Call Interface&lt;/code&gt;: Là &quot;Cầu nối&quot; giao tiếp giữa phần mềm ứng dụng (user-space) và phần cứng hoặc các dịch vụ do kernel cung cấp (kernel-space). Ứng dụng không thể tự ý truy cập trực tiếp phần cứng mà phải qua system call.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Hãy tưởng tượng bạn đang dùng một ứng dụng (như trình duyệt web, phần mềm nghe nhạc, trình soạn thảo văn bản...). Ứng dụng này không thể tự ý &quot;đụng&quot; trực tiếp vào phần cứng như ổ cứng, RAM, card mạng vì như vậy rất nguy hiểm và dễ gây lỗi.
Ví dụ: Muốn mở một file ảnh để xem. Ứng dụng không tự mở file trực tiếp, mà gọi một &quot;cuộc gọi&quot; đến kernel bằng system call tên là open().
&lt;code&gt;read()&lt;/code&gt;, &lt;code&gt;open()&lt;/code&gt;, &lt;code&gt;write()&lt;/code&gt;, &lt;code&gt;send()&lt;/code&gt;...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Quá trình khởi động - Booting process&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Boot process&lt;/strong&gt; - quá trình khởi động hệ điều hành — chuyển máy tính từ trạng thái tắt sang trạng thái sẵn sàng chạy hệ điều hành.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nếu boot process bị lỗi, máy không thể chạy hệ điều hành → không thể sử dụng server được. Đặc biệt với &lt;code&gt;Linux Server&lt;/code&gt;, ta thường xuyên phải làm việc với bootloader, kernel, init system để tùy chỉnh, debug hoặc bảo mật.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;8 bước chính của boot process&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;B1: Power On&lt;/h4&gt;
&lt;p&gt;Bật nút nguồn → máy cấp điện cho các linh kiện (CPU, RAM, ổ cứng,...).&lt;/p&gt;
&lt;h4&gt;B2: BIOS/UEFI&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Xác định máy dùng ROM: BIOS (cũ) hay UEFI (mới).&lt;/li&gt;
&lt;li&gt;Thực hiện POST (Power-On Self Test) kiểm tra phần cứng (RAM, CPU, ổ cứng,...).&lt;/li&gt;
&lt;li&gt;Nếu OK → tìm ổ cứng có hệ điều hành để tiếp tục boot.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;[ -d /sys/firmware/efi ] &amp;amp;&amp;amp; echo &quot;UEFI&quot; || echo &quot;BIOS&quot;  # Kiểm tra BIOS hay UEFI
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;B3: Bootloader&lt;/h4&gt;
&lt;p&gt;BIOS/UEFI sẽ tìm chương trình nhỏ gọi là Bootloader (thường là GRUB) — như &quot;trình chọn đường đi&quot; giúp chọn khởi động vào Linux.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /boot/grub/grub.cfg    # Xem cấu hình GRUB
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;B4: Kernel Loading&lt;/h4&gt;
&lt;p&gt;GRUB nạp kernel Linux vào RAM. Kernel là trung tâm hệ điều hành, quản lý CPU, RAM, thiết bị,... Nó được nạp đầu tiên để bắt đầu điều khiển toàn bộ hệ thống.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uname -r   # Xem phiên bản kernel đang chạy
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;B5: Initramfs&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Ngay sau khi kernel được nạp, kernel sẽ nạp thêm initramfs – một bộ công cụ tạm thời trong RAM.&lt;/li&gt;
&lt;li&gt;Nó chứa:
&lt;ul&gt;
&lt;li&gt;Driver thiết bị (cho ổ cứng, USB…)&lt;/li&gt;
&lt;li&gt;Một số lệnh và file system cần thiết
Mục đích: giúp kernel khởi động được hệ thống gốc (root filesystem) thành công.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;lsinitramfs /boot/initrd.img-$(uname -r)   # Liệt kê nội dung initramfs
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;B6: Init system&lt;/h4&gt;
&lt;p&gt;Init system là chương trình đầu tiên, chịu trách nhiệm khởi chạy tất cả các dịch vụ cần thiết như mạng, giao diện,... để máy tính hoạt động bình thường.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ps -p 1 -o comm=   # Kiểm tra tiến trình PID 1 là gì (systemd, init,...)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;B7: Runlevel / Target&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sau khi &lt;code&gt;init system&lt;/code&gt; bắt đầu chạy, hệ thống cần biết &quot;chế độ&quot; để hoạt động, tức là máy tính sẽ chạy theo kiểu nào:
&lt;ul&gt;
&lt;li&gt;Chế độ dòng lệnh (CLI): Chỉ có cửa sổ dòng lệnh, không có giao diện đồ họa. Thường dùng cho server hoặc khi cần tiết kiệm tài nguyên.&lt;/li&gt;
&lt;li&gt;Chế độ giao diện đồ họa (GUI): Có màn hình desktop, các biểu tượng, cửa sổ như máy tính để bàn bạn thường thấy.&lt;/li&gt;
&lt;li&gt;Chế độ phục hồi (Recovery mode): Dùng để sửa lỗi khi hệ thống gặp vấn đề.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ở đây, tùy theo hệ thống init bạn dùng:
&lt;ul&gt;
&lt;li&gt;Nếu dùng SysVinit, chế độ gọi là runlevel (một số mức như 0-6, mỗi mức tương ứng chế độ khác nhau).&lt;/li&gt;
&lt;li&gt;Nếu dùng systemd (hệ thống phổ biến hiện nay), chế độ gọi là target.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ví dụ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multi-user.target&lt;/code&gt; (runlevel 3) – chế độ server&lt;/li&gt;
&lt;li&gt;&lt;code&gt;graphical.target&lt;/code&gt; (runlevel 5) – chế độ desktop&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;runlevel              # nếu SysVinit
systemctl get-default # nếu systemd
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;B8: Login&lt;/h3&gt;
&lt;p&gt;Giao diện đăng nhập hiện ra, máy đã sẵn sàng sử dụng.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;whoami       # Xem user đang đăng nhập
loginctl     # Quản lý phiên đăng nhập
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://www.youtube.com/watch?v=XpFsMB6FoOs&quot;&gt;Youtube&lt;/a&gt;
Tài liệu: &lt;a href=&quot;https://assets.bytebytego.com/ByteByteGo-Big-Archive-System-Design-2023.pdf&quot;&gt;PDF&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Các INIT Level&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lệnh &lt;code&gt;init&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;Tên Gọi&lt;/th&gt;
&lt;th&gt;Mô Tả Chính&lt;/th&gt;
&lt;th&gt;Trường Hợp Dùng&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tắt Hệ Thống (Shutdown)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tắt toàn bộ dịch vụ và nguồn hệ thống.&lt;/td&gt;
&lt;td&gt;Khi muốn tắt máy hoàn toàn.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chế Độ Người Dùng Đơn&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chỉ root đăng nhập, không mạng, không đa nhiệm.&lt;/td&gt;
&lt;td&gt;Bảo trì hệ thống, sửa lỗi nghiêm trọng.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Đa Nhiệm Không Có Mạng&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cho phép nhiều user, không có kết nối mạng.&lt;/td&gt;
&lt;td&gt;Làm việc nội bộ, kiểm thử không cần internet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Đa Nhiệm Có Mạng, Không GUI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Có mạng, không có giao diện đồ họa.&lt;/td&gt;
&lt;td&gt;Máy chủ server hoặc SSH remote.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chế Độ Tùy Chỉnh&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Không dùng mặc định, có thể cấu hình riêng.&lt;/td&gt;
&lt;td&gt;Dành cho tùy biến nâng cao.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Đa Nhiệm + Mạng + GUI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hoạt động đầy đủ với mạng và giao diện đồ họa.&lt;/td&gt;
&lt;td&gt;Dành cho người dùng thường, máy tính cá nhân.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init 6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Khởi Động Lại (Reboot)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Khởi động lại hệ thống sau khi dừng dịch vụ.&lt;/td&gt;
&lt;td&gt;Áp dụng thay đổi hệ thống hoặc update.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init s/S&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chế Độ Bảo Trì (Maintenance)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Console duy nhất, không dịch vụ, không mạng.&lt;/td&gt;
&lt;td&gt;Sửa lỗi hệ thống cấp thấp.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;init m/M&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tương Tự s/S (Maintenance)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Giống &lt;code&gt;init s&lt;/code&gt;/&lt;code&gt;S&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Cũng dùng để bảo trì.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Nguồn: &lt;a href=&quot;https://dotrungquan.info/cac-cap-do-init-trong-linux/&quot;&gt;INIT Level&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Filesystem là gì ? Các type filesystem được Linux hỗ trợ, So sách các loại này.  Cấu trúc thư mục phân cấp trong Linux.&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Filesystem&lt;/code&gt; là cách tổ chức và quản lý dữ liệu trên ổ cứng, để hệ điều hành có thể đọc, ghi, tìm kiếm và bảo mật dữ liệu.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ex: trong thư viện &lt;code&gt;đầy sách&lt;/code&gt; - (ổ cứng), Nếu mình vứt lung tung thì sẽ không tìm được cuốn sách nào cả. Vì thế &lt;code&gt;Filesystem&lt;/code&gt; là sắp xếp theo từng mục - dễ tìm kiếm,...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Các type filesystem được Linux hỗ trợ và so sánh&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Linux hỗ trợ rất nhiều loại &lt;code&gt;filesystem&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Loại FS&lt;/th&gt;
&lt;th&gt;Mô tả ngắn gọn&lt;/th&gt;
&lt;th&gt;Ưu điểm&lt;/th&gt;
&lt;th&gt;Nhược điểm&lt;/th&gt;
&lt;th&gt;Hệ thống dùng nhiều&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ext2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hệ thống tệp truyền thống của Linux&lt;/td&gt;
&lt;td&gt;Đơn giản, nhẹ&lt;/td&gt;
&lt;td&gt;Không hỗ trợ journaling → dễ mất dữ liệu khi mất điện&lt;/td&gt;
&lt;td&gt;Thẻ nhớ, thiết bị nhúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ext3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ext2 + journaling&lt;/td&gt;
&lt;td&gt;An toàn hơn ext2, tương thích ngược&lt;/td&gt;
&lt;td&gt;Hiệu suất thấp hơn ext4&lt;/td&gt;
&lt;td&gt;Máy chủ cũ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ext4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phiên bản cải tiến của ext3&lt;/td&gt;
&lt;td&gt;Hiệu suất cao, ổn định, hỗ trợ file lớn&lt;/td&gt;
&lt;td&gt;Có thể thừa tính năng với hệ thống nhỏ&lt;/td&gt;
&lt;td&gt;Mặc định trên Ubuntu, Debian&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;XFS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;FS hiệu năng cao, hỗ trợ journaling&lt;/td&gt;
&lt;td&gt;Rất nhanh khi xử lý file lớn&lt;/td&gt;
&lt;td&gt;Không tốt cho file nhỏ, resize partition khó&lt;/td&gt;
&lt;td&gt;Red Hat, CentOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Btrfs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FS hiện đại, hỗ trợ snapshot, RAID&lt;/td&gt;
&lt;td&gt;Hỗ trợ snapshot, quản lý volume linh hoạt&lt;/td&gt;
&lt;td&gt;Đôi khi chưa ổn định trong môi trường production&lt;/td&gt;
&lt;td&gt;SUSE, Fedora&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FAT32 / exFAT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hệ thống cũ dùng trong Windows&lt;/td&gt;
&lt;td&gt;Tương thích đa hệ điều hành&lt;/td&gt;
&lt;td&gt;Không hỗ trợ phân quyền&lt;/td&gt;
&lt;td&gt;USB, thẻ nhớ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NTFS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hệ thống của Windows&lt;/td&gt;
&lt;td&gt;Tương thích tốt với Windows&lt;/td&gt;
&lt;td&gt;Linux chỉ hỗ trợ đọc/ghi có giới hạn (trừ khi dùng &lt;code&gt;ntfs-3g&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Dùng để chia sẻ dữ liệu với Windows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Cấu trúc thư mục phân cấp trong Linux&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Linux sử dụng cấu trúc thư mục dạng cây, với thư mục gốc là &lt;code&gt;/&lt;/code&gt;. Dưới đây là một số thư mục chính:&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thư mục&lt;/th&gt;
&lt;th&gt;Vai trò&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Root – gốc của toàn bộ hệ thống file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chứa các chương trình thiết yếu (vd: &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cp&lt;/code&gt;, &lt;code&gt;mv&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;,...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/boot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chứa các file khởi động (kernel, grub,...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chứa các file cấu hình hệ thống&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thư mục của người dùng (vd: &lt;code&gt;/home/dk&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/lib&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thư viện dùng cho các file trong &lt;code&gt;/bin&lt;/code&gt; và &lt;code&gt;/sbin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/media&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thư mục mount thiết bị ngoài như USB, ổ cứng di động&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/mnt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dùng để mount tạm thời hệ thống file khác&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chứa các phần mềm bên ngoài được cài thêm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thư mục cá nhân của user &lt;code&gt;root&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/sbin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chứa các chương trình quản trị hệ thống&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File tạm, sẽ bị xóa khi khởi động lại&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phần mềm và file chia sẻ cho người dùng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dữ liệu thay đổi thường xuyên: log, cache, mail, spool,...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h1&gt;Hiểu cấu trúc thư mục cây trong linux, khái niệm về đường dẫn, sử dụng các lệnh cơ bản thao tác với 1 thư mục &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;pwd&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;. Trong Linux các thư mục, socket ... thực chất là gì ?&lt;/h1&gt;
&lt;h3&gt;File System Tree Structure&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Linux sử dụng cấu trúc cây (&lt;code&gt;tree structure&lt;/code&gt;) để tổ chức file và thư mục&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;/ (gốc)
├── bin/
├── boot/
├── etc/
├── home/
│   ├── user1/
│   └── user2/
├── var/
└── tmp/
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Đường dẫn tuyệt đối (Absolute path)&lt;/strong&gt;: Bắt đầu từ &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;/home/hieubt/Documents/file.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Đường dẫn tương đối (Relative path)&lt;/strong&gt;: Tính từ vị trí hiện tại&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;./file.txt           #file trong thư mục hiện tại
../file.txt          #thư mục cha
../../etc/passwd     #Đi lên 2 thư mục rồi tìm file
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Các lệnh cơ bản thao tác với thư mục&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pwd&lt;/code&gt; : In đường dẫn hiện tại&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$ pwd
/home/hieubt
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd [path]&lt;/code&gt; : Di chuyển thư mục&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cd /etc           # Vào thư mục etc
cd ..             # Quay về thư mục cha
cd ~              # Về thư mục người dùng (home)
cd /              # Về thư mục gốc
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt; : Liệt kê nội dung&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ls                # Hiển thị file và folder
ls -l             # Hiển thị chi tiết (quyền, người sở hữu, thời gian,...)
ls -a             # Hiển thị cả file ẩn
ls -lh            # Hiển thị chi tiết với đơn vị dễ đọc (KB, MB,...)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Trong Linux, thư mục, socket,… thực chất là gì?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Trong Linux: “Mọi thứ đều là file” – kể cả thư mục, thiết bị, socket,...&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Loại&lt;/th&gt;
&lt;th&gt;Mô tả&lt;/th&gt;
&lt;th&gt;Ký hiệu khi dùng &lt;code&gt;ls -l&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File thường&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-rw-r--r--&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thư mục (directory)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;drwxr-xr-x&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;l&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Symbolic link (liên kết tượng trưng)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;lrwxrwxrwx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Character device file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;crw-rw----&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block device file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;brw-rw----&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Socket (giao tiếp giữa các tiến trình)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;srwxrwxrwx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Named pipe&lt;/td&gt;
&lt;td&gt;&lt;code&gt;prw-r--r--&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu lệnh &lt;code&gt;man&lt;/code&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;man&lt;/code&gt; là viết tắt của manual (sách hướng dẫn).&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;man [tên_lệnh]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Khi mà chạy &lt;code&gt;man [tên_lệnh]&lt;/code&gt;, thì sẽ thấy những mục như sau:
| Mục             | Ý nghĩa                                                   |
| --------------- | --------------------------------------------------------- |
| &lt;strong&gt;NAME&lt;/strong&gt;        | Tên lệnh và mô tả ngắn gọn                                |
| &lt;strong&gt;SYNOPSIS&lt;/strong&gt;    | Cách sử dụng lệnh, cú pháp                                |
| &lt;strong&gt;DESCRIPTION&lt;/strong&gt; | Mô tả chi tiết về chức năng và cách hoạt động             |
| &lt;strong&gt;OPTIONS&lt;/strong&gt;     | Các tuỳ chọn có thể đi kèm (vd: &lt;code&gt;-a&lt;/code&gt;, &lt;code&gt;-l&lt;/code&gt;, &lt;code&gt;--help&lt;/code&gt;,...) |
| &lt;strong&gt;EXAMPLES&lt;/strong&gt;    | Ví dụ sử dụng (nếu có)                                    |
| &lt;strong&gt;SEE ALSO&lt;/strong&gt;    | Các lệnh liên quan khác bạn có thể tham khảo              |&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Câu lệnh làm việc với tập tin như đọc, ghi,.. (liệt kê tất cả có thể)&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lệnh&lt;/th&gt;
&lt;th&gt;Mô tả&lt;/th&gt;
&lt;th&gt;Ví dụ&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tạo thư mục mới&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mkdir testLinux&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;touch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tạo file rỗng&lt;/td&gt;
&lt;td&gt;&lt;code&gt;touch file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Đọc file, hiển thị nội dung&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;less&lt;/code&gt; / &lt;code&gt;more&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Đọc file lớn (cuộn trang)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;less log.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;head&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hiện 10 dòng đầu&lt;/td&gt;
&lt;td&gt;&lt;code&gt;head file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hiện 10 dòng cuối&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tail file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nano&lt;/code&gt; / &lt;code&gt;vi&lt;/code&gt; / &lt;code&gt;vim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mở file để chỉnh sửa&lt;/td&gt;
&lt;td&gt;&lt;code&gt;nano file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;echo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ghi nội dung vào file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;echo &quot;Hello world&quot; &amp;gt; hello.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ghi đè nội dung&lt;/td&gt;
&lt;td&gt;&lt;code&gt;echo &quot;hieubt&quot; &amp;gt; file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ghi nối vào cuối&lt;/td&gt;
&lt;td&gt;&lt;code&gt;echo &quot; 19/10/2006&quot; &amp;gt;&amp;gt; file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sao chép file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cp file.txt sao_luu.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mv&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Di chuyển hoặc đổi tên&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mv file.txt /home/dk/&lt;/code&gt; hoặc &lt;code&gt;mv a.txt b.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Xóa file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rm file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stat&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Xem thông tin file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;stat file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Kiểm tra loại file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Đếm dòng, từ, ký tự&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wc file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;diff&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;So sánh 2 file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;diff a.txt b.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cmp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;So sánh nhị phân&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cmp file1 file2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cut&lt;/code&gt;, &lt;code&gt;awk&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Trích xuất, chỉnh sửa dòng&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cut -d: -f1 /etc/passwd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;chmod&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phân quyền file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;chmod 755 file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;chown&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thay đổi chủ sở hữu&lt;/td&gt;
&lt;td&gt;&lt;code&gt;chown dk file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu về nhóm người dùng trong Linux&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Trong &lt;code&gt;Linux&lt;/code&gt;, nhóm(group) là tập hợp tất cả các tài khoản &lt;code&gt;user&lt;/code&gt; được gộp lại với nhau&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Mục đích: Dùng để quản lý quyền truy cập file, thư mục và tài nguyên hệ thống để theo dõi một nhóm thay vì từng cá nhân.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Một hệ thống &lt;code&gt;Linux&lt;/code&gt; thì có nhiều người dùng. Thay vì cấp &lt;strong&gt;quyền&lt;/strong&gt; cho từng&lt;code&gt; user&lt;/code&gt;, ta có thể tạo nhóm và gán quyền cho nhóm đó. &lt;code&gt;User&lt;/code&gt; nào thuộc nhóm đó sẽ thừa hưởng quyền của nhóm.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cấu Trúc&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mỗi &lt;code&gt;user&lt;/code&gt; sẽ có một nhóm chính (&lt;code&gt;primary group&lt;/code&gt;), thường tạo cùng lúc với &lt;code&gt;user&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ngoài ra, user còn có thể thuộc nhiều nhóm phụ (secondary groups) khác.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ví dụ:
User: hieubt
Nhóm chính: hieubt
Nhóm phụ: devops, docker&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Các lệnh&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xem nhóm hiện có trong hệ thống&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/group        #Xem nhóm của user hiện tại
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Xem nhóm của user hiện tại&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;groups 
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Tạo nhóm mới&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo groupadd ten_nhom
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Xóa nhóm&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo groupdel ten_nhom
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Thêm user vào nhóm&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo usermod -aG ten_nhom username
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;-a&lt;/code&gt; là append (thêm vào)
&lt;code&gt;-G&lt;/code&gt; chỉ định nhóm phụ&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Xóa user khỏi nhóm&lt;/li&gt;
&lt;li&gt;Linux không có lệnh trực tiếp xóa user khỏi nhóm, phải chỉnh sửa file &lt;code&gt;/etc/group&lt;/code&gt; hoặc dùng các công cụ quản lý người dùng.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/group
# Phần cuối là danh sách user thuộc nhóm đó, cách nhau bằng dấu phẩy.
testgroup:x:1002:hieubt,otheruser
testgroup:x:1002:otheruser
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu về người dùng trong User. Các loại người dùng trong Linux. Với mỗi loại họ có quyền gì trong hệ thống&lt;/h1&gt;
</content:encoded></item><item><title>Network Basic</title><link>https://fuwari.vercel.app/posts/dops3/01-network-basic/network-basic/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/dops3/01-network-basic/network-basic/</guid><description>Task 1 - Network cơ bản</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Mô hình OSI, TCP/IP&lt;/h1&gt;
&lt;h3&gt;OSI - Open Systems Interconnection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;OSI - là mô hình tham chiếu mô tả cách hệ thống mạng giao tiếp với nhau dễ dàng. Mô hình chia thành 7 tầng, mỗi tầng đảm nhiệm một chức năng riêng, giúp các thiết bị và chỉ làm việc với tầng bên trên hoặc bên dưới khi có sự cố.&lt;/li&gt;
&lt;li&gt;Các tầng giao tiếp với nhau thông qua các kênh logic (logic communication)&lt;/li&gt;
&lt;li&gt;Mô hình OSI có 2 loại thao thức:
&lt;ul&gt;
&lt;li&gt;Giao thức hướng kết nối (Connection-oriented) - TCP: chậm, an toàn, cần thiết lập kênh&lt;/li&gt;
&lt;li&gt;Giao thức không kết nối (Connectionless) - UDP: nhanh, không an toàn, không cần thiết lập kênh&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Application Layer&lt;/code&gt; - Tầng Ứng Dụng:
&lt;ul&gt;
&lt;li&gt;Cung cấp dịch vụ mạng cho các ứng dụng của người dùng&lt;/li&gt;
&lt;li&gt;Cho phép ứng dụng truy cập tài nguyên mạng&lt;/li&gt;
&lt;li&gt;Mỗi dịch vụ sử dụng giao thức và cổng riêng (port)&lt;/li&gt;
&lt;li&gt;Ex: HTTP - 80, FTP - 20 21, SMTP - 25 , DNS - 53&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Presentation Layer&lt;/code&gt; - Tầng Biểu Diễn:
&lt;ul&gt;
&lt;li&gt;Biểu diễn và chuyển đổi dữ liệu giữa định dạng của ứng dụng và định dạng mạng.&lt;/li&gt;
&lt;li&gt;Chuyển đổi kiểu dữ liệu, mã hóa ký tự,&lt;/li&gt;
&lt;li&gt;Thực hiện:
&lt;ul&gt;
&lt;li&gt;Mã hóa/giải mã (encryption/decryption)&lt;/li&gt;
&lt;li&gt;Nén/giải nén dữ liệu (compression)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Đảm bảo hai hệ thống hiểu cùng một các biểu diễn dữ liệu.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Session Layer&lt;/code&gt; - Tầng Phiên:
&lt;ul&gt;
&lt;li&gt;Thiết lập, duy trì và hủy bỏ phiên làm việc giữa các thiết bị đầu cuối.&lt;/li&gt;
&lt;li&gt;Đồng bộ dữ liệu trong quá trình truyền&lt;/li&gt;
&lt;li&gt;Quản lý hội thoại giữa hai bên (ai gửi - ai nhận)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Transport Layer&lt;/code&gt; - Tầng Giao Vận:
&lt;ul&gt;
&lt;li&gt;Vận chuyeernm dữ liệu đầu cuối - đầu cuối (end-to-end) giữa các host&lt;/li&gt;
&lt;li&gt;Chia dữ liệu lớn thành các segment nhỏ và đánh số thứ tự.&lt;/li&gt;
&lt;li&gt;Đảm bảo truyền tin tin cậy và đúng thứ tự đã được đánh số&lt;/li&gt;
&lt;li&gt;Phát hiện lỗi, truyền lại khi mất gói.&lt;/li&gt;
&lt;li&gt;Điều khiển luồng (flow control)&lt;/li&gt;
&lt;li&gt;Sử dụng port để phân biệt các tiến trình&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Network Layer&lt;/code&gt; - Tầng Mạng:
&lt;ul&gt;
&lt;li&gt;Định tuyến các gói tin từ nguồn đến đích qua nhiều mạng khác nhau.&lt;/li&gt;
&lt;li&gt;Xác định đường đi tối ưu (routing).&lt;/li&gt;
&lt;li&gt;Sử dụng địa chỉ logic (IP Address)&lt;/li&gt;
&lt;li&gt;Có thể thực hiện phân mảnh gói tin (fragmentation)&lt;/li&gt;
&lt;li&gt;Điều khiển tắc nghẽn (Congestion Control)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Data Link Layer&lt;/code&gt; - Tầng Liên Kết Dữ Liệu
&lt;ul&gt;
&lt;li&gt;Thiết lập, duy trì và hủy bỏ liên kết dữ liệu giữa các nút liền kề&lt;/li&gt;
&lt;li&gt;Đóng gói dữ liệu thành frame&lt;/li&gt;
&lt;li&gt;Đánh địa chỉ vật lý (MAC address)&lt;/li&gt;
&lt;li&gt;Kiểm soát lỗi (CRC - Cyclic Redundancy Check) và kiểm soát lưu lượng&lt;/li&gt;
&lt;li&gt;Truyền và nhận frame, xử lý (ACK - Acknowledgement Frame)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Physical Layer&lt;/code&gt; - Tầng Vật Lý:
&lt;ul&gt;
&lt;li&gt;Là tầng thấp nhấp trong mô hình OSI&lt;/li&gt;
&lt;li&gt;Truyền dữ liệu dưới dạng bit (0 và 1)&lt;/li&gt;
&lt;li&gt;Duy trì và giải phóng kết nối vật lý
&lt;img src=&quot;image.png&quot; alt=&quot;Mô hình OSI&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;TCP/IP - Transmission Control Protocol/Internet Protocol&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;TCP/IP là bộ giao thức mạng thực tế đang được sử dụng trên Internet.&lt;/li&gt;
&lt;li&gt;Khác với OSI (mô hình tham chiếu), TCP/IP là mô hình triển khai + tập hợp các giao thức cụ thể.&lt;/li&gt;
&lt;li&gt;Được thiết kế đơn giản hơn OSI và thường chia thành 4 tầng.&lt;/li&gt;
&lt;li&gt;Đảm bảo dữ liệu được truyền tải qua mạng hiệu quả, linh hoạt và có thể tin cậy (TCP, UDP).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Application Layer&lt;/code&gt; - Tầng Ứng Dụng:
&lt;ul&gt;
&lt;li&gt;Gộp chức năng của Application + Presentation + Session trong OSI.&lt;/li&gt;
&lt;li&gt;Cung cấp dịch vụ mạng trực tiếp cho các chương trình ứng dụng.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Transport Layer&lt;/code&gt; - Tầng Giao Vận: TCP và UDP
&lt;ul&gt;
&lt;li&gt;Cung cấp dịch vụ vận chuyển dữ liệu end-to-end giữa host nguồn và host đích.&lt;/li&gt;
&lt;li&gt;Thiết lập kết nối logic giữa hai đầu cuối.&lt;/li&gt;
&lt;li&gt;Chia dữ liệu thành segment và đánh số thứ tự.&lt;/li&gt;
&lt;li&gt;Sử dụng port để phân biệt các tiến trình/ứng dụng.&lt;/li&gt;
&lt;li&gt;Có 2 cơ chế:
&lt;ul&gt;
&lt;li&gt;TCP: hướng kết nối, tin cậy, kiểm soát lỗi, điều khiển luồng&lt;/li&gt;
&lt;li&gt;UDP: không kết nối, nhanh, không đảm bảo tin cậy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Internet Layer&lt;/code&gt; - Tầng Liên Mạng:
&lt;ul&gt;
&lt;li&gt;Cung cấp địa chỉ logic (IP address) cho các thiết bị.&lt;/li&gt;
&lt;li&gt;Định tuyến gói tin giữa nhiều mạng khác nhau.&lt;/li&gt;
&lt;li&gt;Xác định đường đi từ nguồn đến đích (routing).&lt;/li&gt;
&lt;li&gt;Đóng gói dữ liệu thành packet (IP packet).&lt;/li&gt;
&lt;li&gt;Hỗ trợ ánh xạ giữa địa chỉ IP và MAC thông qua:
&lt;ul&gt;
&lt;li&gt;Giao thức phân giải địa chỉ ARP (Address Resolution Protocol)&lt;/li&gt;
&lt;li&gt;Phân giải địa chỉ đảo RARP (Reverse Address Resolution Protocol)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Network Access Layer&lt;/code&gt; - Tầng Truy Cập Mạng:
&lt;ul&gt;
&lt;li&gt;Gộp chức năng của Data Link + Physical trong OSI.&lt;/li&gt;
&lt;li&gt;Cung cấp phương tiện kết nối vật lý: Cáp, card mạng, tín hiệu điện/quang&lt;/li&gt;
&lt;li&gt;Đóng gói dữ liệu thành frame để truyền trên môi trường vật lý.&lt;/li&gt;
&lt;li&gt;Địa chỉ MAC, truyền frame, phát hiện lỗi (CRC).&lt;/li&gt;
&lt;li&gt;Quy định cách truy nhập đường truyền.
&lt;img src=&quot;image-1.png&quot; alt=&quot;Mô hình TCP/IP&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Switching&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Switch (Bộ Chuyển Mạch)&lt;/code&gt; - thiết bị mạng dùng để kết nối các thiết bị trong cùng một LAN như máy tính, server, printer,... và điều hướng data pakcet (gói tin) đến đúng đích.
&lt;ul&gt;
&lt;li&gt;Cho phép nhiều thiết bị dùng chung một mạng.&lt;/li&gt;
&lt;li&gt;Giảm xung đột và tránh lưu lượng (traffic) của thiết bị này ảnh hưởng đến thiết bị khác&lt;/li&gt;
&lt;li&gt;Chỉ gửi dữ liệu đến đúng thiết bị nhận, không phát tán toàn mạng.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Switch giống như cảnh sát giao thông tại ngã tư: khi một gói tin đi vào một port nào đó, switch kiểm tra địa chỉ (MAC address) để xác định đích và chuyển tiếp qua đúng port&lt;/li&gt;
&lt;li&gt;Có 3 cơ chế:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Circuit&lt;/code&gt; Switching: thiết lập đường truyền riêng cố định trước khi truyền dữ liệu.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Message&lt;/code&gt; Switching: gửi toàn bộ message một lần, từng node lưu rồi chuyển tiếp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Packet&lt;/code&gt; Switching: chia dữ liệu thành packet nhỏ, đi nhiều đường khác nhau và ghép lại ở đích.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Routing&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Routing (Định Tuyến) - lựa chọn đường đi tốt nhất để chuyển các gói tin từ nguồn đến đích.
&lt;ul&gt;
&lt;li&gt;Route Selection: xác định đường đi tối ưu&lt;/li&gt;
&lt;li&gt;Forwarding: gửi gói tin qua các node trung gian&lt;/li&gt;
&lt;li&gt;Bảng định tuyến: lưu trữ và cập nhật thông tin các tuyến đường&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Routing ≠ Router (Bộ định tuyến). Router là thiết bị thực hiện routing&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Các giao thức trong mạng Internet&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Internet Protocol Suite&lt;/code&gt; (Bộ giao thức liên mạng) - Là tập hợp các giao thức truyền thông của Internet, quy định cách đóng gói, truyền, định tuyến và nhận dữ liệu giữa các thiết bị mạng. Hay còn gọi là TCP/IP&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Application – dịch vụ (HTTP, FTP, DNS…) → Transport – truyền tin (TCP/UDP) → Internet – định tuyến (IP) → Network Access – vật lý (Ethernet/Wi-Fi)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Protocol Stack&lt;/code&gt; - tập hợp đầy đủ các lớp giao thức, hoạt động dùng để cung cấp tăng khả năng kết nối mạng.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Transmission Control Protocol&lt;/code&gt; (TCP) - Giao thức tầng Transport cung cấp truyền dữ liệu tin cậy, đúng thứ tự, có kiểm soát lỗi.
Dùng cho Web, Email, FTP, SSH.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Internet Protocol&lt;/code&gt; (IP) - Giao thức tầng Internet dùng để đánh địa chỉ IP và định tuyến gói tin giữa các mạng.
Hoạt động không kết nối, không đảm bảo (best-effort).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hypertext Transfer Protocol&lt;/code&gt; (HTTP - 80/TCP) - Giao thức truyền tải dữ liệu Web (request–response), không mã hóa.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hypertext Transfer Protocol over SSL/TLS&lt;/code&gt; (HTTPS - 443/TCP) - HTTP chạy trên SSL/TLS, mã hóa và bảo mật dữ liệu.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;File Transfer Protocol&lt;/code&gt; (FTP - 20 [data], 21 [control]) - Giao thức truyền file giữa client–server, không mã hóa mặc định, dùng 2 kênh.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Secured Shell&lt;/code&gt; (SSH - 22/TCP) - Giao thức điều khiển máy từ xa an toàn (mã hóa), thay thế Telnet.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Telnet&lt;/code&gt; (23/TCP) - Điều khiển từ xa không mã hóa, kém bảo mật.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Simple Mail Transfer Protocol&lt;/code&gt; (SMTP - 25, 587, 465 [SSL] ) - Giao thức gửi email giữa client và mail server.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Post Office Protocol v3&lt;/code&gt; (POP3 - 110, 995 [SSL]) - Giao thức tải email về máy và thường xóa trên server.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Internet Message Access Protocol&lt;/code&gt; - Giao thức đọc và quản lý mail trực tiếp trên server, đồng bộ nhiều thiết bị.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Domain Name System&lt;/code&gt; (DNS - 53/UDP, 53/TCP) - Hệ thống phân giải tên miền → địa chỉ IP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Simple Network Management Protocol&lt;/code&gt; (SNMP - 161 [query], 162 [trap]) - Giao thức giám sát và quản lý thiết bị mạng (router, switch…).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;NAT&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NAT (Network Address Translation)&lt;/strong&gt; là cơ chế cho phép chuyển đổi địa chỉ IP private (nội bộ) sang IP public (bên ngoài Internet) thông qua router.&lt;/li&gt;
&lt;li&gt;Cách hoạt động:
&lt;ul&gt;
&lt;li&gt;Các máy trong mạng nội bộ (ví dụ: máy ảo) dùng IP private để giao tiếp với nhau.&lt;/li&gt;
&lt;li&gt;Khi truy cập Internet, router sẽ đổi IP private thành IP public của mạng vật lý (WiFi/LAN) rồi mới gửi dữ liệu ra ngoài.&lt;/li&gt;
&lt;li&gt;khi truyền ra ngoài Internet Khi máy ảo giao tiếp với bên ngoài, địa chỉ IP nội bộ sẽ được chuyển thành địa chỉ IP của mạng vật lý (WIFI) để truyền dữ liệu lên Internet.&lt;/li&gt;
&lt;li&gt;Khi phản hồi quay về, router sẽ dịch ngược lại để chuyển đúng về máy ban đầu.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ưu điểm:
&lt;ul&gt;
&lt;li&gt;Ẩn IP nội bộ → tăng bảo mật&lt;/li&gt;
&lt;li&gt;Cho phép nhiều máy dùng chung 1 IP public&lt;/li&gt;
&lt;li&gt;Dễ cấu hình, phù hợp cho máy ảo/lab mạng&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Có gateway cố định: thường là .2&lt;/li&gt;
&lt;li&gt;DHCP tự động cấp IP cho máy trong dải: .1 → .254&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Firewall&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Firewall (Tường lửa) - hệ thống dùng để kiểm soát và lọc lưu lượng mạng, ngăn truy cập trái phép từ Internet vào mạng nội bộ&lt;/li&gt;
&lt;li&gt;Tạo ra hàng rào cản an toàn giữa mạng nội bộ và mạng Internet&lt;/li&gt;
&lt;li&gt;Dựa vào các quy tắc của ACL - Access Control List: lọc theo IP, Port, Protocol, Domain, Program,...&lt;/li&gt;
&lt;li&gt;Host-base Firwall: cài trên từng máy (PC/Server), bảo vệ riêng lẻ&lt;/li&gt;
&lt;li&gt;Network-base Firewall: đặt tại router/gateway, bảo vệ toàn bộ mạng&lt;/li&gt;
&lt;li&gt;Rất cần thiết để giữ an toàn hệ thống&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Cài hệ điều hành ubuntu trên VMware&lt;/h1&gt;
&lt;h4&gt;B1: Cài đặt Ubuntu Server&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Cài đặt phiên bản server. &lt;a href=&quot;https://ubuntu.com/download/server&quot;&gt;Tải Ubuntu Server tại đây&lt;/a&gt;
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B2: Tạo máy ảo Ubuntu trên VMware&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Mở &lt;strong&gt;VMware&lt;/strong&gt;, chọn Create a New Virtual Machine để khởi tạo máy ảo Ubuntu.
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Nhấn &lt;strong&gt;Next&lt;/strong&gt; để tiếp tục.&lt;/li&gt;
&lt;li&gt;Ở bước tiếp theo, chọn file ISO Ubuntu Server bạn đã tải về trước đó.
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Chọn xong file ISO → Nhấn &lt;strong&gt;Next&lt;/strong&gt; để tiếp tục cấu hình máy ảo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B3: Cài đặt Ubuntu Server trong máy ảo&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Khởi động máy ảo, bắt đầu cài đặt Ubuntu Server.
&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Dùng chuột click vào mũi tên → Nhấn &lt;strong&gt;Enter&lt;/strong&gt; để tiếp tục.
&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cài đặt ngôn ngữ → Nhấn &lt;strong&gt;Enter&lt;/strong&gt;.
&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Bỏ qua quá trình cập nhật cài đặt → Chọn &lt;strong&gt;Continue without updating&lt;/strong&gt; → Nhấn &lt;strong&gt;Enter&lt;/strong&gt;.
&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Chọn bố cục bàn phím phù hợp → Nhấn &lt;strong&gt;Done&lt;/strong&gt; → Enter.
&lt;img src=&quot;image-9.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cấu hình giao diện mạng → Giữ mặc định → Nhấn &lt;strong&gt;Done&lt;/strong&gt; → Enter.
&lt;img src=&quot;image-10.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cấu hình proxy → Giữ trống nếu không dùng → Nhấn &lt;strong&gt;Done&lt;/strong&gt; → Enter.
&lt;img src=&quot;image-11.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cấu hình Ubuntu Archive Mirror → Giữ mặc định → Nhấn &lt;strong&gt;Done&lt;/strong&gt; → Enter.
&lt;img src=&quot;image-12.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cấu hình phân vùng ổ đĩa (lưu trữ) → Chọn &lt;strong&gt;Use Entire Disk&lt;/strong&gt; (nếu chưa tùy chỉnh) → Nhấn &lt;strong&gt;Done&lt;/strong&gt; → Enter.
&lt;img src=&quot;image-13.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Nhập thông tin hồ sơ người dùng (username, password, hostname…)
&lt;img src=&quot;image-14.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Sau khi điền xong, chọn &lt;strong&gt;Done&lt;/strong&gt; → Nhấn Enter để tiếp tục.
&lt;img src=&quot;image-15.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Cài đặt xong → Nhấn &lt;strong&gt;Reboot&lt;/strong&gt; để khởi động lại và hoàn tất quá trình.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B4: Bước 4: Đăng nhập và cập nhật hệ thống&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Đăng nhập vào hệ thống.
&lt;img src=&quot;image-16.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Sau khi đăng nhập, cập nhật hệ thống bằng lệnh sau:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu network trong VMware&lt;/h1&gt;
&lt;h3&gt;Bridge&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;VM kết nối trực tiếp vào mạng LAN vật lý như một máy thật&lt;/li&gt;
&lt;li&gt;Cùng dải IP/Subnet với mạng thật (do DHCP router cấp)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Host-Only&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mạng nội bộ giữa Host với VM&lt;/li&gt;
&lt;li&gt;Không truy cập Internet&lt;/li&gt;
&lt;li&gt;Mạng riêng hoàn toàn, cô lập, an toàn&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;NAT&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;VM dùng IP private&lt;/li&gt;
&lt;li&gt;Khi ra Internet, NAT chuyển private → IP của Host&lt;/li&gt;
&lt;li&gt;Ra Internet được, bên ngoài không thể truy cập trực tiếp vào VM&lt;/li&gt;
&lt;li&gt;An toàn, hay dùng&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Custom Network (VMnet8)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cấu hình bằng VMware Virtual Network Editor&lt;/li&gt;
&lt;li&gt;Tạo mạng riêng theo yêu cầu&lt;/li&gt;
&lt;li&gt;Có thể bật DHCP, NAT hoặc chỉnh Subnet&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Cấu hình IP tĩnh trong Ubuntu&lt;/h1&gt;
&lt;h4&gt;B1: Xem cấu hình mạng vật lý hiện tại&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ip a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-17.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hiện tại card mạng là &lt;code&gt;ens33&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B2: Chỉnh sửa file cấu hình mạng&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Liệt kê file cấu hình mạng&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ls ls /etc/netplan/
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Hiện tại file cấu hình có tên &lt;code&gt;50-cloud-init.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mở file cấu hình để chỉnh sửa&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/netplan/50-cloud-init.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;script cấu hình IP tĩnh&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;network:
  version: 2
  ethernets:
    ens33:
      dhcp4: false
      addresses:
        - 10.0.0.86/24
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Sau khi chỉnh sửa file trong nano, nhấn:&lt;strong&gt;Ctrl + X&lt;/strong&gt; → &lt;strong&gt;Y (yes)&lt;/strong&gt; → &lt;strong&gt;Enter&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B3: Áp dụng và kiểm tra lại IP&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sudo netplan apply
ip a
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;ping tới google để kiểm tra mạng có hoạt động không
&lt;img src=&quot;image-18.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;h1&gt;Limit Bandwidth&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Limit Bandwidth&lt;/code&gt; (Giới Hạn Băng Thông) - iệc kiểm soát lượng dữ liệu được truyền qua mạng trong một khoảng thời gian nhất định - Đơn vị: Mbps(megabit per second)
&lt;ul&gt;
&lt;li&gt;Tránh nghẽn mạng&lt;/li&gt;
&lt;li&gt;Phân phối tài nguyên mạng hợp lý&lt;/li&gt;
&lt;li&gt;Ưu tiên dịch vụ quang trọng&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tools: cấu hình trên Router hỗ trợ QoS hoặc Bandwidth Shaping&lt;/li&gt;
&lt;li&gt;Traffic Shaping / Bandwidth Shaping: kiểm soát tốc độ gửi/nhận dữ liệu theo mức đã đặt&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ví dụ: Một Router có băng thông 100 Mbps và phân bổ cho 3 nền tảng: Zoom 40 Mbps, Google 30 Mbps, VPN 5 Mbps; Priority lần lượt: Cao, Trung bình, Thấp.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Cài Zoom tối đa 40 Mbps thì hệ thống đảm bảo Zoom không vượt quá 40 Mbps dù còn băng thông trống. Đây gọi là Limit Bandwidth.
&lt;img src=&quot;image-19.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Keepalived + Lab&lt;/h1&gt;
&lt;h3&gt;Keepalived&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Keepalived&lt;/strong&gt; - phần mềm giúp hệ thống mạng luôn hoạt động liên tục ngay cả khi có sự cố xảy ra. Khi một máy chủ chính bị lỗi (như tắt máy, mất kết nối), Keepalived sẽ tự động kích hoạt máy dự phòng (backup) để thay thế, đảm bảo hệ thống không bị gián đoạn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thường được dùng để:
&lt;ul&gt;
&lt;li&gt;Giám sát tình trạng hoạt động của các máy chủ.&lt;/li&gt;
&lt;li&gt;Tự động chuyển địa chỉ IP ảo (VIP) sang máy khác khi máy chính gặp sự cố.&lt;/li&gt;
&lt;li&gt;Sử dụng giao thức VRRP để đảm bảo luôn có một máy chủ chính (Master) giữ địa chỉ IP ảo.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VRRP&lt;/strong&gt; - giao thức cho phép nhiều thiết bị cùng chia sẻ một địa chỉ IP ảo (VIP).&lt;/li&gt;
&lt;li&gt;Trong một nhóm VRRP:
&lt;ul&gt;
&lt;li&gt;Sẽ có một máy giữ vai trò Master, là máy đang sở hữu và sử dụng VIP.&lt;/li&gt;
&lt;li&gt;Các máy còn lại sẽ là Backup, chỉ chờ Master gặp sự cố để thay thế.&lt;/li&gt;
&lt;li&gt;Nếu Master bị tắt hoặc mất kết nối, một máy Backup sẽ tự động trở thành Master mới và giành quyền giữ VIP.&lt;/li&gt;
&lt;li&gt;Khi Master cũ hoạt động lại, nếu nó có độ ưu tiên cao hơn, VIP sẽ quay về lại Master ban đầu.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;LAB&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Đây là mô hình lab keepalived kết hợp với Nginx
&lt;img src=&quot;image-20.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cài đặt keepalived và nginx&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Chạy trên 3 máy ảo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install keepalived nginx -y
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;- Tạo text cho web để dễ kiểm tra
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;This is MASTER&quot; | sudo tee /var/www/html/index.html     # máy 10.0.0.50
echo &quot;This is BACKUP1&quot; | sudo tee /var/www/html/index.html     # máy 10.0.0.51
echo &quot;This is BACKUP2&quot; | sudo tee /var/www/html/index.html     # máy 10.0.0.52
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cấu hình keepalived cho từng máy ảo&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;mở và chỉnh file cấu hình.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/keepalived/keepalived.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Máy MASTER - 10.0.0.50&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1

    virtual_ipaddress {
        10.0.0.69
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Máy BACKUP1 - 10.0.0.51&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vrrp_instance VI_1 {
    state BACKUP1
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1

    virtual_ipaddress {
        10.0.0.69
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Máy BACKUP2 - 10.0.0.52&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vrrp_instance VI_1 {
    state BACKUP2
    interface ens33
    virtual_router_id 51
    priority 98
    advert_int 1

    virtual_ipaddress {
        10.0.0.69
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Giải thích:
&lt;code&gt;vrrp_instance&lt;/code&gt;: Tạo tên cho một instance VRRP
&lt;code&gt;state&lt;/code&gt;: trạng thái của máy ảo
&lt;code&gt;interface&lt;/code&gt;: card mạng của máy ảo.
&lt;code&gt;virtual_router_id&lt;/code&gt;: ID của nhóm VRRP (phải giống nhau)
&lt;code&gt;priority&lt;/code&gt;: Ưu tiên cao nhất → giữ VIP.
&lt;code&gt;advert_int 1&lt;/code&gt;: Gửi gói thông báo mỗi 1 giây.
&lt;code&gt;virtual_ipaddress&lt;/code&gt;: Gán địa chỉ IP ảo (VIP) vào máy này.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Khởi động keepalived&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Trên cả 3 máy ảo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart keepalived
sudo systemctl enable keepalived
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;- Kiểm tra hoạt động của 3 máy ảo
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;service keepalived status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-21.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-22.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-23.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Test Web Nginx&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Chạy VIP lên trình duyệt chorme: &lt;code&gt;10.0.0.69&lt;/code&gt;
&lt;img src=&quot;image-24.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;hiện tại web đang dùng IP máy MASTER
Khi tôi tắt máy MASTER thì web sẽ tự động chuyển sang IP máy BACKUP1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;service keepalived stop 
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;- sau đó load lại web thì nó sẽ chuyển sang web BACKUP1
![alt text](image-25.png)
- tiếp tục thử tắt máy ảo BACKUP1 thì web sẽ chuyển sang BACKUP2
![alt text](image-26.png)
- cuối cùng start lại máy MASTER xem web có chuyển sang Web MASTER không
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;service keepalived start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-27.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kết luận&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Mô hình hoạt động của Keepalived với 3 node&lt;/li&gt;
&lt;li&gt;Trong mô hình này, địa chỉ IP ảo (VIP: 10.0.0.69) được chia sẻ giữa 3 máy chủ. Keepalived sử dụng giao thức VRRP để đảm bảo rằng chỉ một máy (ưu tiên cao nhất) giữ địa chỉ VIP tại một thời điểm.&lt;/li&gt;
&lt;li&gt;Khi máy Master (priority 100) gặp sự cố, máy Backup1 (priority 99) sẽ tự động đảm nhận VIP. Nếu tiếp tục xảy ra lỗi, Backup2 (priority 98) sẽ thay thế. Điều này giúp đảm bảo dịch vụ không bị gián đoạn và tăng tính sẵn sàng của hệ thống.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1&gt;Tool debug, config network&lt;/h1&gt;
&lt;h3&gt;Tool debug&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kiểm tra kết nối Internet (có ra ngoài được không)&lt;/li&gt;
&lt;li&gt;Kiểm tra DNS + Internet&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ping 8.8.8.8
ping google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Xem đường đi gói tin, tìm hop bị nghẽn/timeout&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;traceroute google.com 
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Xem IP, subnet, trạng thái card mạng (máy đã nhận IP chưa)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ip a
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Xem bảng định tuyến, có default gateway không&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ip r
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;port TCP/UDP đang lắng nghe (dịch vụ đang mở)&lt;/li&gt;
&lt;li&gt;các kết nối TCP đang hoạt động&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ss -tuln 
ss -ant 
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Kiểm tra phân giải DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;nslookup google.com 
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Bắt packet để debug traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo tcpdump -i eth0 
sudo tcpdump host 8.8.8.8
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Bắt &amp;amp; phân tích packet bằng GUI&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;wireshark
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Config network&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/netplan/50-cloud-init.yaml   # sửa cấu hình
sudo netplan apply                         # áp dụng cấu hình
ip route                                   # kiểm tra route
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h1&gt;Tìm hiểu khái niệm ssh-key, và thực hành trên Ubuntu&lt;/h1&gt;
&lt;h3&gt;SSH Key là gì ?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SSH Key là một cặp khóa mã hóa dùng để xác thực người &lt;code&gt;client&lt;/code&gt; và &lt;code&gt;server&lt;/code&gt; thông qua giao thức SSH(Secure Shell) mà không cần dùng mật khẩu. Cơ chế dựa trên mã bất đổi xứng:
&lt;ul&gt;
&lt;li&gt;Public Key(khóa công khai): Dùng để chia sẻ và đặt trên server.&lt;/li&gt;
&lt;li&gt;Private Key(khóa bí mật): Giữ bí mật, lưu trên máy client. Không bao giờ được chia sẽ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;chỉ private key mới có thể giải mã những gì đã được mã hóa bởi public key.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Tại sao SSH Key an toàn hơn mật khẩu ?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Không thế dùng &lt;code&gt;brute-force&lt;/code&gt; như các mật khẩu yếu&lt;/li&gt;
&lt;li&gt;Không bị đánh cắp qua &lt;code&gt;phishing&lt;/code&gt; như password&lt;/li&gt;
&lt;li&gt;Có thể giới hạn IP, command hay thời gian sử dụng.&lt;/li&gt;
&lt;li&gt;Private key có thể được bảo vệ bằng &lt;code&gt;passphrase&lt;/code&gt;, thêm lớp bảo mật thứ hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Public Key&lt;/th&gt;
&lt;th&gt;Private Key&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lưu trữ ở&lt;/td&gt;
&lt;td&gt;Trên server&lt;/td&gt;
&lt;td&gt;Trên client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chức năng&lt;/td&gt;
&lt;td&gt;Mã hóa dữ liệu&lt;/td&gt;
&lt;td&gt;Giải mã dữ liệu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bảo mật&lt;/td&gt;
&lt;td&gt;Có thể công khai&lt;/td&gt;
&lt;td&gt;Bắt buộc giữ bí mật&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Định dạng&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id_rsa.pub&lt;/code&gt;, &lt;code&gt;id_ecdsa.pub&lt;/code&gt;,...&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id_rsa&lt;/code&gt;, &lt;code&gt;id_ecdsa&lt;/code&gt;,...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Thực hành&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;image-28.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;1. Tạo cặp khóa SSH Key&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t rsa -b 2048 -C &quot;hieubt@client&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;-t rsa&lt;/code&gt;: Tạo khóa RSA.
&lt;code&gt;-b 1024&lt;/code&gt;: Độ dài khóa 1024 bit (càng cao càng bảo mật cao).
&lt;code&gt;-C &quot;hieubt@client&quot;&lt;/code&gt;: Thêm nhãn để nhận diện key.
Sau khi chạy lệnh:
&lt;code&gt;Private key&lt;/code&gt; lưu tại ~/.ssh/id_rsa (giữ bí mật).
&lt;code&gt;Public key&lt;/code&gt; lưu tại ~/.ssh/id_rsa.pub&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;image-29.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;2. Gửi Public Key từ Client sang Server&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ssh-copy-id hieubt@10.0.0.11
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Lệnh &lt;code&gt;ssh-copy-id&lt;/code&gt; tự động copy public key vào file &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; trên Server.
Nhập mật khẩu của &lt;code&gt;user hieubt&lt;/code&gt; trên Server khi được hỏi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;3. Client gửi yêu cầu SSH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ssh hieubt@10.0.0.11
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Public key đã được thêm vào file &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;ssh hieubt@10.0.0.11 &quot;cat ~/.ssh/authorized_keys&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;sẽ hiện thị nội dung đã copy
Được thực hiện tự động tại máy Server (10.0.0.11) sau lệnh ở bước 2.
&lt;img src=&quot;image-30.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;4. Client gửi yêu cầu kết nối SSH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ssh hieubt@10.0.0.11
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-31.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;như vậy đã đăng nhập thành công&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1&gt;Policy Routing + LAB trên VMware&lt;/h1&gt;
</content:encoded></item></channel></rss>