Học hệ điều hành linux căn bản ubuntu

Xin chào, chào mừng các bạn đến với bài đầu tiên của series Linux Căn Bản.

Trong bài hôm nay chúng ta sẽ đi tìm hiểu các khái niệm như hệ điều hành, kernel, Linux, GUI và CLI.

Các bạn cũng lưu ý là mình sẽ không đưa ra hết kiến thức về hệ điều hành chạy Linux một lần một mà chúng ta học câu lệnh đến đâu, mình sẽ trình bày kiến trúc hệ điều hành chạy Linux đến đó. Ví dụ khi học các câu lệnh như pwd, cd chúng ta sẽ học về cấu trúc directory trong Linux; khi học về chmod, chown, chúng ta sẽ học về phân cấp quyền trong Linux, v.v.

Trước khi vào bài mình cũng muốn làm rõ trước những nội dung mà series này sẽ không bao gồm:

  • Series này không dạy các kiến thức để các bạn thi các chứng chỉ như Linux+ hay LPIC
  • Đối tượng chính mà series này nhắm tới chính là những bạn chưa biết gì về hệ điều hành Linux cũng như giao diện dòng lệnh
  • Series này sẽ không đề cập tất cả mọi thứ về hệ điều hành Linux (ví dụ các thiết lập các giao thức, cách quản trị hệ thống Linux, v.v.) mà sẽ chỉ đề cập một lượng kiến thức vừa đủ để các bạn chưa biết gì có thể theo được lộ trình tự học Linux Penetration Testing căn bản của mình. Hay nói cách khác
  • Series này sẽ không đi quá sâu vào bất cứ một chủ đề nhất định nào, nhằm tránh tình trạng series bị kéo quá dài một cách không cần thiết. Tuy nhiên cũng giống như series Mạng Căn Bản, mình sẽ để tài liệu mở rộng cho những bạn muốn nghiên cứu chuyên sâu. Những bạn nào muốn tìm tài liệu học Linux chuyên sâu có thể tham khảo các sách ở cuối của bài sau.

1/ Hệ điều hành là gì? và Kernel là gì?

Mình sẽ sơ lược qua một tí về khái niệm hệ điều hành (OS – Operation System) nhé.

Nói một cách vắn tắt, phần lớn các thiết bị điện tử hiện đại (ví dụ như cái máy tính nhà bạn) đều có 2 phần đó là phần cứng và phần mềm. Phần cứng là phần bạn thấy được, bao gồm vỏ máy, ổ cứng, ram, màn hình, chip v.v.; phần mềm là phần bạn không thấy được có chức năng tận dụng sức mạnh phần cứng của thiết bị để làm một công việc nào đó.

Hệ điều hành nằm ở phần mềm. Công việc chính của hệ điều hành chính là quản lý sự vận hành của phần cứng, cung cấp tài nguyên của phần cứng để chạy phần mềm, quản lý dữ liệu, quản lý các tác vụ của những phần mềm đang chạy, tương tác với người sử dụng thiết bị, quản lý thiết bị kết nối đến v.v

Học hệ điều hành linux căn bản ubuntu
Các tác vụ thường thấy ở một hệ điều hành

Ví dụ một cách đơn giản, bạn có thể hình dung máy tính của bạn giống như một công ty cung cấp đa dịch vụ như dịch vụ chơi game, dịch vụ đánh máy, dịch vụ nghe nhạc v.v. Điểm khác biệt duy nhất đó là công ty này không tự tạo ra dịch vụ, mà chính bạn phải cài đặt công cụ tạo ra dịch vụ về cho công ty để công ty cung cấp và quản lý dịch vụ đó ngược lại cho bạn. Trong công ty đó:

  • Hệ điều hành sẽ là cấp quản lý
  • Các phần mềm ví dụ như games, nghe nhạc, xem phim v.v là sản phẩm của công ty
  • Phần cứng chính là nguồn lực của công ty ví dụ như tiền, nhân viên, nguồn nguyên liệu v.v.
  • Người dùng chính là khách hàng đồng thời là đối tác cung cấp công cụ cho công ty

Khi bạn muốn chơi game Among Us chẳng hạn, trước tiên bạn phải tìm, tải và cài đặt Among Us vào máy tính của bạn. Hệ điều hành sẽ tiếp nhận game Among Us, kiểm tra xem đuôi file cài đặt có nằm trong số những đuôi file (file extension) được hỗ trợ cho hệ điều hành hay không? nếu có, hệ điều hành sẽ tiến hành phân bổ nguồn lực phần cứng ví dụ như RAM để chạy quá trình cài đặt, CPU để xử lý các tác vụ trong khi cài đặt, ổ cứng để chứa file cài đặt v.v. đồng thời sẽ quản lý các tác vụ được tạo ra trong suốt quá trình cài đặt.

Khi bạn chơi game, hệ điều hành sẽ tìm xem Among Us được lưu ở đâu trong ổ cứng, sau đó sẽ tiến hành kiểm tra xem file có bị hư hao gì không và cần những phần cứng nào để chạy. Sau khi cung cấp đủ nguồn tài nguyên để chạy game, hệ điều hành cũng sẽ làm nhiệm vụ quản lý các tác vụ được tạo ra khi chơi game cho tới khi game được tắt.

Ngoài ra các thiết bị như bàn phím, chuột, v.v được dùng để chơi game cũng đều thuộc quản lý của hệ điều hành.

Vậy nhân của hệ điều hành (kernel) là gì?

Nếu hệ điều hành là ban quản lý của công ty, thì kernel chính là giám đốc của công ty đó và chịu trách nhiệm cho mọi hoạt động của công ty đó. Kernel có toàn quyền quản lý máy tính của bạn và là thành phần quan trọng nhất hay là bộ não của một hệ điều hành. Tất cả những tác vụ được hệ điều hành tiếp nhận đều được kernel quản lý và xử lý. (Các bạn có hứng thú về kiến trúc kernel có thể tìm hiểu thêm tại đây nhé).

2/ Linux là gì?

Nhiều bạn khi nghe tới Linux có thể lầm tưởng nó là một hệ điều hành như Windows, IOS hay Android, nhưng thật ra Linux là một kernel. Hay nói cách khác, Linux là nhân của một hệ điều hành.

2A/ Lịch sử hình thành

Linux được tạo ra vào năm 1991 bởi Linus Torvalds, lúc đó đang là một sinh viên của đại học Helsinki, Phần Lan. Ngay từ lúc Linux được tạo ra, người tạo ra nó đã quyết định thành quả của ông sẽ hoàn toàn miễn phí và là một dự án open-source, có nghĩa là ai cũng có quyền tiếp cận mã nguồn gốc của nhân Linux từ đó sử dụng, cải thiện và phát triển nên sản phẩm của riêng họ từ mã nguồn đó.

Học hệ điều hành linux căn bản ubuntu
Linus Torvalds

Tuy nhiên vào giai đoạn Linux được tạo ra, ngoài khả năng quản lý phần cứng và một giao diện cho các phần mềm sử dụng để yêu cầu tài nguyên từ phần cứng thì nó chẳng có bất cứ một chức năng nào khác cả. May mắn cho Linus và đứa con của ông, lúc này, có một nhóm các nhà nghiên cứu, đứng đầu bởi Richarh Stallman, đang thực hiện một dự án có tên GNU (GNU’s Not Unix *!) nhằm tạo ra một hệ điều hành miễn phí với những ứng dụng/tiện ích tiêu chuẩn của một hệ điều hành như đồng hồ, giao diện người dùng v.v. nhưng lại thiếu một kernel cho hệ điều hành.

Học hệ điều hành linux căn bản ubuntu
Richarh Stallman

Sau khi hai dự án trên được kết hợp chúng ta đã có một hệ điều hành hoàn chỉnh với một kernel và đầy đủ các tiện ích tiêu chuẩn mà một hệ điều hành cần có.

*Unix là một hệ điều hành thương mại được phát triển bởi AT&T. Mặc dù Unix có một vài version miễn phí dùng cho mục đích nghiên cứu và phát triển tên Solaris, bản thương mại của Unix có giá đến $1407/người dùng. GNU được tạo nên có giao diện gần giống với Unix, tuy nhiên đây là một hệ điều hành miễn phí và trong mã nguồn không chứa code của Unix, nên các nhà phát triển nên nó đã đặt cho dự án cái tên GNU nghĩa là GNU không phải Unix.

2B/ Những hệ điều hành nhân Linux

Trải qua vài chục năm phát triển, và với việc tiếp cận và được phép tùy ý chỉnh sửa, nâng cấp, thêm bớt tính năng từ mã nguồn của hai dự án GNU/Linux, nhiều nhà phân phối (hay còn được gọi là Linux distros hay Linux distributions) đã ra đời với nhiệm vụ cải thiện và phát triển thêm nhiều tính năng hơn cho các hệ điều hành chạy nhân Linux ví dụ như phần mềm nghe nhạc, quản lý email, trình duyệt, phần mềm office, v.v. Sau đó, những nhà phân phối đóng gói tất cả lại thành một hệ điều hành và phân phối nó cho người dùng. Trong đó, hai Linux distributions nổi tiếng nhất là Debian và Redhat.

Debian: Dự án Debian tập hợp những kỹ sư phần mềm với mong muốn duy trì, cải thiện và phát triển một hệ điều hành miễn phí chất lượng và mở cho đông đảo người dùng. Rất nhiều hệ điều hành đã được ra đời nhờ vào dự án Debian ví dụ như Ubuntu, Kali Linux, Parrot Linux, v.v

Red Hat Enterprise Linux: Trái ngược với Debian, Red Hat là một công ty thương mại cung cấp giải pháp nền tảng Linux cho các doanh nghiệp. Do Red Hat Linux dựa hoàn toàn vào các nguồn mở và miễn phí, nên Red Hat cũng công bố source code hệ điều hành của mình trên nền tảng của họ. Tuy nhiên, Red Hat buộc bạn phải trả tiền mới được phép download file cài đặt từ server của họ cũng như để được nhận cập nhật phần mềm, hỗ trợ sửa lỗi, hoặc đề thiết lập một chức năng phức tạp nào đó. Red Hat cũng là chủ sở hữu của hai OS khác là Fedora và CentOS.

Ngoài ra chúng ta cũng có 2 hệ điều hành khá nổi tiếng khác đó là MacOS và Android được phát triển dựa trên Linux kernel.

Trong series Linux Căn Bản, chúng ta sẽ tập trung chủ yếu vào 2 hệ điều hành Debians là Ubuntu và Kali Linux thôi nhé.

2C/ Ứng dụng

Các hệ điều chạy nhân Linux thường không phổ biến với người dùng thường mặc dù nó miễn phí khi so sánh với các hệ điều hành trả phí như MacOS hay Windows. Bạn sẽ chỉ gặp được những hệ điều hành chạy Linux khi làm việc với các hệ thống mạng, hệ thống server, trên các thiết bị IoT (Internet of Things) ví dụ như camera an ninh nối mạng, drone nối mạng v.v.

Do đặc tính mã nguồn mở và miễn phí của mình, bất cứ nhà phát triển nào cũng có thể tiếp cận mã nguồn của Linux kernel từ đó tùy biến nó để tạo ra hệ điều hành phục vụ cho mục đích mà mình mong muốn. Hiện tại đếm sơ sơ bạn có thể tìm được hơn một chục hệ điều hành chạy nhân Linux khác nhau. Ví dụ Kali Linux đã được tùy biến để có thể trở thành một nền tảng dành riêng cho việc kiểm tra an ninh hệ thống.

Các hệ điều hành chạy Linux cũng yêu cầu ít tài nguyên phần cứng hơn so với Windows, nên một số đã được tùy biến để có thể chạy trên các Microcomputers (máy tính siêu nhỏ) ví dụ như Raspberry Pi hoặc Beagle Board vốn có ổ cứng chưa tới chục GB, RAM tầm 1 GB và khả năng xử lý của CPU tương đối giới hạn.

Học hệ điều hành linux căn bản ubuntu
Hình của một Raspberry Pi

Tuy nhiên điểm bất lợi của những hệ điều hành chạy Linux đó là ứng dụng, tính năng và game các kiểu không nhiều và đa dạng bằng Windows. Chưa kể, bạn cần phải có một trình độ tra cứu Google ở mức nhất định để tìm ra cách cài đặt những ứng dụng mà mình cần cũng như sửa lỗi hệ thống xảy ra vốn là điều không phải là quá hiếm gặp trên Linux.

Ngoài lề một tí về security với các hệ điều hành nhân Linux

Một số bạn sử dụng MacOS hoặc hệ điều hành chạy Linux (mình gọi tắt là Linux cho ngắn gọn nhé) với tâm lý là hai hệ điều hành này an toàn hơn Windows và hoàn toàn không có virus. Đây là quan niệm hoàn toàn sai lầm.

Một số người viện dẫn lí do là vì với MacOS và Linux, khi bạn đăng nhập hệ thống bằng tài khoản mặc định, bạn chỉ đăng nhập được ở tài khoản người dùng bình thường với các quyền giới hạn như không thể truy cập, xem và chỉnh sửa file hệ thống chứ không phải quyền Admin (quyền cao nhất) cho phép bạn làm bất cứ điều gì bạn muốn như trên Windows. Thật ra trên Windows, bạn hoàn toàn có thể tạo account đăng nhập người dùng bình thường rồi dùng account đó để sử dụng máy tính để hạn chế rủi ro hacker chiếm quyền điều khiển toàn bộ máy.

Ngộ nhận này xảy ra là do với một số hệ điều hành Linux ví dụ như Ubuntu, việc tạo tài khoản người dùng thường sẽ diễn ra ngay lúc bạn đang cài đặt Ubuntu, còn trên Windows, bạn phải đợi cài đặt xong rồi mới vào Control Panel để tạo account người dùng thường. Nhiều bạn không biết điều này nên lầm tưởng Windows không cho phép tạo account người dùng thường.

Về việc MacOS hay Linux ít virus hơn, nó liên quan đến tư duy tấn công của các hackers nhiều hơn là do bản chất hệ điều hành. Khi các hackers chọn mục tiêu tấn công, họ sẽ ưu tiên chọn các hệ điều hành có số lượng người dùng đông đảo nhất, dẫn đến khả năng tấn công thành công trên nhiều mục tiêu ở mức cao nhất.

Hệ điều hành nào theo bạn đang có lượng người dùng đông đảo nhất hiện nay? Bạn đoán đúng rồi đấy là Windows và đứng thứ nhì là Android, điều này khiến cho cả 2 hệ điều hành này trở thành mục tiêu số một của các hackers. Tuy nhiên dạo gần đây, có lẽ do một số bài báo đăng tin người dùng MacOS và các thiết bị IOS chịu bỏ tiền mua ứng dụng nhiều hơn trên Android, nên số lượng các cuộc tấn công hướng đến người dùng MacOS và IOS cũng gia tăng đáng kể.

Với người dùng Linux, có thể ở hiện tại chưa thật sự đáng lo ngại, nhưng điều đó không có nghĩa là Linux không có mã độc. Rất nhiều mã độc đã được phát hiện hướng đến các đối tượng là người dùng Linux ở cấp độ doanh nghiệp và không có gì ngăn các hackers sử dụng chúng với người dùng thường cả. Một khi số lượng người dùng các hệ điều hành Linux gia tăng, chắc chắn các vụ tấn công cũng sẽ tăng theo.

3/ Giao diện GUI và CLI trên hệ điều hành Linux

Mỗi hệ điều hành thường có 2 giao diện để người dùng tương tác với hệ điều hành. Một là GUI (Graphical User Interface) và 2 là CLI (Command Line Interface).

Giao diện GUI chính là giao diện mà bình thường bạn vẫn hay sử dụng. Với giao diện GUI, bạn tương tác với hệ điều hành chủ yếu bằng chuột và bàn phím.

Học hệ điều hành linux căn bản ubuntu
Giao diện GUI

Còn với giao diện dòng lệnh (CLI), bạn tương tác chủ yếu thông qua các câu lệnh.

Học hệ điều hành linux căn bản ubuntu
Giao diện CLI

Gần như tất cả mọi tác vụ bạn làm được với CLI (ngoại trừ hacking) bạn đều có thể làm được với giao diện GUI của hệ điều hành. Thêm nữa do giao diện GUI thân thiện với người dùng hơn, nên bạn sẽ thấy nó rất phổ biến với người dùng không chuyên kỹ thuật.

Có vài lí do mà giao diện CLI được ưu thích bởi những chuyên gia hệ thống IT:

  1. Giao diện CLI là giao diện đầu tiên được con người tạo ra để tương tác với hệ thống máy tính thưở máy tính chưa phổ biến với người dùng phổ thông mà chỉ dành cho các nhà nghiên cứu hay các kỹ sư. Sử dụng lâu dần thành quen nên nhiều chuyên gia hàng đầu trong giới IT hiện nay vẫn thích sử dụng CLI hơn GUI.
  2. CLI nhanh hơn GUI. Thay vì bạn phải tìm ứng dụng mà mình cần và double click chuột, trên CLI bạn chỉ cần gõ một câu lệnh là xong. Với nhiều chuyên gia có tốc độ gõ câu lệnh ở mức thần thánh khác biệt giữa việc dùng CLI và GUI sẽ thấy rất rõ.
  3. Giao diện CLI nhẹ hơn rất nhiều so với GUI; do đó trên những hệ thống có phần cứng giới hạn, hoặc để hạn chế lưu lượng dữ liệu không cần thiết truyền qua Internet gây lãng phí, giao diện CLI sẽ được dùng.

Với giới hackers, phần lớn công cụ pentest ngay cả các công cụ thần thánh như Nmap và Metasploit đều sử dụng giao diện CLI, chưa kể khi xâm nhập thành công vào mục tiêu, các hoạt động sau đó như nâng cấp quyền hạn phục vụ cho các bước xâm nhập hệ thống sâu hơn đều thông qua giao diện CLI, nên việc thuần thục các câu lệnh quan trọng trong Linux là điều gần như bắt buộc.


Cám ơn các bạn đã theo dõi, ở bài sau chúng ta sẽ bắt đầu thực hành trên TryHackMe phòng Learn Linux . Các bạn nào chưa đăng ký hay chưa vào phòng thì tranh thủ vào phòng đi nhé.

Vincent Nguyễn

Source:

https://www.guru99.com/components-of-operating-system.html
https://afteracademy.com/blog/what-is-kernel-in-operating-system-and-what-are-the-various-types-of-kernel
https://www.softwaretestinghelp.com/unix-vs-linux/#:~:text=Unix%20is%20not%20free.,Hence%2C%20UNIX%20is%20extremely%20expensive.
https://www.debian.org/intro/about
https://www.quora.com/How-does-Red-Hat-make-money