Đầu tiên, một số nền tảng:
- / dev / md1 là mảng RAID-0 đóng vai trò lưu trữ tệp chính. Nó được gắn vào / var / smb.
- / dev / md2 là một snapshot sao lưu lưu trữ mảng RAID-0 được lấy từ / dev / md1. Nó được gắn vào / var / smb / snapshots.
- Ba thư mục được cung cấp qua Samba: / var / smb / files (tệp chia sẻ công khai), / var / smb / private (tệp riêng) và / var / smb / snapshots (cung cấp quyền truy cập chỉ đọc vào ảnh chụp nhanh sao lưu).
Chỉ người dùng trong nhóm smbusers mới được phép truy cập vào các tệp và chia sẻ ảnh chụp nhanh; tương tự, chỉ những người dùng trong nhóm smbprivate mới được phép truy cập các tệp ở chế độ riêng tư. Ngoài ra, các quyền của Linux cấm người dùng không thuộc các nhóm tương ứng truy cập vào các tệp và thư mục riêng, cả trên hệ thống cục bộ và trong các ảnh chụp nhanh mà Samba chia sẻ.
Điều này thật tuyệt, vì điều đó có nghĩa là chúng tôi có một máy chủ tệp đầy đủ chức năng với tùy chọn "khôi phục từ bản sao lưu" tự trợ giúp (người dùng chỉ cần truy cập vào chia sẻ ảnh chụp nhanh và truy xuất (các) tệp mà họ muốn tự khôi phục), nhưng vì vậy Tôi thiếu một thành phần chính: Truy cập không root trên hệ thống cục bộ vào thư mục / var / smb / snapshots.
Các ảnh chụp nhanh phải được đọc hoàn toàn chỉ cho tất cả người dùng thông thường, tuy nhiên tất nhiên hệ thống tệp phải được gắn đọc-ghi để cho phép hoạt động sao lưu diễn ra. Các quyền trên các thư mục này hiện đang:
root@odin:/var/smb# ll
total 40
drwxrwxr-x 7 root root 4096 2011-04-11 15:18 ./
drwxr-xr-x 14 root root 4096 2011-04-10 19:07 ../
drwxrwx--- 15 kromey smbusers 4096 2010-12-07 13:09 files/
drwxrwx--- 7 kromey smbprivate 4096 2010-04-07 07:08 private/
drwxrwx--- 3 root root 4096 2011-04-11 15:16 snapshots/
Bây giờ, những gì tôi muốn là cung cấp quyền truy cập vào thư mục snapshots cho người dùng không phải root, nhưng theo cách chỉ đọc nghiêm ngặt. Tuy nhiên, tôi không thể mount / dev / md2 chỉ đọc, vì tôi phải đọc nó để chạy sao lưu; Tôi không thể đơn giản gắn lại nó đọc-ghi cho một bản sao lưu và sau đó gắn lại nó thành chỉ đọc, bởi vì nó cung cấp một cửa sổ thời gian khi các bản sao lưu có thể được ghi bởi người dùng khác.
Trước đây tôi đã làm điều này bằng cách làm cho thư mục ảnh chụp nhanh của mình trở thành xuất NFS chỉ đọc (chỉ sang localhost) và gắn cục bộ đó (bản gốc được bảo mật dưới một thư mục thiếu quyền truy cập cho người dùng không phải root), nhưng dường như đây là một vụ hack và dường như có giống như có một cách tốt hơn để thực hiện điều này. Tôi đã thử mount --bind
tùy chọn này, nhưng dường như thiếu khả năng có các cấp truy cập khác nhau (tức là chỉ đọc so với đọc-ghi) trên hai thư mục (trừ khi tôi thiếu một cái gì đó mount -r --bind dir1 dir2
:).
Bất kỳ ý tưởng nào làm thế nào tôi có thể thực hiện điều này mà không cần NFS, hoặc đó là lựa chọn tốt nhất của tôi?
TL; DR: Làm cách nào tôi có thể cung cấp nội dung của hệ thống tệp có thể đọc ghi cho người dùng đã chọn, nhưng chỉ đọc nghiêm ngặt cho mọi người khác, trong khi vẫn duy trì quyền và quyền sở hữu ban đầu trên các tệp được sao lưu vào hệ thống tệp này?
man acl
để biết chi tiết.
cp -a
bảo vệ các quyền unix, ví dụ, vì nói chung nó sẽ không có ý nghĩa. acl
không được hỗ trợ nói chung. Nhân phải hỗ trợ nó & bạn phải kích hoạt nó trên hệ thống tập tin khi bạn gắn kết nó, dưới dạng tùy chọn gắn kết.