youhoc
Linux

icon picker
Day 3: File Permission & Ownership

Quyền và Sở hữu Tập tin
Hệ thống phân quyền trong Linux - một trong những nền tảng quan trọng nhất của bảo mật Linux. Hiểu rõ cách hoạt động của quyền tập tin sẽ giúp quản lý máy chủ Linux hiệu quả và an toàn.

3.1. Cấu trúc quyền trong Linux

Khi sử dụng lệnh ls -l, sẽ thấy thông tin về quyền hiển thị ở cột đầu tiên, có dạng như sau:

Giải thích cấu trúc quyền:

Ký tự đầu tiên: Loại file
-: File thông thường
d: Thư mục
l: Symbolic link
c: Character device
b: Block device
s: Socket
p: Named pipe
Ba ký tự tiếp theo (rwx): Quyền của owner (chủ sở hữu)
Ba ký tự tiếp theo (r-x): Quyền của group (nhóm)
Ba ký tự cuối cùng (r--): Quyền của others (người dùng khác)

Ý nghĩa của từng quyền:

r (read): Quyền đọc
Đối với file: Cho phép xem nội dung file
Đối với thư mục: Cho phép liệt kê nội dung thư mục (xem tên file)
w (write): Quyền ghi
Đối với file: Cho phép sửa đổi nội dung file
Đối với thư mục: Cho phép tạo, xóa và đổi tên file trong thư mục
x (execute): Quyền thực thi
Đối với file: Cho phép chạy file như một chương trình
Đối với thư mục: Cho phép truy cập vào thư mục (cd) và truy cập các file bên trong

Biểu diễn số:

Mỗi quyền có giá trị số:
r = 4
w = 2
x = 1
Tổng của ba giá trị này tạo thành một chữ số octal:
rwx = 4+2+1 = 7 (đầy đủ quyền)
r-x = 4+0+1 = 5 (quyền đọc và thực thi)
r-- = 4+0+0 = 4 (chỉ quyền đọc)
--- = 0 (không có quyền)
Ví dụ: Quyền rwxr-xr-- được biểu diễn bằng số là: 754

Bảng tổng hợp quyền file phổ biến:

Giá trị
Biểu diễn
Mô tả và Mục đích sử dụng
0644
rw-r--r--
File thông thường (chủ sở hữu đọc+ghi, người khác chỉ đọc)
0640
rw-r-----
File có giới hạn (chủ sở hữu đọc+ghi, nhóm chỉ đọc, người khác không quyền)
0600
rw-------
File riêng tư (chỉ chủ sở hữu đọc+ghi)
0666
rw-rw-rw-
File được chia sẻ (tất cả có quyền đọc và ghi)
0444
r--r--r--
File chỉ đọc cho tất cả
0755
rwxr-xr-x
Script/chương trình thực thi (chủ sở hữu toàn quyền, người khác đọc+thực thi)
0750
rwxr-x---
Script/thư mục giới hạn (chủ sở hữu toàn quyền, nhóm đọc+thực thi)
0700
rwx------
Thư mục/script riêng tư (chỉ chủ sở hữu truy cập)
0711
rwx--x--x
Thư mục cho phép người khác đi qua nhưng không liệt kê nội dung
0710
rwx--x---
Thư mục cho phép nhóm đi qua nhưng không liệt kê nội dung
0777
rwxrwxrwx
Quyền đầy đủ cho mọi người (không khuyến khích vì lý do bảo mật)
0760
rwxrw----
Chủ sở hữu toàn quyền, nhóm đọc+ghi, người khác không có quyền
0770
rwxrwx---
Chủ sở hữu và nhóm có toàn quyền, người khác không có quyền
0774
rwxrwxr--
Chủ sở hữu và nhóm có toàn quyền, người khác chỉ có quyền đọc
There are no rows in this table
Quyền 644 (rw-r--r--) là một trong những quyền phổ biến nhất cho các file thông thường, cho phép chủ sở hữu đọc và ghi file, trong khi nhóm và những người khác chỉ có thể đọc file.

3.2. Thay đổi quyền với chmod

Lệnh chmod (change mode) dùng để thay đổi quyền của file và thư mục.

Sử dụng chế độ ký tự:

Trong đó:
u: user/owner
g: group
o: others
a: all (tất cả)
+: thêm quyền
-: bỏ quyền
=: đặt chính xác quyền

Sử dụng chế độ số:

Áp dụng đệ quy cho thư mục:

3.3. Thay đổi sở hữu với chown

Lệnh chown (change owner) dùng để thay đổi chủ sở hữu và nhóm của file và thư mục.
# Thay đổi chủ sở hữu
sudo chown username filename

# Thay đổi cả chủ sở hữu và nhóm
sudo chown username:groupname filename

# Chỉ thay đổi nhóm (có thể dùng chgrp)
sudo chown :groupname filename
# hoặc
sudo chgrp groupname filename

# Áp dụng đệ quy cho thư mục
sudo chown -R username:groupname directory_name

3.4. Quyền đặc biệt (Special Permissions)

SUID (Set User ID) - 4000

Khi đặt trên file thực thi, file sẽ chạy với quyền của chủ sở hữu file thay vì người dùng đang chạy
Hiển thị: rws thay vì rwx trong quyền của owner
Ví dụ: /usr/bin/passwd có SUID bit để người dùng có thể thay đổi mật khẩu

SGID (Set Group ID) - 2000

Khi đặt trên file thực thi, file sẽ chạy với quyền của nhóm sở hữu file
Khi đặt trên thư mục, các file mới tạo trong thư mục sẽ kế thừa nhóm của thư mục
Hiển thị: rws thay vì rwx trong quyền của group

Sticky Bit - 1000

Chủ yếu sử dụng cho thư mục
Ngăn người dùng xóa file của người khác trong thư mục, ngay cả khi họ có quyền ghi vào thư mục
Hiển thị: t thay vì x trong quyền của others
Ví dụ: /tmp thường có sticky bit

3.5. Ví dụ thực tế về phân quyền

1. Thiết lập thư mục web server

2. Thiết lập thư mục chia sẻ cho một nhóm

3. Bảo vệ file cấu hình nhạy cảm

Thực hành

Tạo một file script và đặt quyền thực thi cho nó:
Tạo một thư mục và đặt quyền cho nhóm có thể ghi vào:
Thay đổi quyền sở hữu file và thư mục:
Đặt SGID bit cho một thư mục chia sẻ:
Em có thắc mắc gì về quyền trong Linux không? Đây là một phần rất quan trọng khi quản lý máy chủ Linux, vì nó liên quan trực tiếp đến bảo mật và khả năng truy cập của người dùng.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.