Làm cách nào tôi có thể tạo chế độ xem chỉ ghi của thư mục?


12

Tôi muốn có một vị trí trên hệ thống tập tin thể hiện "chế độ xem" chỉ ghi của một thư mục khác mà tôi có quyền truy cập đọc-ghi.

Tôi đang hình dung một cái gì đó tương tự như hành vi với hộp thả FTP, nơi các tệp có thể được sao chép vào nó nhưng không đọc được từ đó, ví dụ:

$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c

write-only-view/:

$ cp d write-only-view/
$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c  d

write-only-view/:

Điều quan trọng là điều này hoạt động như trong ví dụ - nội dung vẫn hiển thị khi được truy cập thông qua read-write-view/và cả "chế độ xem" đều hoạt động cho một người dùng.

Làm thế nào tôi có thể thiết lập một cái gì đó như thế này lên? Một số sắp xếp thông minh của các liên kết tượng trưng, ​​có lẽ? Hoặc một cấu hình bất thường của một liên kết gắn kết?

Câu trả lời:


2

Tôi đã hỏi câu hỏi tương tự cho các hộp thả học sinh trong danh sách gửi thư samba vài năm trước (http://lists.samba.org/archive/samba/2008-September/143610.html) và câu trả lời đã có hiệu quả với chúng tôi. Bạn cần các thuộc tính acl mở rộng trên hệ thống tệp của mình (từ gói acl), đây là câu trả lời của Jeremy Allison ...

Ok, vấn đề là sinh viên cần có khả năng đọc thư mục chứa để có thể kéo và thả các tệp mới ở đó. Lý do là Samba cần có thể quét thư mục thay mặt họ để thực hiện tra cứu không nhạy cảm.

Nhưng miễn là bạn không phiền khi cho phép sinh viên xem tên của các tệp khác, bạn có thể thiết lập DropBox để sinh viên có thể ghi vào đó (và các tệp của riêng họ) nhưng không chỉnh sửa hoặc xem các tệp khác.

Trước tiên, bạn muốn đảm bảo rằng các tệp được tạo trong thư mục DropBox không thuộc sở hữu của nhóm chính của sinh viên, mà bởi chủ sở hữu nhóm của thư mục DropBox. Vì thế :

giáo viên chgrp DropBox

để làm cho nó thuộc sở hữu của nhóm giáo viên. Sau đó, thiết lập bit setgid trên thư mục DropBox để đảm bảo rằng các tệp được tạo trong đó có một nhóm giáo viên sở hữu.

chmod g + s DropBox

Sau đó, đảm bảo rằng một tệp trong DropBox chỉ có thể được đổi tên hoặc xóa bởi chủ sở hữu của tệp hoặc bởi chủ sở hữu của thư mục hoặc bằng root (cùng quyền mà / tmp có).

chmod + t DropBox

Sau đó cho phép sinh viên viết vào thư mục bằng cách thêm ACL

setfacl -mg: sinh viên: rwx DropBox

Chừng nào acl defaul được đặt sao cho "những người khác" không có quyền, các tệp được viết bởi một học sinh sẽ được sở hữu bởi chính họ nhưng sẽ có một nhóm "giáo viên" sở hữu và sinh viên sẽ không thể đọc từng những tập tin khác.

Nếu bạn cần phải làm cho các tệp thuộc sở hữu của chủ sở hữu thư mục, không phải bởi các sinh viên đã tạo chúng, bạn cần thiết lập một chia sẻ riêng như mô tả ở trên, nhưng sau đó thêm tham số cấp độ chia sẻ:

chủ sở hữu thừa kế = có

sẽ khiến các tệp được tạo trong các thư mục trong chia sẻ đó được sở hữu bởi thư mục chứa chứ không phải chủ sở hữu tạo.


1

Bạn có thể đạt được một số điều này bằng cách đặt quyền trên thư mục sao cho người dùng mục tiêu có quyền ghi vào thư mục nhưng không truy cập đọc.

Ví dụ: để cho phép bất kỳ ai ghi vào thư mục nhưng không liệt kê nội dung của nó, bạn có thể làm như sau:

chmod o=wx folder

Hoặc chỉ cung cấp cho một nhóm người dùng cụ thể quyền truy cập này:

chgrp groupname folder
chmod o=,g=wx folder

Bây giờ những người dùng đó sẽ không thể liệt kê nội dung của thư mục nhưng sẽ có thể đặt các tệp trong thư mục:

$ ls folder
ls: cannot open directory folder: Permission denied
$ touch folder/filename

Điều này không làm mọi thứ bạn muốn, vì nếu người dùng vẫn có thể truy cập các tệp trong thư mục nếu họ có thể đoán tên. Bạn có thể giảm thiểu rủi ro này thông qua một công việc định kỳ thường xuyên di chuyển các tệp ra khỏi thư mục hộp thả đến một vị trí mà người dùng khác không có quyền truy cập.


1

Bạn có thể tạo thư mục thả "xem chỉ ghi" với quyền truy cập rw và sử dụng thông báo cronjob hoặc inode để di chuyển nội dung sang "xem-ghi-xem" khác.


1

Tôi tin rằng bạn chỉ có thể sử dụng thủ thuật gắn kết liên kết, trong /etc/fstab:

/path/to/read-write-view /path/to/write-only-view none bind 0 0

Vì vậy, bạn có thể sau đó:

chmod a=wx /path/to/write-only-view
chmod a=rwx /path/to/read-write-view

1

Sử dụng bindfs , được thiết kế để "gắn một thư mục đến một vị trí khác và thay đổi các bit cho phép."

Bắt đầu với một thư mục bình thường có cả quyền truy cập đọc và ghi:

$ mkdir read-write-view && touch read-write-view/{a,b,c}
$ ls read-write-view
a  b  c

Sử dụng bindfs để gắn thư mục mà không cần truy cập đọc:

$ mkdir write-only-view
$ sudo bindfs --perms=a-r read-write-view write-only-view

Xác minh rằng chỉ có nội dung của thư mục gốc có thể được liệt kê:

$ ls read-write-view write-only-view
read-write-view:
a  b  c
ls: cannot open directory write-only-view: Permission denied

Xác minh rằng thư mục gốc có thể được ghi vào thông qua mount:

$ echo 'Can you read this?' > write-only-view/d
$ cat read-write-view/d
Can you read this?

Xác minh rằng các tập tin không thể được đọc thông qua mount:

$ cat write-only-view/d
cat: write-only-view/d: Permission denied

0

Đầu tiên, dễ dàng hơn để nghĩ về điều này ngược lại. Bạn có một thư mục rw cho bất cứ ai cần truy cập ghi và "xem" chỉ đọc của thư mục này cho những người cần truy cập chỉ đọc.

Tôi chưa bao giờ có thể để tùy chọn mount --bind -o ro hoạt động chính xác. Cách đáng tin cậy nhất để làm điều này là sử dụng nfs. Thêm phần sau vào / etc / export

/path-to-folder/folder 127.0.0.1(secure,ro,no_root_squash)

sau đó gắn "chế độ xem" chỉ đọc với

mount -o ro 127.0.0.1:/path-to-folder/folder /read-only-folder

Bây giờ bạn sẽ có một chế độ xem chỉ đọc của thư mục gốc của bạn.

Tôi cho rằng bạn có thể làm điều tương tự với samba / cifs, nhưng điều này chỉ thực sự có ý nghĩa đối với truy cập mạng.

Giải pháp này được lấy cảm hứng từ ( đánh cắp từ ) Howto này . Tôi hy vọng nó sẽ giúp.


Tôi không hỏi về chế độ xem chỉ đọc, chỉ đọc và viết.
ændrük

0

Tôi không nghĩ điều này là có thể, vì bạn phải đọc một đĩa "chỉ ghi" để hiển thị nội dung.

Nếu tôi bán một thiết bị như vậy, làm thế nào mọi người có thể xác minh rằng nó hoạt động? Có lẽ đây là một cho kickstarter.


0

Đây không phải là một câu trả lời, nhưng thực sự nhiều hơn một suy nghĩ và có thể là một câu hỏi khác. Đối với tôi âm thanh này như thể nó có thể được thực hiện thông qua một số loại móc hoặc kích hoạt.

Một số chương trình trong nền có thể xem thư mục chỉ ghi (không phải bằng cách bỏ phiếu, nó có thể được thông báo bằng FAM hoặc một cái gì đó tương tự) và sau đó di chuyển từng tệp ra khỏi thư mục chỉ đọc ngay khi xuất hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.