Quyền truy cập file và thư mục trong hệ điều hành Ubuntu (và các hệ điều hành Linux khác) rất quan trọng để đảm bảo an ninh và quản lý hệ thống. Quyền này quyết định ai có thể đọc, ghi, hoặc thực thi một file hoặc thư mục. Quyền trong Ubuntu được chia làm ba loại chính: quyền của chủ sở hữu (owner), quyền của nhóm (group), và quyền của người khác (others). Hãy cùng tìm hiểu từng khía cạnh chi tiết.

1. Cấu trúc quyền truy cập trong Ubuntu

Mỗi file hoặc thư mục trong Ubuntu đều có một bộ quyền truy cập bao gồm ba phần: quyền của chủ sở hữu, quyền của nhóm, và quyền của những người khác. Bạn có thể xem quyền này bằng cách dùng lệnh ls -l trong Terminal, ví dụ:

ls -l /path/to/directory

Output của lệnh này sẽ trông như sau:

-rw-r--r-- 1 user group 4096 Sep  1 14:35 example.txt

Ở đây, mỗi file sẽ có 10 ký tự biểu thị quyền:

  • Ký tự đầu tiên: Loại file (- là file thông thường, d là thư mục, l là link,…).
  • Ba ký tự tiếp theo: Quyền của chủ sở hữu (Owner).
  • Ba ký tự kế tiếp: Quyền của nhóm (Group).
  • Ba ký tự cuối: Quyền của người khác (Others).

Các quyền cơ bản bao gồm:

  • r: Read (quyền đọc).
  • w: Write (quyền ghi).
  • x: Execute (quyền thực thi).

Trong ví dụ trên, quyền truy cập của file example.txt là:

  • rw- : Chủ sở hữu có quyền đọc và ghi.
  • r-- : Nhóm chỉ có quyền đọc.
  • r-- : Người khác cũng chỉ có quyền đọc.

2. Thay đổi quyền truy cập với chmod

Bạn có thể thay đổi quyền truy cập cho file hoặc thư mục bằng lệnh chmod. Lệnh này có hai cách sử dụng chính: dùng ký tự hoặc số.

2.1. Sử dụng ký tự

Bạn có thể thay đổi quyền cho từng nhóm (owner, group, others) bằng cách sử dụng +, - hoặc = để thêm, xóa hoặc đặt lại quyền:

  • u: Chủ sở hữu (user).
  • g: Nhóm (group).
  • o: Người khác (others).
  • a: Tất cả (all).

Ví dụ:

Thêm quyền thực thi cho chủ sở hữu:

chmod u+x file.txt

Xóa quyền ghi cho nhóm:

chmod g-w file.txt

Đặt quyền đọc, ghi và thực thi cho tất cả mọi người:

chmod a+rwx file.txt
2.2. Sử dụng số

Sử dụng số cũng là một cách phổ biến để thay đổi quyền. Mỗi quyền sẽ được gán một giá trị:

  • r (Read) = 4.
  • w (Write) = 2.
  • x (Execute) = 1.

Bạn cộng các giá trị này lại để thiết lập quyền. Ví dụ:

  • 7 = quyền đọc, ghi, và thực thi (4+2+1).
  • 6 = quyền đọc và ghi (4+2).
  • 5 = quyền đọc và thực thi (4+1).
  • 4 = chỉ quyền đọc.

Lệnh chmod sử dụng ba số đại diện cho quyền của chủ sở hữu, nhóm và người khác. Ví dụ:

  • Thiết lập quyền đọc, ghi, và thực thi cho chủ sở hữu, đọc và thực thi cho nhóm, và chỉ đọc cho người khác:
chmod 754 file.txt

3. Thay đổi chủ sở hữu và nhóm với chown

Đôi khi bạn cần thay đổi chủ sở hữu hoặc nhóm của một file hoặc thư mục. Lệnh chown cho phép bạn làm điều này.

3.1. Thay đổi chủ sở hữu

Để thay đổi chủ sở hữu của một file hoặc thư mục, bạn sử dụng cú pháp:

chown user file.txt

Ví dụ, để thay đổi chủ sở hữu của file.txt thành người dùng john:

chown john file.txt
3.2. Thay đổi nhóm

Để thay đổi nhóm, bạn sử dụng cú pháp:

chown :group file.txt

Ví dụ, để thay đổi nhóm của file.txt thành nhóm developers:

chown :developers file.txt

Bạn cũng có thể thay đổi cả chủ sở hữu và nhóm cùng lúc:

chown john:developers file.txt

4. Quyền đặc biệt: SUID, SGID, và Sticky Bit

Ngoài các quyền cơ bản, Ubuntu còn hỗ trợ ba quyền đặc biệt là SUID, SGID, và Sticky Bit.

4.1. SUID (Set User ID)

Khi quyền SUID được thiết lập trên một file thực thi, người dùng chạy file đó sẽ tạm thời có quyền của chủ sở hữu file trong suốt quá trình chạy. Điều này hữu ích cho các chương trình hệ thống như passwd, cho phép người dùng thay đổi mật khẩu của họ mà không cần quyền root.

Thiết lập SUID bằng cách:

chmod u+s file
4.2. SGID (Set Group ID)

Quyền SGID hoạt động tương tự như SUID nhưng áp dụng cho nhóm. Khi được thiết lập trên một thư mục, tất cả các file mới được tạo bên trong thư mục đó sẽ tự động có cùng nhóm với thư mục.

Đặt quyền SGID bằng cách:

chmod g+s directory
4.3. Sticky Bit

Quyền Sticky Bit được sử dụng chủ yếu cho thư mục công cộng, chẳng hạn như /tmp. Nó đảm bảo rằng chỉ có chủ sở hữu của file mới có thể xóa hoặc thay đổi file đó, ngay cả khi người khác có quyền ghi trên thư mục.

Thiết lập Sticky Bit bằng cách:

chmod +t directory

5. Quản lý quyền trên thư mục

Quyền trên thư mục cũng hoạt động tương tự như trên file, nhưng có một số khác biệt quan trọng. Dưới đây là các quyền trên thư mục và ý nghĩa của chúng:

  • Read (r): Cho phép liệt kê các file trong thư mục.
  • Write (w): Cho phép tạo mới, xóa hoặc chỉnh sửa các file trong thư mục.
  • Execute (x): Cho phép truy cập vào thư mục (điều hướng vào thư mục).

Ví dụ, nếu bạn muốn cấp quyền đầy đủ cho chủ sở hữu và chỉ đọc và thực thi cho nhóm và người khác trên một thư mục:

chmod 755 /path/to/directory

6. Sử dụng lệnh umask để đặt quyền mặc định

Lệnh umask được sử dụng để đặt quyền mặc định khi tạo file hoặc thư mục mới. Mặc định, khi bạn tạo một file mới, hệ thống sẽ gán cho file đó một bộ quyền, và umask quyết định quyền nào sẽ bị “bỏ qua”.

Ví dụ:

umask 022

Trong trường hợp này, 022 sẽ bỏ quyền ghi cho nhóm và người khác.


Kết luận

Việc hiểu và quản lý quyền trong Ubuntu không chỉ giúp bạn bảo mật hệ thống tốt hơn mà còn giúp bạn tổ chức file và thư mục một cách hiệu quả. Các lệnh như chmod, chown, và umask là các công cụ quan trọng mà bạn nên thành thạo để quản lý quyền truy cập cho người dùng và nhóm trong hệ thống Linux.