Cách tốt và dễ dàng để chia sẻ tệp trên máy cục bộ


13

Tôi muốn có một thư mục có các thuộc tính sau:

  • Nhiều người dùng có thể sao chép tập tin vào nó
  • Những tệp này có thể bị xóa / thay đổi bởi những người dùng này (người dùng A có thể xóa / sửa đổi tệp đã được sao chép vào thư mục này)

không thể thực hiện được bằng cách sử dụng quyền tệp thông thường (vì quyền được giữ lại trên bản sao).

Đây là những gì tôi tìm thấy trên mạng:

Một số trường hợp sử dụng:

  • Chia sẻ nhạc trên máy cục bộ
  • Chia sẻ kho git đơn giản (chỉ cần tạo một kho lưu trữ trần có thể ghi cho nhiều người) --- tôi biết rằng có các giải pháp như gitosis
  • Cho phép nhiều nhà phát triển sửa đổi phiên bản thử nghiệm của ứng dụng php mà không cần cho họ root (tôi đoán họ sẽ sao chép các tệp) --- Tôi đang lãnh đạo một nhóm các nhà phát triển cơ sở phi lợi nhuận và tôi cần phải đơn giản!

BIÊN TẬP

AFAIK cài đặt bit SGID không phải là enugh, nó chỉ ảnh hưởng đến các tệp mới được tạo --- và quy trình làm việc cơ bản cho các trường hợp sử dụng này ivnolves sao chép và các hoạt động khác (giúp tách tệp gid không thay đổi)

Câu trả lời:


9

Danh sách kiểm soát truy cập

Câu trả lời thẳng là danh sách kiểm soát truy cập (ACL) . Vâng, bạn có thể tìm thấy một ví dụ mẫu, nhưng chúng đủ tốt trong thực tế (không giống như khả năng ghi nhóm đơn thuần đòi hỏi người dùng phải suy nghĩ về nó mọi lúc). Những gì họ yêu cầu là quản trị viên hệ thống (root) xác định các nhóm, nếu bạn muốn các tệp chỉ được chia sẻ bởi một nhóm có tên (root có thể chọn ủy quyền, ví dụ bằng cách chấp nhận các nhóm từ LDAP, nhưng đó là một câu chuyện khác).

Bạn cần người dùng tham gia để có số dư 022. Nếu họ tạo các tệp không thể đọc được trên thế giới thường xuyên, lược đồ này sẽ không hoạt động. Nhưng nếu họ có một ô hạn chế, có lẽ vì họ không muốn chia sẻ tệp.

Kích hoạt ACL

Ubuntu không bật ACL theo mặc định, do đó, yêu cầu quản trị viên một lần. Chỉnh sửa /etc/fstabbằng trình chỉnh sửa yêu thích của bạn và thay đổi mọi dòng tương ứng với hệ thống tệp mà bạn muốn chia sẻ tệp: thêm aclvào các tùy chọn. (Đảm bảo không thay đổi bất kỳ dòng nào khác và không sử dụng trình chỉnh sửa bao bọc các dòng dài.) Đây là một dòng ví dụ với acltùy chọn được thêm vào:

UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5  /  ext4  errors=remount-ro,acl  0 1

Để tùy chọn có hiệu lực lần đầu tiên, hãy sử dụng lệnh như sau (cho mỗi hệ thống tệp):

sudo mount -o remount,acl /

Cài đặt các công cụ ACL từ aclgói.

Thiết lập thư mục dùng chung

Để có các tệp được chia sẻ bởi nhóm mygroup:

setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root

Nếu mọi người tạo tệp và sao chép chúng vào thư mục dùng chung, các tệp sẽ có thể đọc được trên thế giới (vì có ô) và bất kỳ ai trong nhóm cũng có thể thêm và xóa tệp (vì nhóm có thể ghi nhóm). Mọi người không thể chỉnh sửa các tệp của nhau, nhưng đó là một điều tốt hoặc bạn sẽ ngay lập tức gặp phải các xung đột chỉnh sửa.

Nếu bạn không có nhóm unix, bạn có thể thêm từng người dùng:

setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root

Kiểm soát phiên bản

Nếu bạn muốn mọi người có thể chỉnh sửa các tập tin tại chỗ, bạn cũng cần một cái gì đó để ngăn chặn xung đột chỉnh sửa. Đó là kiểm soát phiên bản.

Bạn không cần bất kỳ thứ gì trong số này để chia sẻ kho git. Bạn biết có những giải pháp như gitosis, vì vậy hãy sử dụng chúng.


ACL sẽ hoạt động hoàn hảo nếu kế thừa tự động không bị phá vỡ bởi cp (và mv?) Mà loại bỏ (bỏ qua) acl mặc định được đặt ở cấp thư mục đích.
hữu ích

2

Đơn giản chỉ cần làm điều này:

mkdir /src/teamA
addgroup teamA
chgrp teamA /src/teamA
chmod g+rws /src/teamA

Bây giờ mọi người trong teamAnhóm có thể làm mọi thứ bên trong/src/teamA

Phép thuật là bit sgid (set id nhóm) trên thư mục.


AFAIK nó sẽ không hoạt động, xem bài cập nhật
jb.

1

Nếu bạn muốn người dùng có thể truy cập các tệp trong một thư mục dùng chung (ví dụ: những người khác đăng nhập vào cùng một máy vào những thời điểm khác nhau và cần truy cập vào cùng một tệp), bạn có thể sử dụng bindfsđể tạo thư mục dùng chung.

Nó cho phép nhiều người dùng cục bộ đọc và ghi (tạo, xóa, đổi tên, sửa đổi ...) tất cả các tệp (bao gồm cả các tệp mới được tạo) từ một thư mục dùng chung và các thư mục con của nó. Mỗi người dùng sẽ thấy các tệp và thư mục (bao gồm cả những tệp mới được tạo) thuộc về chúng.

Ngắn gọn, bạn chạy

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

để tạo / home / chia sẻ có sẵn cho user1, user2 và user3.

Hướng dẫn

Xem Bindfs-SharedDirectoryLocalUsers (tài liệu Ubuntu) để biết hướng dẫn đầy đủ, bao gồm thiết lập nó vĩnh viễn (mỗi khi bạn bật máy tính). Tôi sử dụng điều này trên máy riêng của mình cho một số thư mục, mỗi nhóm có các nhóm chia sẻ khác nhau (một thư mục có sẵn cho tất cả các tài khoản, một thư mục khác chỉ dành cho tài khoản làm việc, một thư mục khác chỉ dành cho tài khoản cá nhân).

Từ bài viết:

bindfs là một hệ thống tập tin FUSE để gắn một thư mục đến một vị trí khác (mountpoint), với các thiết lập quyền. Nó cho phép bạn chỉ định quyền sở hữu và quyền của các tệp từ bên trong mountpoint.

...

Lợi ích chính là các tệp mới được tạo trong thư mục dùng chung sẽ kế thừa quyền sở hữu & quyền.

Danh sách kiểm soát truy cập (ACL)

Các tài liệu ghi chú:

Nếu bạn muốn thiết lập các quyền nâng cao hơn cho những người dùng và / hoặc nhóm khác nhau, hãy thử Danh sách điều khiển truy cập .

Xem câu trả lời của Gilles để biết thêm chi tiết.


nếu bạn đang gặp rắc rối thêm bindfs trên Oneiric bạn có thể nhận được gói do người dùng tạo ra ở đây bugs.launchpad.net/ubuntu/+source/bindfs/+bug/851600
david.libremone

-3

Bạn có thể kết hợp giải pháp của shellholic với công việc định kỳ cập nhật gid cho tất cả các tệp trong thư mục đó cứ sau 15 giây hoặc một cái gì đó tương tự.

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.