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:
- Chủ sở hữu: Người dùng đã tạo tệp hoặc thư mục.
- Nhóm: Nhóm mà chủ sở hữu thuộc về.
- 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:
- Đọ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.
- 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.
- 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ữug
đại diện cho nhómo
đại diện cho người kháca
đạ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 -l
và stat
. 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.