K4ahr

Linux từ mức cơ bản nhất
i use arch btw
2025-02-06

Linux là một trong những hệ điều hành khá hay mà ai theo CNTT cũng nên học. Khác biệt với những hệ điều hành khác như Windows và macOS, Linux là một hệ điều hành mã nguồn mở, chính vì vậy mà Linux có thể được tuỳ chỉnh từ ngoài vào trong.

Nếu là người mới sử dụng, sẽ có cảm giác khó tiếp cận một chút, vì cách hoạt động của Linux khác với Windows. Đa số những tác vụ ta làm trên Linux sẽ thông qua cửa sổ lệnh Bash, hay còn gọi là Terminal. Đây sẽ là một số những yếu tố ta sẽ cần quan tâm khi sử dụng Linux, với các ví dụ sau sẽ được sử dụng qua Ubuntu, một bản phân phối phổ biến của Linux:

1. File và cấu trúc của nó

Khác với Windows và cách hoạt động là chia ổ cứng thành nhiều phân vùng với đường dẫn file riêng biệt mà ta biết như "C:" hay "D:", trong Linux tất cả các file sẽ đều chứa trong "/", hay còn được gọi là "Root directory". Root directory, hay chính là thư mục gốc, và tất cả cấu trúc và dữ liệu của Linux sẽ được chứa từ đây và bắt đầu chia ra thành nhiều thư mục con.

Nguồn: @Fireship

Đối với Windows, mỗi phân vùng ổ cứng tạo ra một thư mục gốc, nhưng trong Linux, phân vùng mà mang thư mục gốc "/", sẽ chứa những phân vùng còn lại, tuỳ thuộc vào việc phân vùng đó được mount vào đâu. Dưới đây sẽ là một ví dụ:

Chạy lệnh lsblk vào trong terminal, ta có kết quả sau: Máy ảo này hiện đang có 1 ổ cứng sda chứa 20GB và 1 ổ cứng sdb chứa 5GB. Trong đó, ổ cứng sda được chia thành 2 phân vùng là sda1sda2. Ta sẽ bỏ qua sda1 do đây là phân vùng để chứa BIOS Boot (ubuntu momento).

Hiện tại, sda2 đang có mountpoint là "/", tức là sda2 đang chứa toàn bộ đường dẫn của hệ thống, còn sdb thì chưa được mount vào máy ảo. Bây giờ ta sẽ mount ổ cứng sdb này vào trong thiết bị, với lệnh sau:

    $ sudo mount /dev/sdb /mnt

Ta sẽ thấy ổ cứng sdb đã được mount vào máy ảo, và có thể truy cập tại đường dẫn /mnt

Từ đó ta thấy được, rằng cho dù có chia ra bao phân vùng, một hệ thống Linux sẽ chỉ có một thư mục gốc "/", chứa toàn bộ dữ liệu của máy.

Vì "/" mang cấp cao nhất trong hệ thống file của Linux, nên mọi chỉnh sửa xung quanh thư mục "/" sẽ cần quyền truy cập cao nhất, hay còn gọi là "root". Thông thường, đối với những thiết bị Linux, người dùng lưu trữ và sử dụng các file sẽ được chứa trong thư mục "/home/'ten_nguoi_dung'", hay trong hệ thống được biết đến là đường dẫn "~". Những thư mục này thường sẽ được cấp quyền sửa đổi trực tiếp cho chính người dùng đó.

Ví dụ của một thư mục /home

Ngoài ra những thư mục chứa kí tự đầu trong tên thư mục bằng dấu ".", hay còn được gọi là "dotfiles" sẽ thường bị ẩn theo mặc định. Những thư mục này thường chứa các file config cho phần mềm, và được Linux ẩn để tránh bị chỉnh sửa không mong muốn.

Các thư mục dotfiles bị ẩn

Ngoài thư mục "/home", một hệ thống Linux còn có những thư mục thiết yếu sau:

Một số lệnh cơ bản để hoạt động trong thư mục của Linux:

2. Process trong Linux

Process, hay tiến trình, hiểu nhanh chính là những chương trình hay những tác vụ đang chạy. Thông thường mỗi câu lệnh được thực thi trong Linux sẽ tạo ra một process mới.

Ta sẽ sử dụng chương trình "btop" để xem những process đang chạy trong hệ thống:

Nhìn nhanh trong tấm screenshot trên, ta có thấy rằng mỗi process mang 1 PID (Process ID) riêng biệt.

Có hai loại process chính:

Ngoài ra, trong Linux có Daemon Process, là những background process liên quan đến hệ thống nhưng lại cần quyền hạn từ root và hoạt động cùng với những process khác.

3. User và group trong Linux

User và group được sử dụng với mục đích chiếm quyền điều khiểu và truy cập các file, thư mục, phần mềm, vân vân và mây mây.

Ta có thể hiểu đơn giản, 1 user (hay người dùng), chính là đại diện cho 1 người nào đó sử dụng máy tính, được phân biệt bằng một username riêng biệt và bảo vệ bằng mật khẩu, và một hệ thống Linux có thể chứa không giới hạn người dùng.

Khi khởi động thiết bị, để bắt đầu truy cập và sử dụng hệ thống, người dùng cần phải nhập hoặc chọn username và nhập mật khẩu tương ứng.

Màn hình đăng nhập Linux

Chính vì không có giới hạn là bao nhiêu user trong Linux, nên để quản lý toàn bộ tất cả các user, Linux sẽ có một Superuser, hay được biết là tài khoản "root". Tài khoản root có được quyền truy cập và sửa đổi hệ thống cao nhất, với không một giới hạn. Ngoài ra, cũng giống như Process, mỗi user có một ID riêng biệt gọi là UID, với user mang UID 0 chính là tài khoản "root".

Có hai cách để truy cập vào tài khoản root: Đăng nhập bằng username "root" ngay sau khi khởi động Linux, hoặc chạy lệnh "su" và nhập mật khẩu. Như screenshot ở dưới, mình đã truy cập từ tài khoản với username là "k4ahr" sang tài khoản "root".

Tài khoản root

Tuy nhiên, việc liên tục sử dụng tài khoản root mang rất nhiều rủi ro về bảo mật, chính vì vậy để sử dụng quyền hạn cao nhất tạm thời, ta sử dụng lệnh "sudo <lệnh_muốn_sử_dụng>"

Group (nhóm) về đơn giản là các nhóm được phân chia cho các tài khoản user. Mỗi group có thể chứa nhiều user, nhằm tối ưu dễ dàng hơn trong việc phân ra các quyền hạn cho các user, với mỗi group mang một ID riêng biệt gọi là GID.

Mặc dù mỗi máy tính cá nhân như PC thông thường hay laptop chạy Linux thường chỉ có một người sử dụng, khiến cho việc phân chia quyền hạn cho nhiều user và các group user nghe có vẻ vô nghĩa, nhưng trên thực tế vì hơn 96,4% các hệ thống server chạy Linux, nên việc phân chia user và group rất quan trọng, phục vụ cho các vấn đề an ninh và bảo mật hệ thống, cũng như giới hạn các user và group với những quyền hạn được cấp nhất định.

Và sẵn nói đến quyền hạn....

4. Phân quyền trong Linux

Trong hệ thống Linux, tất cả các hoạt động đều được dựa trên quyền hạn của ba hoạt động chính:

Ta sẽ bắt đầu bằng việc chạy lệnh "ls -l" để liệt kê phân quyền của các file trong thư mục "/home/k4ahr", hay chính là thư mục user của mình:

Ta sẽ tập chung vào cột đầu tiên, lấy ví dụ một dòng giá trị tương tự là "drwxrwxrwx", phân tích nhanh thành "d rwx rwx rwx" để cho dễ nhìn 1 chút, ta có những giữ liệu như sau:

Giờ ta sẽ phân tích ý nghĩa các ký hiệu nằm trong cụm "rwx":

Ngoài ra đối với cột thứ ba liên quan đến thực thi, Linux còn có những ký hiệu khác như "t", "s", "S", tuy nhiên ta có thể tạm thời bỏ qua những giá trị đó.

Giờ ta sẽ lấy nhanh một vài ví dụ, với hai user ở đây là "k4ahr" và "root":

Tuy vậy, hầu hết các file hay thư mục ở đây luôn có thể được ghi đè quyền hạn nếu mặc dù không có bằng một trong hai cách:

Và đó là những điều cơ bản cần hiểu về Linux. Nói chung đây mới chỉ là mức cơ bản nhất của Linux, nếu rơi vào rabbit hole của thế giới Linux thì còn rất nhiều vấn đề để chúng ta nói.

Đây là lần đầu mình viết write-up, nên nếu bạn muốn góp ý cho bài write-up này, liên hệ mình qua: [email protected]

Reference: