Lệnh chmod trong Linux

Giới thiệu

Trong lab này, chúng ta sẽ khám phá lệnh chmod của Linux và các ứng dụng thực tế của nó trong việc quản lý quyền truy cập tệp. Chúng ta sẽ bắt đầu bằng việc hiểu các khái niệm cơ bản về quyền truy cập tệp trong Linux, bao gồm các loại quyền khác nhau (chủ sở hữu, nhóm và người khác) và các loại quyền (đọc, ghi và thực thi). Sau đó, chúng ta sẽ học cách sử dụng lệnh chmod để thay đổi quyền của tệp và thư mục, cả riêng lẻ và đệ quy. Lab này nhằm mục đích cung cấp cho bạn một sự hiểu biết toàn diện về quản lý quyền truy cập tệp trong hệ điều hành Linux.

Tìm hiểu về Quyền truy cập Tệp trong Linux

Trong bước này, chúng ta sẽ khám phá các khái niệm cơ bản về quyền truy cập tệp trong hệ điều hành Linux. Quyền truy cập tệp xác định ai có thể truy cập, sửa đổi hoặc thực thi một tệp hoặc thư mục.

Trong Linux, mỗi tệp và thư mục có ba loại quyền chính:

  1. Chủ sở hữu: Người dùng đã tạo tệp hoặc thư mục.
  2. Nhóm: Nhóm mà chủ sở hữu thuộc về.
  3. Người khác: Tất cả những người dùng khác trên hệ thống.

Mỗi loại này có ba loại quyền:

  1. Đọc (r): Cho phép người dùng xem nội dung của tệp hoặc liệt kê các tệp trong một thư mục.
  2. Ghi (w): Cho phép người dùng sửa đổi nội dung của tệp hoặc tạo/xóa các tệp trong một thư mục.
  3. Thực thi (x): Cho phép người dùng chạy tệp như một chương trình hoặc truy cập nội dung của một thư mục.

Bạn có thể xem quyền của một tệp hoặc thư mục bằng lệnh ls -l. Đầu ra sẽ hiển thị các quyền theo định dạng sau:

-rw-r--r-- 1 labex labex 0 Apr 24 12:34 example.txt

10 ký tự đầu tiên đại diện cho quyền truy cập tệp:

  • Ký tự đầu tiên cho biết loại tệp (- cho tệp thông thường, d cho thư mục).
  • 3 ký tự tiếp theo đại diện cho quyền của chủ sở hữu.
  • 3 ký tự tiếp theo đại diện cho quyền của nhóm.
  • 3 ký tự cuối cùng đại diện cho quyền của người khác.

Trong ví dụ trên, tệp example.txt có các quyền sau:

  • Chủ sở hữu (labex) có quyền đọc và ghi.
  • Nhóm (labex) có quyền đọc.
  • Những người khác có quyền đọc.

Bạn cũng có thể sử dụng lệnh stat để xem thông tin chi tiết hơn về quyền của tệp:

$ stat example.txt
  File: example.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 131075      Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-04-24 12:34:56.123456789 +0000
Modify: 2023-04-24 12:34:56.123456789 +0000
Change: 2023-04-24 12:34:56.123456789 +0000
 Birth: -

Điều này cung cấp các chi tiết bổ sung về tệp, chẳng hạn như ID người dùng (UID) và ID nhóm (GID) của chủ sở hữu, cũng như thời gian truy cập, sửa đổi và thay đổi.

Hiểu quyền truy cập tệp là rất quan trọng để quản lý quyền truy cập vào tệp và thư mục trong hệ thống Linux.

Thay đổi Quyền truy cập Tệp bằng Lệnh chmod

Trong bước này, chúng ta sẽ học cách sử dụng lệnh chmod để thay đổi quyền của tệp và thư mục trong Linux.

Lệnh chmod cho phép bạn sửa đổi quyền đọc, ghi và thực thi cho chủ sở hữu, nhóm và người khác. Cú pháp cho lệnh chmod là:

chmod [options] mode file

Ở đây, mode đại diện cho các quyền mới mà bạn muốn đặt. Bạn có thể sử dụng chế độ ký hiệu hoặc chế độ số để thay đổi quyền.

Chế độ ký hiệu:

  • u đại diện cho chủ sở hữu
  • g đại diện cho nhóm
  • o đại diện cho người khác
  • a đại diện cho tất cả (chủ sở hữu, nhóm và người khác)
  • + thêm các quyền được chỉ định
  • - xóa các quyền được chỉ định
  • = đặt các quyền được chỉ định

Ví dụ: để cấp cho chủ sở hữu quyền đọc và ghi, nhóm quyền đọc và xóa tất cả các quyền cho người khác, bạn sẽ sử dụng:

chmod u=rw,g=r,o-rwx example.txt

Chế độ số:

  • Mỗi quyền (đọc, ghi, thực thi) được gán một số: 4 cho đọc, 2 cho ghi và 1 cho thực thi.
  • Các quyền cho chủ sở hữu, nhóm và người khác được biểu thị bằng một số có 3 chữ số.

Ví dụ: để đặt quyền thành rw-r--r-- (chủ sở hữu có quyền đọc và ghi, nhóm có quyền đọc, những người khác có quyền đọc), bạn sẽ sử dụng:

chmod 644 example.txt

Hãy thử thay đổi quyền của một tệp bằng cả chế độ ký hiệu và chế độ số:

## Create a new file
touch example.txt

## Change permissions using symbolic mode
chmod u=rw,g=r,o-rwx example.txt
ls -l example.txt
## Output: -rw-r-----

## Change permissions using numeric mode
chmod 644 example.txt
ls -l example.txt
## Output: -rw-r--r--

Trong ví dụ trên, trước tiên chúng ta tạo một tệp mới example.txt, sau đó sử dụng lệnh chmod để thay đổi quyền. Chúng tôi xác minh các thay đổi bằng lệnh ls -l.

Thay đổi Quyền của Thư mục và Tệp theo Cách Đệ quy

Trong bước này, chúng ta sẽ học cách sử dụng lệnh chmod để thay đổi quyền của thư mục và tất cả các tệp bên trong chúng theo cách đệ quy.

Tùy chọn -R (đệ quy) của lệnh chmod cho phép bạn áp dụng các quyền được chỉ định cho một thư mục và tất cả các thư mục con và tệp của nó.

Hãy tạo một cấu trúc thư mục và thay đổi quyền theo cách đệ quy:

## Create a directory structure
mkdir -p ~/project/documents/reports

## Change permissions recursively
chmod -R u=rwx,g=rx,o=r ~/project/documents

## Verify the permissions
ls -l ~/project
## Output:
## drwxrwxr-x 3 labex labex 4096 Apr 24 12:34 documents
ls -l ~/project/documents
## Output:
## drwxrwxr-x 2 labex labex 4096 Apr 24 12:34 reports

Trong ví dụ trên, trước tiên chúng ta tạo một cấu trúc thư mục với một thư mục gốc documents và một thư mục con reports. Sau đó, chúng ta sử dụng lệnh chmod -R để đặt quyền theo cách đệ quy:

  • Chủ sở hữu (labex) có quyền đọc, ghi và thực thi.
  • Nhóm (labex) có quyền đọc và thực thi.
  • Những người khác có quyền chỉ đọc.

Chúng tôi xác minh các quyền bằng lệnh ls -l, lệnh này cho thấy rằng các quyền đã được áp dụng cho cả thư mục gốc và thư mục con.

Tùy chọn đệ quy đặc biệt hữu ích khi bạn cần thay đổi quyền của toàn bộ cây thư mục, đảm bảo rằng tất cả các tệp và thư mục con trong cây có các quyền mong muốn.

Tóm tắt

Trong lab này, chúng ta đã khám phá các khái niệm cơ bản về quyền truy cập tệp trong hệ điều hành Linux. Chúng ta đã học rằng mỗi tệp và thư mục có ba loại quyền chính: chủ sở hữu, nhóm và người khác, và mỗi loại có ba loại quyền: đọc, ghi và thực thi. Chúng ta cũng đã khám phá cách xem quyền của một tệp hoặc thư mục bằng các lệnh ls -lstat. Cuối cùng, chúng ta đã đề cập đến cách thay đổi quyền truy cập tệp bằng lệnh chmod, cho cả tệp và thư mục riêng lẻ, cũng như theo cách đệ quy cho tất cả các tệp và thư mục con trong một thư mục.

400+ câu lệnh phổ biến trong Linux