Linux, theo định nghĩa, là một hệ điều hành đa người dùng dựa trên các khái niệm của Unix về quyền sở hữu file và các quyền truy cập, nhằm mang lại sự bảo mật ở cấp độ hệ thống tập tin. Để quản trị một máy chủ đám mây một cách hiệu quả, bạn cần hiểu rõ cách thức hoạt động của quyền sở hữu và quyền truy cập. Mặc dù có rất nhiều chi tiết tinh vi trong việc xử lý quyền sở hữu và truy cập, bài hướng dẫn này sẽ cung cấp cho bạn một cái nhìn tổng quan đầy đủ.
Để quản lý phân quyền Linux hiệu quả, bạn cần một môi trường ổn định. Mua VPS tại DataOnline cung cấp máy chủ mạnh mẽ, hỗ trợ cài đặt Linux dễ dàng, đảm bảo hiệu suất tối ưu cho việc học và thực hành quản lý quyền truy cập. Khám phá các gói VPS phù hợp ngay hôm nay!
Bài hướng dẫn này sẽ trình bày cách xem và hiểu quyền sở hữu và quyền truy cập trong linux. Nếu bạn đang tìm kiếm hướng dẫn về cách chỉnh sửa quyền truy cập, hãy xem bài Các quyền cơ bản trong Linux và cách sử dụng Umask trên VPS.
Yêu cầu
Hãy đảm bảo bạn đã nắm vững các khái niệm được trình bày trong các bài hướng dẫn trước trong loạt bài này:
Để theo dõi bài hướng dẫn này, bạn cần có quyền truy cập vào một máy chủ đám mây.
Về người dùng
Như đã đề cập ở phần giới thiệu, linux là một hệ thống đa người dùng. Bạn nên hiểu các nguyên tắc cơ bản về người dùng và nhóm trong linux trước khi tìm hiểu về quyền sở hữu và truy cập, vì đó chính là các đối tượng mà quyền sở hữu và truy cập được áp dụng.
Có hai loại người dùng trong linux: người dùng hệ thống và người dùng thông thường. Theo truyền thống, người dùng hệ thống được sử dụng để chạy các tiến trình không tương tác hoặc chạy nền, trong khi người dùng thông thường dùng để đăng nhập và thực thi các tiến trình một cách tương tác. Khi bạn lần đầu tiên khởi tạo và đăng nhập vào hệ thống linux, bạn sẽ nhận thấy rằng có nhiều người dùng hệ thống đã được tạo sẵn để chạy các dịch vụ mà hệ điều hành phụ thuộc vào – điều này là hoàn toàn bình thường.
Bạn có thể xem tất cả người dùng trên hệ thống bằng cách xem nội dung file /etc/passwd. Mỗi dòng trong file này chứa thông tin về một người dùng, bắt đầu bằng tên người dùng (tên xuất hiện trước dấu hai chấm đầu tiên). Ví dụ, để in nội dung file passwd, bạn dùng lệnh:
cat /etc/passwd
Output
Ngoài hai loại người dùng thông thường, còn có người dùng siêu cấp, hay còn gọi là người dùng root, có khả năng vượt qua mọi hạn chế về quyền sở hữu và truy cập file. Trong thực tế, điều này có nghĩa là người dùng siêu cấp có quyền truy cập vào tất cả mọi thứ trên máy chủ của họ. Người dùng này được sử dụng để thực hiện các thay đổi trên toàn hệ thống.
Ngoài ra, bạn cũng có thể cấu hình các tài khoản người dùng khác có khả năng tạm thời nhận quyền “siêu cấp”. Điều này thường được gọi là có quyền sudo, vì các người dùng có quyền tạm thời này sẽ thực hiện các lệnh cấp quản trị bằng cách thêm sudo vào trước các lệnh cần quyền cao.
Thực tế, việc tạo một người dùng thông thường có quyền sudo để thực hiện các tác vụ quản trị hệ thống được coi là thực hành tốt, giúp bạn hạn chế sử dụng tài khoản root một cách cẩn trọng hơn.
Về nhóm
Nhóm là tập hợp của một hoặc nhiều người dùng. Một người dùng thuộc về một nhóm mặc định và có thể là thành viên của bất kỳ nhóm nào khác trên máy chủ.
Bạn có thể xem tất cả các nhóm trên hệ thống và các thành viên của chúng bằng cách xem nội dung file /etc/group (giống như file /etc/passwd đối với người dùng). Bài viết này không đề cập đến quản lý nhóm.
Bây giờ, khi bạn đã hiểu người dùng và nhóm là gì, hãy cùng tìm hiểu về quyền sở hữu và truy cập file!
Xem quyền sở hữu và truy cập
Trong linux, mỗi file đều được sở hữu bởi một người dùng và một nhóm, và có quyền truy cập riêng. Hãy cùng xem cách để xem quyền sở hữu và truy cập của một file.
Cách phổ biến nhất để xem quyền của một file là dùng lệnh ls với tùy chọn liệt kê chi tiết -l, ví dụ:
Nếu bạn muốn xem quyền của tất cả các file trong thư mục hiện tại, hãy chạy lệnh:
Lưu ý: Nếu bạn đang ở trong thư mục home trống và chưa tạo file nào, bạn có thể xem nội dung thư mục /etc bằng cách chạy:
Dưới đây là ví dụ một ảnh chụp màn hình của kết quả ls -l, với nhãn cho từng cột:
Mỗi file liệt kê chế độ (chứa thông tin quyền truy cập), chủ sở hữu, nhóm và tên file. Để giải thích các ký tự và dấu gạch nối này, chúng ta cùng phân tích trường chế độ (mode) thành các phần.
Hiểu về chế độ (Mode)
Để giải thích ý nghĩa của các nhóm ký tự, sau đây là phân tích metadata chế độ của file đầu tiên trong ví dụ trên:
Loại file
Trên Linux, có hai loại file: file bình thường và file đặc biệt. Loại file được biểu thị bởi ký tự đầu tiên của chế độ (mode) của một file – trong hướng dẫn này, ký tự đó được gọi là “trường loại file”.
File bình thường có thể được nhận diện bằng dấu gạch ngang (-) trong trường loại file. File bình thường có thể chứa dữ liệu hoặc bất kỳ thứ gì khác. Chúng được gọi là file bình thường, hoặc file thông thường, để phân biệt với file đặc biệt.
File đặc biệt có thể được nhận diện bởi một ký tự không phải dấu gạch ngang, chẳng hạn như một chữ cái, trong trường loại file, và được hệ điều hành xử lý khác so với file bình thường. Ký tự xuất hiện trong trường loại file chỉ ra loại file đặc biệt mà file đó thuộc về. Ví dụ, một thư mục – loại file đặc biệt phổ biến nhất – được nhận diện bởi ký tự d xuất hiện trong trường loại file (như trong ảnh chụp màn hình trước đó). Ngoài ra, còn có một số loại file đặc biệt khác.
Lớp quyền truy cập
Từ sơ đồ, bạn có thể thấy rằng trường chế độ bắt đầu với loại file, sau đó là ba nhóm quyền truy cập: người dùng (user/owner), nhóm (group) và người khác (other). Thứ tự của các lớp này là nhất quán trên mọi hệ thống linux.
Các lớp quyền này hoạt động như sau:
-
User: Người sở hữu file thuộc lớp này.
-
Group: Các thành viên của nhóm sở hữu file thuộc lớp này. Quyền của nhóm là cách hữu ích để gán quyền cho nhiều người dùng cùng một lúc.
-
Other: Tất cả các người dùng không thuộc lớp user hay group của file đó.
Đọc quyền truy cập ký hiệu
Tiếp theo, hãy chú ý đến các bộ ba ký tự. Chúng biểu thị các quyền truy cập, ở dạng ký hiệu, mà mỗi lớp được cấp cho file đó.
Trong mỗi bộ ba, các quyền đọc, ghi, và thực thi được biểu thị như sau:
-
Read (Đọc): Biểu thị bằng ký tự r ở vị trí thứ nhất.
-
Write (Ghi): Biểu thị bằng ký tự w ở vị trí thứ hai.
-
Execute (Thực thi): Biểu thị bằng ký tự x ở vị trí thứ ba. Trong một số trường hợp đặc biệt, ký tự ở vị trí này có thể khác.
-
Dấu gạch nối (-) thay thế cho bất kỳ ký tự nào cho thấy quyền tương ứng không được cấp cho lớp đó. Ví dụ, nếu bộ ba của nhóm là r–, file chỉ cho phép đọc đối với nhóm.
Hiểu về quyền Đọc, Ghi, Thực thi
Giờ bạn đã biết cách đọc quyền của file, hãy tìm hiểu các quyền này cho phép người dùng làm gì. Mỗi quyền có ý nghĩa như sau:
-
Đọc (Read):
-
Với file bình thường, quyền đọc cho phép xem nội dung của file.
-
Với thư mục, quyền đọc cho phép xem tên các file trong thư mục đó.
-
-
Ghi (Write):
-
Với file bình thường, quyền ghi cho phép người dùng chỉnh sửa và xóa file.
-
Với thư mục, quyền ghi cho phép người dùng xóa thư mục, chỉnh sửa nội dung (tạo, xóa, đổi tên file), và chỉnh sửa nội dung của các file mà người dùng có quyền ghi.
-
-
Thực thi (Execute):
-
Với file bình thường, quyền thực thi cho phép chạy (execute) file đó – người dùng cũng phải có quyền đọc để có thể chạy file. Quyền thực thi cần được đặt cho các chương trình có thể chạy và các script shell trước khi người dùng có thể chạy chúng.
-
Với thư mục, quyền thực thi cho phép người dùng truy cập (traverse) vào thư mục (sử dụng lệnh cd) và xem thông tin metadata của các file trong thư mục (thông tin hiển thị khi dùng lệnh ls -l).
-
Ví dụ về các chế độ (và quyền truy cập)
Sau khi bạn đã biết cách đọc chế độ của file và hiểu ý nghĩa của mỗi quyền, dưới đây là một số ví dụ về chế độ thông dụng kèm theo giải thích ngắn gọn:
-
-rw——-: File chỉ có thể truy cập bởi chủ sở hữu.
-
-rwxr-xr-x: File có thể thực thi bởi tất cả mọi người trên hệ thống. (File “world-executable”)
-
-rw-rw-rw-: File có thể bị sửa đổi bởi tất cả mọi người trên hệ thống. (File “world-writable”)
-
drwxr-xr-x: Thư mục mà mọi người trên hệ thống đều có thể đọc và truy cập.
-
drwxrwx—: Thư mục có thể bị chỉnh sửa (bao gồm cả nội dung) bởi chủ sở hữu và nhóm.
-
drwxr-x—: Thư mục có thể truy cập bởi nhóm sở hữu.
Các quyền của chủ sở hữu thường là quyền cao nhất so với hai lớp còn lại. Thông thường, nhóm và lớp người khác chỉ có một tập con các quyền của chủ sở hữu (bằng hoặc ít hơn). Điều này hợp lý vì file chỉ nên được truy cập bởi những người dùng có lý do hợp lệ.
Một điều cần lưu ý nữa là mặc dù có nhiều cách kết hợp quyền có thể, nhưng chỉ một số ít kết hợp hợp lý trong hầu hết các trường hợp. Ví dụ, quyền ghi hoặc thực thi thường đi kèm với quyền đọc, vì thật khó để chỉnh sửa và không thể thực thi một thứ gì đó mà bạn không thể đọc.
Kết luận
Bây giờ, bạn đã có một hiểu biết vững chắc về cách thức hoạt động của quyền sở hữu và truy cập trong linux. Hiểu rõ phân quyền Linux giúp bảo mật hệ thống tốt hơn. Nếu bạn cần môi trường thực hành, hãy thử thuê VPS giá rẻ tại DataOnline. Với chi phí hợp lý, bạn được trải nghiệm máy chủ chất lượng, hỗ trợ 24/7, lý tưởng để kiểm tra và quản lý quyền truy cập Linux.