Cách sử dụng ACL hệ thống tập tin (Danh sách kiểm soát truy cập) trên Linux

Tác giả sysadmin, T.Một 20, 2024, 12:28:05 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách sử dụng ACL hệ thống tập tin (Danh sách kiểm soát truy cập) trên Linux


Danh sách kiểm soát truy cập giúp bạn linh hoạt hơn với các quyền của hệ thống tệp Linux.

  • Để xem tất cả các mục ACL cho một tệp, hãy sử dụng lệnh 'getfacl filename' nhưng thay thế 'filename' bằng tên tệp của bạn.
  • Để đặt mục nhập ACL mới cho một tệp, hãy sử dụng lệnh 'setfacl -mu:username:rwx filename'
  • Để đặt mục nhập ACL mặc định trên một thư mục, hãy sử dụng lệnh 'setfacl -d -mu:username:rwx dirname'

Bạn có phụ trách một máy chủ tệp được chia sẻ giữa nhiều nhóm người, tất cả những người này đều có nhu cầu truy cập khác nhau không? Trong hướng dẫn này, chúng ta sẽ tìm hiểu những kiến thức cơ bản về ACL và sử dụng chúng trong một kịch bản văn phòng hư cấu.

1. ACL là gì?

Danh sách điều khiển truy cập (ACL) bổ sung cho mô hình quyền hệ thống tệp tiêu chuẩn trên Linux và Unix. Tóm lại, chúng cho phép bạn vượt ra ngoài khái niệm "người dùng/nhóm/người khác" để tạo các bộ quyền bổ sung cho các tệp và thư mục. Họ cũng thực hiện những việc gọn gàng như tự động áp dụng quyền cho các tệp và thư mục mới. Nhưng trước tiên, hãy đề cập đến một số khái niệm cơ bản về quyền của hệ thống tệp Linux mà ACL hoạt động cùng.

1.1. Quyền hệ thống tệp tiêu chuẩn

Để hiểu các quyền của hệ thống tệp trong Linux, trước tiên bạn cần biết rằng Linux là một "hệ điều hành nhiều người dùng". Điều này có nghĩa là tồn tại nhiều tài khoản người dùng về cơ bản cho phép nhiều người đăng nhập vào hệ thống, mỗi người có quyền tự do và hạn chế riêng.

Một số tài khoản người dùng là tài khoản "hệ thống"; chẳng hạn, không phải những thứ được sử dụng bởi một người, mà là bởi một phần mềm. Các quy trình chạy trong các tài khoản đặc biệt này để cho phép và hạn chế chúng ở các phần khác nhau của HĐH, giống như tài khoản người dùng bình thường.

Bây giờ chúng ta đã hiểu người dùng, tôi có thể giới thiệu cho bạn về "nhóm". Nhóm khá dễ hiểu—chúng chỉ đơn giản là tập hợp những người dùng hiện tại. Để gán quyền cho một tài nguyên cho nhiều người dùng cùng lúc, bạn có thể tạo một nhóm mới và cấp quyền thành viên cho người dùng cụ thể cho nhóm đó. Sau đó, bạn chỉ định quyền sử dụng tài nguyên cho nhóm, thay vì cho từng người dùng riêng lẻ. Điều này làm cho việc quản lý trở nên dễ dàng và hợp lý hơn.

Được rồi, hãy nói về tập tin và thư mục. Đây là những tài nguyên mà chúng tôi quan tâm đến việc cấp và bảo vệ quyền truy cập.

Hầu hết các hệ thống tệp Linux (ví dụ EXT4, XFS và ZFS) cho phép bạn áp dụng 3 quyền chính cho tệp và thư mục. Các quyền này là:

  • Đọc: Cho phép đọc tệp (hoặc liệt kê nội dung bên trong thư mục)
  • Viết: Cho phép ghi hoặc sửa đổi một tệp (hoặc tạo tệp và thư mục con bên trong một thư mục)
  • Thực thi: Cho phép chạy một chương trình hoặc script (hoặc nhập vào một thư mục, ví dụ bằng lệnh cd)

Tất cả các tệp và thư mục trên hệ thống tệp đều có quyền tiêu chuẩn được gán cho 3 thực thể riêng biệt: người dùng sở hữu nó, chủ sở hữu nhóm và tất cả những người dùng khác. Mỗi thực thể có thể được gán các quyền kết hợp đọc, ghi và thực thi (r/w/x). Bạn có thể sử dụng lệnh ls để xem tất cả thông tin này:

Mã nguồn [Chọn]
ls -l mysupersecretfile.txt

  • Quyền của ser (chủ sở hữu)
  • [G]quyền nhóm
  • Tất cả quyền của
  • người dùng khác
  • Sở hữu tên người dùng
  • Sở hữu tên nhóm

Theo mặc định, mỗi người dùng mới tạo cũng được gán cho một nhóm chính mới có cùng tên. Trong ví dụ trên, #4 là tên người dùng "người dùng" và #5 là tên nhóm "người dùng". Hãy ghi nhớ điều đó khi nhìn vào kết quả đầu ra như thế này vì lúc đầu nó có thể gây nhầm lẫn.

Các tệp và thư mục mà người dùng được phép sửa đổi tùy thuộc vào một số điều, bao gồm cả việc người dùng có "sở hữu" nó hay không hoặc liệu họ có quyền thích hợp để thông qua tư cách thành viên nhóm hay không. Lưu ý rằng người dùng root có thể sửa đổi bất kỳ tệp nào trên hệ thống, bất kể quyền sở hữu.

Cách tiếp cận này đối với quyền của hệ thống tệp hoạt động tốt đối với hầu hết các thiết lập tại nhà và độc lập. Tất nhiên, khi bạn đang làm việc với các hệ thống có nhiều người dùng truy cập vào cùng một phân cấp tệp và bạn phải cấp cho một số người quyền truy cập vào một số khu vực (và hạn chế họ truy cập vào những khu vực khác), bạn sẽ bắt đầu hiểu tiêu chuẩn "1 chủ sở hữu, Phương pháp 1 nhóm" hơi ngắn.

1.2. Cách ACL nâng cao mô hình quyền tiêu chuẩn

Danh sách kiểm soát truy cập bổ sung khả năng áp dụng các mục cấp phép cho nhiều người dùng và nhóm cho các tệp và thư mục. Một ví dụ trong đó ACL là một lựa chọn tốt là khi bạn muốn chỉ định một quyền người dùng nhất định cho một tệp đã được chỉ định quyền của chủ sở hữu và chủ sở hữu nhóm cụ thể.

ACL dành cho thư mục tuân theo các quyền tiêu chuẩn mô hình r / w / x trong đó chúng cho bạn khả năng (r)ead (liệt kê nội dung, nhưng không nhập) thư mục, ( w )rite (tạo) các tệp và thư mục mới bên trong thư mục, và e( x ) thực hiện (nhập) thư mục.

Làm thế nào về một ví dụ? Giả sử bạn có một tệp, report.pdf, thuộc quyền sở hữu của người dùng, peter, có quyền đọc+ghi. Ngoài ra, bạn đã cấp quyền sở hữu nhóm tệp này cho nhóm kế toán. Bây giờ bạn đã nhận được yêu cầu cấp quyền truy cập đọc cho người dùng có tên là Timberg.

Giả sử bạn đang sử dụng mô hình quyền tiêu chuẩn. Dưới đây là một vài ý tưởng (vô ích) để hoàn thành yêu cầu này:

  • Bạn không thể cấp quyền thành viên của Timberg cho nhóm kế toán (điều đó sẽ cho phép anh ta truy cập vào tất cả các loại tệp khác mà anh ta không nên xem).
  • Bạn cũng không muốn, theo thông lệ quản trị phù hợp, tạo một nhóm hoàn toàn mới với những người dùng từ nhóm kế toán cộng với thợ mộc, chỉ dành cho tệp này.
  • Bạn đặc biệt không muốn mở quyền cho tất cả người dùng khác vì lý do bảo mật rõ ràng.

Mã nguồn [Chọn]
ls -l báo cáo.pdf

Phải làm gì? Vâng, bạn có thể nghỉ trưa sớm. Tuy nhiên, thay vào đó hãy sử dụng ACL!

2. Kiểm tra hỗ trợ ACL trên hệ thống của bạn

Hầu hết các bản phân phối Linux hiện đại đều hỗ trợ ACL ngay lập tức. Hầu hết các hệ thống tệp phổ biến đều hỗ trợ chúng, các tùy chọn gắn kết mặc định của chúng bao gồm hỗ trợ ACL và cài đặt mặc định phải bao gồm các gói thích hợp.

Để xác minh trên hệ thống tệp ext2/3/4, hãy sử dụng tune2fs. Ví dụ: nếu bạn muốn kiểm tra /dev/sda1 (chứa hệ thống tệp ext4):

Mã nguồn [Chọn]
sudo tune2fs -l /dev/sda1 | grep "Default mount options"

Để tham khảo, đây là danh sách hỗ trợ hệ thống tệp khác nhau cho ACL, được nhóm theo nền tảng, được viết bởi IBM.

3. Lệnh getfacl

Lệnh getfacl hiển thị (get) danh sách kiểm soát truy cập tệp cho các tệp và thư mục. Nếu bạn chạy getfacl trên tệp báo cáo của chúng tôi từ phía trên, bạn sẽ thấy:

Mã nguồn [Chọn]
getfacl report.pdf

Hiện tại, đầu ra hiển thị ACL tối thiểu của tệp. ACL tối thiểu bao gồm các quyền tiêu chuẩn cho chủ sở hữu, nhóm sở hữu và tất cả người dùng khác.

Nếu có một mục ACL mở rộng cho một người dùng khác, hãy gọi họ là Michael, chúng ta sẽ thấy điều này:

Mã nguồn [Chọn]
getfacl report.pdf

Ngoài các ACL tối thiểu, chúng tôi hiện có mục nhập ACL mở rộng cho người dùng Michael (quyền đọc + ghi). Nếu bạn liệt kê lại tệp có ACL mở rộng, bạn sẽ thấy dấu cộng (+) ở bên phải quyền của "người dùng khác", cho biết rằng các mục ACL mở rộng tồn tại:

Mã nguồn [Chọn]
ls -l report.pdf

4. Lệnh setfacl

Lệnh setfacl thực sự đặt ACL cho các tệp và thư mục. Nó thêm và xóa các mục nhập của người dùng và nhóm, sửa đổi quyền và các tác vụ khác như đặt ACL mặc định trên các thư mục và làm việc với mặt nạ. Chúng tôi sẽ sử dụng nó để hoàn thành yêu cầu trên bằng cách cấp cho người dùng gỗ quyền truy cập đọc report.pdf.

Để thêm mục nhập ACL của người dùng mới, bạn sẽ sử dụng setfacl với cú pháp này (tôi sẽ chia nhỏ bên dưới):

Mã nguồn [Chọn]
sudo setfacl -mu:lumberg:r report.pdf

  • -m có nghĩa là chúng tôi đang sửa đổi mục nhập ACL cho tệp
  • u: có nghĩa là người dùng chúng tôi đang thêm, theo sau là dấu phân cách bằng dấu hai chấm (:) (a g: thêm một nhóm và o: thêm tất cả các quyền của người dùng khác)
  • Timberg: là tên người dùng chúng tôi đang thêm, theo sau là một dấu phân cách khác
  • r có nghĩa là chúng tôi đang thêm quyền đọc (chỉ) vào mục nhập
  • report.pdf là tên của tệp chúng tôi đang thêm mục nhập ACL vào

Bây giờ điều này đã được thiết lập, chúng ta có thể xem lại bằng cách sử dụng getfacl:

Mã nguồn [Chọn]
getfacl report.pdf

Bạn có nhận ra mục mới của chúng tôi không?

5. ACL mặc định

ACL mặc định chỉ áp dụng cho các thư mục (folder). Khi bạn đặt ACL mặc định trên một thư mục, mục nhập bạn chỉ định sẽ tự động được áp dụng cho mọi tệp và thư mục mới trong đó, bất kể ai tạo ra chúng. Đó là một cách tiếp cận đệ quy tổng hợp, khiến nó khá hữu ích khi bạn lập kế hoạch phân cấp hệ thống tệp của mình.

Hãy đảm bảo rằng Lumberg có thể đọc các tệp mới và nhập các thư mục mới được tạo trong phần Kế toán. Chúng tôi sẽ sử dụng tùy chọn -d để thêm ACL mặc định :

Mã nguồn [Chọn]
sudo setfacl -d -m u:lumberg:rX Accounting

Chữ X viết hoa chỉ áp dụng quyền thực thi đối với các thư mục con mới; không phải tập tin.

Danh sách kiểm soát quyền truy cập rất phù hợp khi bạn muốn nâng quyền hệ thống tệp của mình lên cấp độ tiếp theo. Bạn có thể làm được nhiều việc với các quyền của người dùng/nhóm/quyền khác tiêu chuẩn, nhưng có thể sẽ có một thời điểm trong hành trình của bạn mà việc sử dụng ACL sẽ có ý nghĩa hơn nhiều.