1. Phân quyền trong Linux là gì?
Phân quyền trong Linux là một khía cạnh quan trọng giúp quản lý quyền truy cập vào các tệp và thư mục trong hệ thống file. Hệ thống này dựa trên mô hình Unix và sử dụng các quyền cho chủ sở hữu, nhóm và người dùng khác nhau. Dưới đây là một số khái niệm cơ bản về phân quyền trong Linux:
Quyền Truy Cập Cơ Bản:
– Read (R): Cho phép đọc nội dung của tệp hoặc thư mục.
– Write (W): Cho phép sửa đổi nội dung của tệp hoặc thư mục.
– Execute (X): Cho phép thực thi tệp hoặc truy cập vào thư mục.
Quyền Áp Dụng Cho Người Dùng:
– Chủ Sở Hữu (Owner): Người tạo ra tệp hoặc thư mục, có thể quyết định quyền truy cập.
– Nhóm (Group): Các người dùng thuộc vào một nhóm có thể có các quyền riêng biệt.
– Khác (Others): Tất cả những người dùng khác ngoài chủ sở hữu và nhóm.
Lệnh Phân Quyền Cơ Bản:
– chmod: Lệnh này được sử dụng để thay đổi quyền truy cập của tệp hoặc thư mục. Ví dụ: `chmod u+x file.txt` sẽ cho phép chủ sở hữu thực thi tệp `file.txt`.
Hiển Thị Quyền Truy Cập:
– ls: Dùng với tùy chọn `-l` để hiển thị thông tin chi tiết về tệp và thư mục, bao gồm quyền truy cập. Ví dụ: `ls -l file.txt`.
Phân Quyền Đặc Biệt:
– SetUID (s): Cho phép người dùng thực thi tệp với quyền của chủ sở hữu khi thực thi tệp.
– SetGID (s): Cho phép người dùng thực thi tệp với quyền của nhóm chủ sở hữu khi thực thi tệp.
File và Thư Mục Mặc Định:
– umask: Lệnh này được sử dụng để đặt quyền mặc định cho tệp khi tạo mới.
2. Tại sao phải phân quyền trên Linux
Bảo mật Hệ Thống:
Phân quyền cho phép người quản trị kiểm soát chặt chẽ quyền truy cập vào các tệp và thư mục, từ đó ngăn chặn hiệu quả các hành vi truy cập trái phép và bảo vệ dữ liệu quan trọng.
Bảo vệ Dữ liệu Cá Nhân:
Người sử dụng có thể bảo vệ dữ liệu cá nhân của họ bằng cách thiết lập các quyền truy cập phù hợp, ngăn chặn những người khác truy cập không được.
Quản lý Tài Nguyên:
Phân quyền giúp quản trị viên hệ thống quản lý tài nguyên một cách hiệu quả hơn bằng cách giới hạn quyền truy cập của người dùng, đảm bảo rằng mỗi người dùng chỉ có thể truy cập vào những tài nguyên mà họ cần để thực hiện công việc.
Ngăn Chặn Thực Thi Nguyên Mã Độc Hại:
Bằng cách giới hạn quyền thực thi, phân quyền có thể ngăn chặn người dùng không an toàn thực thi các file độc hại, giữ cho hệ thống an toàn.
Tạo Ra Môi Trường Làm Việc An Toàn:
Đảm bảo rằng mỗi người dùng chỉ có quyền truy cập vào những tệp và thư mục cần thiết để làm việc, từ đó tạo ra một môi trường làm việc an toàn và bảo mật.
Quản Lý Nhóm:
Phân quyền cho phép quản trị viên quản lý quyền truy cập của từng nhóm người dùng, giúp tổ chức và quản lý dự án hiệu quả hơn.
Tính Linh Hoạt:
Cho phép tạo ra các tài khoản với các quyền khác nhau tùy thuộc vào nhu cầu sử dụng, tăng tính linh hoạt trong việc quản lý và điều phối hệ thống.
3. Cách xem quyền
Phân loại các File Linux
Trong Linux, mọi đối tượng đều được xem như là một file và khi sử dụng lệnh ls -l, mỗi hàng sẽ hiển thị thông tin về một file hoặc thư mục. Các ký tự đầu tiên trong đầu ra của lệnh ls -l biểu thị loại của file hoặc thư mục.
Dưới đây là một số loại file (file type) phổ biến:
- Nếu ký tự đầu tiên là -, đó là một file thường.
- Nếu ký tự đầu tiên là d, đó là một thư mục.
- Nếu ký tự đầu tiên là l, đó là symbolic link.
- Nếu ký tự đầu tiên là p, đó là đường ống (pipe).
- Nếu ký tự đầu tiên là c, đó là character device.
- Nếu ký tự đầu tiên là b, đó là block device.
- Nếu ký tự đầu tiên là s, đó là socket.
Đọc hiểu được các kí tự phân quyền.
Trong Linux, sau ký tự đầu tiên chỉ loại file hoặc thư mục, có 9 ký tự quyền (permissions). Các ký tự từ 2 đến 10 biểu thị quyền truy cập của chủ sở hữu, nhóm sở hữu và người khác.
- Các ký tự 2-4 thể hiện quyền của chủ sở hữu (owner).
- Các ký tự 5-7 thể hiện quyền của nhóm sở hữu (group).
- Các ký tự 8-10 thể hiện quyền của người khác (others).
Mỗi nhóm 3 ký tự này có thể có giá trị là:
- r (read): Quyền đọc.
- w (write): Quyền ghi.
- x (execute): Quyền thực thi (đối với thư mục, quyền này cho phép vào thư mục).
Ngoài ra, các thông tin khác bao gồm:
- Số liên kết: Số lượng liên kết tới file hoặc thư mục.
- Chủ sở hữu (owner) và Nhóm sở hữu (group): Tên người sở hữu và nhóm sở hữu của file hoặc thư mục.
- Kích thước: Kích thước của file trong bytes.
- Ngày và giờ sửa đổi: Thời điểm lần cuối cùng file hoặc thư mục được sửa đổi.
- Tên file hoặc thư mục: Tên của file hoặc thư mục đó.
Quyền đặc biệt
Ngoài quyền truy cập thông thường (read, write, execute), còn có ba quyền đặc biệt khác trong Linux là SUID (Set User ID), SGID (Set Group ID), và Sticky Bit. Các quyền đặc biệt này được áp dụng cả cho file và thư mục.
- SUID (Set User ID):
- Khi một file có quyền SUID được thiết lập, nó sẽ chạy với quyền của chủ sở hữu của file thay vì quyền của người chạy file. Điều này thường được sử dụng để cho phép người dùng thực hiện các tác vụ mà họ không có quyền thực hiện thông thường.
- Biểu thị bằng
s
trong quyền thực thi của chủ sở hữu (owner execute permission).
- SGID (Set Group ID):
- Khi một file có quyền SGID được thiết lập, nó sẽ chạy với quyền của nhóm sở hữu của file thay vì quyền của nhóm chạy file. Điều này thường được sử dụng trong các thư mục chia sẻ để đảm bảo mọi tệp được tạo trong thư mục đó đều thuộc cùng một nhóm.
- Biểu thị bằng
s
trong quyền thực thi của nhóm sở hữu (group execute permission).
- Sticky Bit:
- Khi một thư mục có Sticky Bit được thiết lập, chỉ chủ sở hữu của file có thể xóa hoặc di chuyển file trong thư mục đó, ngay cả khi người khác có quyền ghi vào thư mục đó. Thường được sử dụng trong các thư mục chia sẻ như
/tmp
để ngăn chặn việc xóa tệp bởi người dùng khác. - Biểu thị bằng
t
trong quyền thực thi của người khác (others execute permission).
- Khi một thư mục có Sticky Bit được thiết lập, chỉ chủ sở hữu của file có thể xóa hoặc di chuyển file trong thư mục đó, ngay cả khi người khác có quyền ghi vào thư mục đó. Thường được sử dụng trong các thư mục chia sẻ như
Một số lệnh xem quyền
1. Lệnh ls -l
Lệnh ls
kèm theo tùy chọn -l
hiển thị thông tin chi tiết, bao gồm quyền truy cập.
Giải Thích:
- Quyền truy cập: -rw-r–r– (Chủ sở hữu có quyền đọc và ghi; Nhóm và Người khác chỉ có quyền đọc)
- Chủ sở hữu: kienthuc
- Nhóm sở hữu: root
- Kích thước: 4470 bytes
- Ngày tạo hoặc sửa lần cuối: Jan 17 21:25
- Tệp này thuộc sở hữu của người dùng kienthuc và nhóm root. Chủ sở hữu có quyền đọc và ghi, trong khi nhóm và người khác chỉ có quyền đọc. Kích thước của tệp là 4470 bytes và đã được tạo hoặc sửa lần cuối vào ngày Jan 17 21:25.
2. Lệnh stat
Lệnh stat
cung cấp thông tin chi tiết về tệp hoặc thư mục, bao gồm quyền truy cập.
Giải Thích ở Hình
- Tên tệp:
kiemtraphanquyen.txt
- Kích thước:
4470
bytes - Blocks:
16
- IO Block:
4096
- Loại tệp:
regular file
- Device:
fd01h/64769d
- Inode:
77557
- Links:
1
- Quyền truy cập:
(0644/-rw-r--r--)
- Uid (User ID):
1002
(kienthuc) - Gid (Group ID):
0
(root) - Thời điểm quyền truy cập cuối cùng:
2024-01-17 21:25:43.781757712 -0500
- Thời điểm sửa đổi cuối cùng:
2024-01-17 21:25:43.781757712 -0500
- Thời điểm thay đổi cuối cùng:
2024-01-17 21:27:37.440620302 -0500
- Thời điểm tạo: Không có thông tin (hiển thị là
-
)
3. Lệnh ls -lh
Hiển thị kích thước file dễ đọc và quyền truy cập
Giải thích ở hình với file kiemtraphanquyen.txt
- Quyền truy cập:
-rw-r--r--
(Chủ sở hữu có quyền đọc và ghi; Nhóm và Người khác chỉ có quyền đọc). - Chủ sở hữu:
kienthuc
. - Nhóm sở hữu:
root
. - Kích thước:
4.4K
bytes. - Ngày tạo hoặc sửa lần cuối:
Jan 17 21:25
.
Lệnh này cho thấy quyền truy cập, chủ sở hữu, nhóm sở hữu, kích thước và thời gian của hai tệp trên hệ thống của bạn.
4. Lệnh getfacl
Hiển thị thông tin phân quyền chi tiết bao gồm cả quyền đặc biệt và quyền mở rộng.
Giải thích kết quả hình
getfacl kiemtraphanquyen.txt
cho thấy thông tin về Access Control List (ACL) của tệp kiemtraphanquyen.txt
. Dưới đây là giải thích các thông tin trong đầu ra:
# file: kiemtraphanquyen.txt
: Hiển thị tên của tệp mà ACL áp dụng.# owner: kienthuc
: Chủ sở hữu của tệp là người dùng có tên làkienthuc
.# group: root
: Nhóm sở hữu của tệp là nhóm có tên làroot
.user::rw-
: Quyền truy cập cho chủ sở hữu (kienthuc
) là đọc và ghi, nhưng không có quyền thực thi.group::r--
: Quyền truy cập cho nhóm sở hữu (root
) là chỉ đọc, không có quyền ghi hay thực thi.other::r--
: Quyền truy cập cho người khác (người dùng không phải là chủ sở hữu hay nhóm sở hữu) là chỉ đọc, không có quyền ghi hay thực thi.
Access Control List (ACL) là một cách mở rộng của quyền thông thường trong Linux, cho phép bạn định rõ quyền truy cập của nhiều người dùng và nhóm người dùng cho một tệp hoặc thư mục cụ thể. Trong trường hợp này, quyền truy cập chủ yếu dựa trên quyền thông thường và không có sử dụng đến các quyền đặc biệt khác như SUID, SGID, hoặc sticky bit.
5. Lệnh namei
Hiển thị thông tin về quyền truy cập và quyền sở hữu của tất cả các thành phần trong một đường dẫn.
Giải thêm kết quả ở hình
f: namnh/kiemtraphanquyen.txt
: Đây là đường dẫn của tệpkiemtraphanquyen.txt
.d namnh
: Đây là thư mục cha của tệpkiemtraphanquyen.txt
, có tên lànamnh
.- kiemtraphanquyen.txt
: Đây là tên của tệpkiemtraphanquyen.txt
.
Như vậy, kiemtraphanquyen.txt
nằm trong thư mục namnh
6. Lệnh lsattr
Hiển thị và thay đổi thuộc tính mở rộng của tệp hoặc thư mục (nếu có).
Lệnh lsattr kiemtraphanquyen.txt
được sử dụng để hiển thị các thuộc tính của tệp hoặc thư mục trong hệ thống file ext2/ext3/ext4. Trong trường hợp của bạn, kết quả là -------------e--
:
-------------
: Đây là phần của thuộc tính mà không có bất kỳ thuộc tính nào được thiết lập. Các dấu gạch ngang đại diện cho không có thuộc tính nào được thiết lập.e
: Đây có thể là một trong những ký tự mở rộng của thuộc tính, tuy nhiên, để biết ý nghĩa chính xác của nó, bạn có thể cần tham khảo tài liệu hệ thống file cụ thể hoặc sử dụng lệnhman chattr
để xem tất cả các ký tự mở rộng có thể xuất hiện.
Thuộc tính của tệp kiemtraphanquyen.txt
có vẻ không có các thuộc tính đặc biệt được thiết lập.
Trong quá trình khám phá Linux, việc hiểu rõ về phân quyền là một bước quan trọng. Quen thuộc với cấu trúc phân quyền thông thường như đọc (read), ghi (write), và thực thi (execute) là chìa khóa mở cửa để khai thác hết tiềm năng của hệ điều hành này. Hãy cân nhắc tham khảo và tuân thủ hướng dẫn đầy đủ.