Laptop

13 điều quan trọng cần biết về quyền truy cập tệp trên Linux

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 1

Quyền truy cập tệp là cốt lõi của hầu hết mọi thứ bạn làm trên máy Linux, từ xem PDF đến lưu ảnh và chạy ứng dụng. Mô hình cốt lõi giúp mọi thứ đơn giản hơn, nhưng vẫn có một vài chi tiết cơ bản để bắt đầu.

1. Quyền truy cập kiểm soát những gì bạn có thể làm với một tệp

Phần lớn thời gian bạn xử lý các quyền truy cập là khi bạn cố gắng lưu hoặc đọc một tệp. Mỗi tệp (về mặt kỹ thuật, mỗi inode) đều có một bộ quyền truy cập được đính kèm. Chúng xác định xem bạn (hoặc bất kỳ người dùng nào khác) có thể đọc từ tệp đó hay ghi vào tệp đó hay không.

Nếu bạn không có quyền đọc (read) một tệp, bạn sẽ thấy lỗi khi cố gắng mở nó. Tương tự, một tệp không có quyền ghi (write) sẽ gây ra lỗi nếu bạn cố gắng lưu vào đó:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 9

2. Các bộ quyền truy cập gồm ba bộ, mỗi bộ có ba quyền

Quyền truy cập có hai phần: hành động và tập hợp người dùng. Ba hành động—đọc (r), ghi (w) và thực thi (x)—xác định những gì có thể được thực hiện với một tệp, trong khi các tập hợp người dùng xác định ai có thể làm điều đó.

Mọi tệp trên hệ thống của bạn đều có một chủ sở hữu (owner) và một nhóm (group). Điều này có nghĩa là bạn có thể có một trong ba mối quan hệ với một tệp: bạn là chủ sở hữu của nó, bạn là thành viên của nhóm của nó, hoặc không thuộc hai trường hợp trên.

Vì vậy, khi nói đến quyền truy cập, có ba bộ gồm ba quyền, và bất kỳ sự kết hợp nào cũng có thể xảy ra. Tệp của bạn có thể được mọi người đọc, không ai có thể ghi ngoại trừ chủ sở hữu, thành viên của nhóm có thể thực thi, v.v.

3. Các nhãn của chúng có thể khó hiểu

Bạn sẽ thường thấy các quyền truy cập được hiển thị dưới dạng một chuỗi gồm 9 ký tự, như thế này:

rwxr-x--x

Đây là một dạng viết tắt hiển thị trạng thái của ba quyền truy cập cho mỗi tập hợp người dùng mà chúng áp dụng. Nó bao gồm, từ trái sang phải, trạng thái đọc, ghi và thực thi lần lượt cho người dùng (user), nhóm (group), và khác (other). Một chữ cái có nghĩa là quyền được đặt (có). Dấu gạch nối (-) có nghĩa là quyền không được đặt (không có).

Điều quan trọng cần nhớ là “o” là viết tắt của “other” (người khác), chứ không phải “owner” (chủ sở hữu). Điều này dễ quên; hãy cố gắng nhớ rằng “u” phải là “user” (người dùng), khi đó ý nghĩa của “o” sẽ dễ dàng suy luận hơn bằng cách loại trừ.

Phân tích chuỗi quyền truy cập trên thành các bộ riêng lẻ cho ta:

  • người dùng (user): rwx
  • nhóm (group): r-x
  • khác (other): --x

Điều này có nghĩa là chủ sở hữu tệp có toàn quyền kiểm soát (đọc, ghi, thực thi), các thành viên khác của nhóm tệp có thể đọc và thực thi nó, trong khi mọi người dùng khác chỉ có thể thực thi nó.

4. Bạn có thể thấy chúng bằng lệnh ls

Cách dễ nhất để xem quyền truy cập tệp trên dòng lệnh là sử dụng ls, lệnh liệt kê tệp. Theo mặc định, ls sẽ chỉ hiển thị tên tệp, nhưng tùy chọn -l hiển thị tệp ở định dạng dài (long format), bao gồm chi tiết quyền:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 8

Bạn sẽ có thể nhận ra chuỗi ký tự quyền truy cập ngay từ đầu; chúng là chín chữ cái nằm giữa ký tự dẫn đầu “d/-“ và ký tự theo sau “@” ở đầu mỗi dòng.

5. Bạn cũng có thể sử dụng lệnh stat để xem quyền truy cập tệp

Mặc dù ls là cách dễ nhất để xem quyền truy cập, nhưng stat có lẽ là tốt nhất. Lệnh stat giống như một phiên bản cấp thấp hơn của ls, một phiên bản cho bạn thấy nhiều dữ liệu hơn. Nó cũng linh hoạt hơn một chút, vì vậy bạn có thể điều chỉnh đầu ra theo ý muốn.

Đây là một lệnh hiển thị tên và chuỗi quyền truy cập:

stat -c '%n %A' filename

Các phiên bản stat không tương thích đang được sử dụng trên các hệ thống khác nhau. Lệnh trên hoạt động trên Ubuntu, nhưng trên macOS, lệnh tương đương stat -f '%N %Sp' filename. Hãy đảm bảo tham khảo trang hướng dẫn (man page) của stat để kiểm tra các tùy chọn mà nó hỗ trợ.

6. Bạn có thể sửa đổi quyền truy cập bằng lệnh chmod

chmod là viết tắt của “change mode” (thay đổi chế độ), và nó là chìa khóa để cập nhật quyền truy cập tệp. Do có nhiều cài đặt khác nhau, chmod có thể có vẻ hơi khó khăn, nhưng tin tốt là nó hỗ trợ…

Đây là một ví dụ đơn giản:

chmod a+r myfile

Lệnh này thêm quyền đọc (r) cho tất cả người dùng (a) vào tệp myfile. Trong đối số "a+r", a là viết tắt của “all users” (tất cả người dùng) và là một lối tắt cho "ugo" (user – người dùng, group – nhóm, other – người khác). Bạn có thể sử dụng bất kỳ sự kết hợp nào của ba chữ cái này. Tiếp theo, ký hiệu + là viết tắt của “add” (thêm). Các tùy chọn khác là - để xóa quyền, hoặc = để đặt chính xác quyền. Cuối cùng, r trong ví dụ này là viết tắt của “read” (đọc); nó có thể là bất kỳ sự kết hợp nào của "r", "w" (cho ghi – write), và "x" (cho thực thi – execute).

Bạn thậm chí có thể đặt nhiều quyền cùng một lúc:

chmod u=rw,og=r new_file.txt

Lệnh này cho phép chủ sở hữu (u) đọc và ghi (rw) tệp, trong khi mọi người khác (og) chỉ có thể đọc (r) nó. Không ai có thể thực thi nó.

Bạn nên nhớ rằng bạn chỉ có thể sử dụng chmod để sửa đổi các tệp mà bạn sở hữu (trừ khi bạn có quyền root).

Bạn nên tìm hiểu những điều cơ bản về chmod và ghi nhớ một vài trường hợp phổ biến. Nhưng lệnh này rất mạnh mẽ và bạn có thể sử dụng chmod theo nhiều cách khác nhau.

7. Bạn có thể sử dụng quyền thực thi để làm cho chương trình có thể chạy được

Chúng ta đã đề cập đến quyền thực thi mà chưa thực sự giải thích nó. Quyền này thực sự kiểm soát xem bạn có thể chạy một tệp như một lệnh hay không. Thông thường, bạn sẽ sử dụng quyền này với hai loại tệp: tệp nhị phân (binaries) và script shell. Tệp nhị phân là các chương trình đã được biên dịch, được kernel chạy, trong khi script được chạy bởi một trình thông dịch (interpreter), chẳng hạn như shell hoặc ngôn ngữ script.

Bạn nên lưu ý rằng việc xóa bit thực thi không ngăn cản ai đó chạy một chương trình. Mặc dù họ sẽ không thể chạy nó bằng cách trực tiếp gõ tên tệp của nó như một lệnh, nhưng nó vẫn có thể chạy được bằng cách truyền tệp làm đầu vào cho trình thông dịch của nó. Vì lý do này, bạn nên coi bit thực thi như là một lưới an toàn hơn là một ổ khóa. Nó ở đó để ngăn mọi người vô tình chạy một chương trình, chứ không phải để khiến họ không thể làm như vậy.

8. Quyền truy cập là lưới an toàn, không phải sự đảm bảo

Thực ra, bit thực thi không phải là quyền duy nhất không phải là sự đảm bảo chắc chắn như bạn mong đợi. Bạn nên thực sự nghĩ về quyền truy cập giống như một tập hợp các thanh chắn bảo vệ hơn là một bộ dây đai an toàn nghiêm ngặt.

Hãy lấy trường hợp đơn giản của một tệp chỉ đọc: bạn vẫn có thể xóa nó không?

touch foo
chmod a-w foo
rm foo

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 7

Lệnh rm vẫn cho phép bạn xóa một tệp, ngay cả khi bạn không thể ghi vào nó! Điều này có vẻ phản trực giác, nhưng nó thực sự chỉ là tác dụng phụ của cách thức hoạt động của quyền truy cập. Nếu bạn sở hữu một tệp, bạn luôn có thể sử dụng chmod để đạt được bất kỳ quyền truy cập nào bạn muốn. Vì vậy, điều hợp lý là các công cụ như rm cho bạn tùy chọn ghi đè quyền truy cập tệp trong trường hợp đặc biệt này.

Một lần nữa, quyền truy cập tệp là để ngăn bạn vô tình làm điều sai trái. Chúng ở đó để ngăn bạn xóa một tài liệu quan trọng một cách bất cẩn, chứ không phải để đảm bảo rằng tài liệu đó vẫn còn trên đĩa của bạn cho đến hết đời.

9. Quyền truy cập có ý nghĩa khác đối với thư mục

Vì Linux coi thư mục là một loại tệp khác, chúng cũng có thể có quyền truy cập. Tuy nhiên, do bản chất của chúng, quyền truy cập trên thư mục có ý nghĩa hơi khác một chút.

  • Quyền đọc (r) cho phép bạn đọc nội dung của một thư mục, tức là danh sách các tệp mà nó chứa. Điều này có nghĩa là, ví dụ, bạn không thể chạy ls trên một thư mục mà bạn không thể đọc:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 6

  • Quyền ghi (w) cho phép bạn ghi nội dung của một thư mục. Ví dụ, điều này kiểm soát xem bạn có thể tạo một tệp mới bên trong thư mục hay đổi tên một tệp bên trong đó hay không:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 5

  • Quyền thực thi (x) hoàn toàn khác; thực sự không có sự tương đồng nào hợp lý cho việc chạy một thư mục! Vì vậy, Linux gán cho quyền này đối với thư mục một ý nghĩa khác, chẳng hạn như “truy cập thư mục”.

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 4

10. Hầu hết các trình duyệt tệp đồ họa cũng cho phép bạn quản lý chúng

Ứng dụng Files của Ubuntu, giống như nhiều trình duyệt tệp GUI khác, cho phép bạn xem quyền truy cập cho một tệp nhất định thông qua menu ngữ cảnh Properties (Thuộc tính) của nó:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 3

Quyền truy cập và trạng thái Thực thi được hiển thị ở dưới cùng của hộp thoại này. Bạn có thể nhấp vào hàng Quyền truy cập để xem chi tiết quyền đầy đủ và cập nhật trạng thái đọc/ghi cho bất kỳ tập hợp người dùng nào:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 2

Finder của macOS hiển thị quyền truy cập trong hộp thoại Get Info (Lấy thông tin) cho bất kỳ tệp nào:

13 dieu quan trong can biet ve quyen truy cap tep tren Linux 1

Các quyền hiển thị cho người dùng, nhóm và người khác trong các hàng từ trên xuống dưới. Lưu ý rằng Finder không cho phép bạn thay đổi quyền thực thi.

11. Quyền truy cập có thể đặc biệt

Ngoài các quyền đọc, ghi và thực thi mà chúng ta đã thấy cho đến nay, còn có một số quyền đặc biệt mở rộng cơ chế cơ bản. Chúng được gọi là SUID, SGID và sticky bit.

  • Các quyền SUID SGID đều nâng cao trạng thái của một tệp thực thi, sử dụng đặc quyền của chủ sở hữu hoặc nhóm của tệp thay vì người dùng chạy nó. Điều này cho phép một số chương trình nhất định, như lệnh su cho phép bạn hành động như một người dùng khác, hoạt động hiệu quả.
  • Sticky bit là đặc biệt đối với thư mục và đảm bảo rằng người dùng không thể xóa tệp của nhau khi một thư mục được chia sẻ.

Bạn có thể đặt các quyền đặc biệt này bằng cách sử dụng chmod, mặc dù bạn sẽ hiếm khi cần trừ khi bạn đang thực hiện vai trò quản trị hệ thống (sysadmin):

chmod u+s filename
chmod +t filename

Bạn có nhiều khả năng gặp phải các quyền đặc biệt này trong danh sách tệp, nơi chữ cái s có thể thay thế một chữ x cho người dùng hoặc nhóm, hoặc chữ t có thể xuất hiện thay vì chữ x cuối cùng.

12. Bạn có thể biểu diễn quyền truy cập bằng ký hiệu bát phân (Octal Notation)

Cho đến nay, chúng ta đã đề cập đến chuỗi quyền truy cập nhiều lần, từ đầu ra của ls đến việc sử dụng chmod. Nhưng các chữ viết tắt “rwx”“ugo” là những cách viết tắt tiện lợi cho một thứ thậm chí còn khó hiểu hơn: biểu diễn bát phân (octal representation).

Nói tóm lại, như một sự thay thế cho: chmod u=rwx,g=rwx,o=rx filename, bạn có thể viết:

chmod 775 filename

Cách này ngắn hơn nhiều. Ở định dạng này, bạn đang cung cấp một chuỗi 3 số, mỗi số nằm giữa 0 và 7, lần lượt cho tập hợp người dùng, nhóm và người khác.

Mỗi số đại diện cho sự kết hợp của các quyền đọc, ghi và thực thi. Chỉ riêng quyền thực thi có giá trị là 1, trong khi ghi 2 đọc 4. Các sự kết hợp cộng tổng các giá trị đó lại, vì vậy 3 là 1 (thực thi) và 2 (ghi), trong khi 7 là cả ba quyền.

Mặc dù định dạng này phức tạp hơn một chút, nhưng nó cũng tiết kiệm rất nhiều thao tác gõ. Sau một thời gian thực hành, có lẽ bạn sẽ biết tám giá trị khác nhau có nghĩa là gì, và một số sự kết hợp đặc biệt phổ biến, ví dụ: 775 hoặc 666.

13. Lệnh umask kiểm soát quyền mặc định

Bạn đã biết về việc thay đổi quyền truy cập của tệp bằng cách sử dụng chmod. Nhưng quyền truy cập của một tệp được đặt ngay từ đầu như thế nào?

1. Đầu tiên, hệ thống của bạn sẽ có các giá trị mặc định hợp lý, có thể trông giống như sau:

    • rw-rw-rw- cho các tệp; mọi người đều có thể đọc và ghi tệp.
    • rwxrwxrwx cho các thư mục; mọi người đều có thể đọc, ghi và truy cập thư mục.

2. Tiếp theo, hệ thống của bạn sẽ kiểm tra giá trị của umask và tiếp tục loại bỏ bất kỳ quyền nào mà nó chỉ định. umask luôn loại bỏ quyền; nó không thêm bất kỳ quyền nào.

Trên macOS, umask của tôi là 022, nó loại bỏ quyền ghi từ nhóm và người khác, vì vậy các tệp tôi tạo có quyền rw-r--r--. Trên Ubuntu, nó là 002, nó loại bỏ quyền ghi từ người khác, vì vậy các tệp tôi tạo là rw-rw-r--.

14. Kết luận

Hiểu biết về quyền truy cập tệp trên Linux là chìa khóa để quản lý hệ thống an toàn và hiệu quả, từ việc thiết lập phân quyền chính xác, sử dụng lệnh chmod, chown đến bảo vệ dữ liệu nhạy cảm. 13 điều quan trọng được trình bày trong bài viết đã cung cấp nền tảng vững chắc để bạn kiểm soát quyền truy cập, đảm bảo an ninh và tối ưu hóa quy trình làm việc trên Linux. Hy vọng bài viết này đã giúp bạn tự tin hơn trong việc quản lý tệp, sẵn sàng khai thác sức mạnh của Linux một cách chuyên nghiệp và bảo mật!

Xem thêm: Hướng dẫn cách cài đặt tệp CAB để cập nhật và trình điều khiển trên Windows 10

Nếu bạn cần laptop, PC cấu hình mạnh hoặc phụ kiện công nghệ chất lượng cao để làm việc với Linux mượt mà, hãy ghé qua COHOTECH – địa chỉ uy tín cung cấp thiết bị công nghệ và dịch vụ hỗ trợ kỹ thuật chuyên nghiệp. Đội ngũ COHOTECH cam kết mang đến giải pháp tối ưu và những ưu đãi hấp dẫn để bạn chinh phục mọi thử thách công nghệ. Theo dõi chúng tôi để khám phá thêm nhiều mẹo hay và sản phẩm độc quyền!

Bạn đã áp dụng mẹo nào về quyền truy cập tệp trên Linux? Hãy chia sẻ kinh nghiệm hoặc đặt câu hỏi trong phần bình luận bên dưới nhé! Nếu bài viết này hữu ích, đừng quên like, share và lan tỏa đến bạn bè để cùng làm chủ hệ thống Linux an toàn hơn. Cảm ơn bạn đã đọc và hẹn gặp lại!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *