Làm thế nào để duy trì quyền sở hữu và quyền trong Dropbox?


9

Tôi có hai máy, Mac và PC chạy Linux, tôi đang cố gắng giữ một tệp nhất định được đồng bộ hóa giữa khi sử dụng Dropbox.

Một trong những tệp mà tôi đang đồng bộ hóa cần có thể ghi được bởi một người dùng khác (UID khác nhau trên cùng một máy, không đề cập đến người dùng dropbox khác) ngoài tôi. Cụ thể hơn, UID khác này thực sự là một daemon. Vì vậy, tập tin cần phải được sở hữu bởi người dùng khác, hoặc người khác có quyền ghi cho "nhóm" và / hoặc "người khác". Ban đầu tôi đã thiết lập nó theo cách này trên cả hai máy. Ngoài ra, thư mục chứa tệp đã được sở hữu (chmod 777) bởi người dùng cần có quyền ghi vào tệp.

Tuy nhiên, bất cứ khi nào tệp được đồng bộ hóa từ hộp này sang hộp khác, có vẻ như Dropbox hoàn toàn bỏ qua cả hai bộ quyền và thay đổi quyền trên tệp mới được cập nhật để tôi sở hữu với quyền 0644 (rw cho tôi, r cho mọi người khác ). Nếu tập tin không thuộc sở hữu của tôi, nó thậm chí còn thay đổi quyền sở hữu trở lại với chính tôi! Kết quả là, người dùng khác không còn có quyền ghi cho đến khi tôi truy cập thủ công và chỉnh lại tệp.

Những thứ khác tôi đã thử mà không hiệu quả:

  1. đảm bảo tài khoản người dùng (đối với "người dùng khác") trên cả hai máy có cùng UID. Không chắc chắn tại sao điều này lại cần thiết, vì tài khoản chính của tôi không có cùng UID trên cả hai máy.

  2. chmod u+s <dir>chmod g+s <dir>thư mục chứa tập tin đang ở đâu

  3. thay đổi quyền sở hữu tệp cho người dùng khác và đặt nó bên ngoài thư mục Dropbox và tạo liên kết tượng trưng đến tệp trong thư mục Dropbox. Dropbox thực sự xóa symlink, giữ nguyên tệp gốc (bên ngoài thư mục Dropbox) và tạo một bản sao mới của tệp nơi sử dụng symlink!

Làm cách nào tôi có thể thiết lập mọi thứ để các quyền và / hoặc quyền sở hữu của tôi được giữ nguyên?

Câu trả lời:


5

Ok, đây là giải pháp tôi đã tìm thấy. Việc này có hoạt động với các phiên bản Dropbox trong tương lai hay không là không chắc chắn. Tôi đã mở một yêu cầu dịch vụ với Dropbox để cố gắng giải quyết vấn đề hơn nữa.

Nhìn chung, giải pháp là sự kết hợp của hai điều:

  1. Đặt ô cho quá trình Dropbox để các tệp mới tạo có quyền 0660. Đây là người dùng đọc / ghi, đọc / ghi nhóm, không có tệp nào khác.
  2. Đặt nhóm cho các tệp mới được tạo thành nhóm cần có quyền truy cập ghi vào các tệp đang đề cập.

Giải pháp này sẽ áp dụng cho tất cả các tệp trong thư mục Dropbox, không chỉ một tệp. Trong trường hợp của tôi điều này là chấp nhận được.

Trong Linux, tôi sửa đổi /etc/init.d/dropboxtập lệnh khởi động để dòng gọi dropbox dưới dạng daemon đọc:

HOME="$HOMEDIR" start-stop-daemon --umask 0006 -b -o -c $dbuser:$dbgrp -S -u $dbuser -x $HOMEDIR/$DAEMON

Thêm các --umask 0006thành tựu thiết lập ô, và :$dbgrpphần tùy chọn -c hoàn thành cài đặt nhóm cho daemon thuộc về.

Về phía Mac, tôi chạy các lệnh sau:

ps aux | grep -i dropbox

Từ đây, tôi có thể thấy các tùy chọn dòng lệnh đã khởi động Dropbox và từ đó tôi trích xuất $ mydropboxid được sử dụng sau này. Sau đó, tôi thoát Dropbox và mở một dấu nhắc lệnh và nhập các lệnh sau:

umask 0006
/Applications/Dropbox.app/Contents/MacOS/Dropbox -psn_0_$mydropboxid &
exit

Tôi có kế hoạch tự động hóa các lệnh trên vào một lúc nào đó để tôi sẽ không phải chạy lại chúng bất cứ khi nào máy của tôi được khởi động lại.

Điều này xử lý thiết lập mặt nạ cho các tệp mới được tạo để nhóm cho tệp có quyền truy cập ghi. Tuy nhiên, để thiết lập nhóm chính xác, tôi cần phải thiết lập thư mục bộ đệm Dropbox - điều này cho đến nay chỉ cần thực hiện một lần:

sudo chgrp -R $dbgrp ~/Dropbox/.dropbox.cache
sudo chmod -R g+s ~/Dropbox/.dropbox.cache

Dường như tất cả các tệp mới được tạo trước tiên trong thư mục ~ / Dropbox / .dropbox.cache, vì vậy các lệnh trên cung cấp cho các tệp mới đó quyền sở hữu và quyền phù hợp mà các tệp mới được tạo bởi Dropbox có nhóm chính xác.


Hấp dẫn. Bạn có thể giải thích thêm một chút về dòng này và tệp sửa đổi nói chung không?
nixda

Start-stop-daemon là một tiện ích Linux cho phép bạn kiểm soát các cài đặt khác nhau mà trình nền chạy. Hầu hết các tham số được truyền trong một biến shell. Các sửa đổi chính là bổ sung "--umask 0006" để lại quyền R / W cho người dùng và nhóm nhưng xóa nó cho người khác và thêm tham số nhóm (": $ dbgrp") vào tham số -c, đặt UID / GID quá trình trình nền chạy như). Lệnh Mac tương tự, nhưng tôi chưa tìm thấy một tiện ích tương tự, vì vậy phụ thuộc vào việc thiết lập các cài đặt này trong trình vỏ chạy Dropbox.
Michael

Điều này có áp dụng cho phiên bản dropbox hiện tại không? Tập lệnh dropboxd của tôi được PAR=$(dirname $(readlink -f $0)) OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH LD_LIBRARY_PATH=$PAR${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH exec $PAR/dropbox $@và nằm trong ./.dropbox-dist/ và được quản lý thông qua tập lệnh python được cung cấp
xe đạp

@b wheel Tôi chưa được nhắc cập nhật ứng dụng khách dropbox của mình kể từ khi đưa ra giải pháp này.
Michael

@Michael, Dropbox có bao giờ trả lời yêu cầu dịch vụ của bạn không?
bbozo

0

Đặt tệp đó vào thư mục riêng của nó và chia sẻ thư mục đó với người dùng khác. Bằng cách này, họ đang chỉnh sửa phiên bản mới nhất như bạn. Hãy cẩn thận để không làm việc trên nó cùng một lúc.


1
Cập nhật câu hỏi ban đầu của tôi để phản ánh thực tế rằng thư mục chứa tệp đang đề cập đã thuộc quyền sở hữu của người dùng khác. Không có gì khác biệt, Dropbox vẫn bỏ qua quyền sở hữu / quyền hiện tại và đặt lại chúng bất cứ khi nào tệp được đồng bộ hóa với máy.
Michael

0

Nếu bạn sao chép một tệp giữa hai máy tính, phần mềm sao chép sẽ quyết định các quyền trên bản sao. Đối với những gì bạn đang làm, bạn cần một số ánh xạ cấp phép khá chi tiết. Các tính năng ánh xạ quyền của Dropbox bị giới hạn trong việc bảo vệ quyền nếu cả hai hệ thống chạy cùng một hệ điều hành . Không có kết quả cụ thể nào được đảm bảo cho việc sao chép giữa hai HĐH khác nhau.

Ngay cả khi bạn có thể tìm ra cách nào đó để sử dụng Dropbox theo cách bạn muốn, tôi vẫn khuyên bạn không nên dựa vào nó. Các quirks phần mềm không có giấy tờ có cách biến mất mà không cần thông báo trước. Bạn cần xem xét các công cụ chuyển tập tin được thiết kế phù hợp với trường hợp sử dụng của bạn. Lựa chọn đầu tiên của tôi sẽ là rsync , là tiêu chuẩn trên các bản phân phối Linux và dễ cài đặt trên Windows, đặc biệt nếu bạn có Cygwin . Và Cygwin thường hữu ích cho những người phải làm việc với cả Windows và Linux!

Tất nhiên, rsync yêu cầu kết nối trực tiếp - không có máy chủ trung tâm nào như Dropbox cung cấp. Cách bạn đối phó với điều đó phụ thuộc vào chi tiết thiết lập mạng của bạn.


Vâng, tôi đồng ý với những gì bạn đang nói về quirks. Trong tâm trí tôi, đây thường là một lý do tốt để ngừng nâng cấp phần mềm - nếu nó làm những gì bạn muốn, tại sao lại có nguy cơ phá vỡ các phiên bản mới hơn!
Michael

rsync không phải là hai chiều và không tự động cập nhật mỗi khi có thay đổi đối với tệp.
Michael

@Michael Bạn không phải lúc nào cũng có lựa chọn về việc nâng cấp phần mềm; khi nó dựa trên đám mây (như Dropbox), bạn không bao giờ có lựa chọn nào khác. Và thật khó để biết tại sao hai hướng hoặc sao chép tự động lại cần thiết cho những gì bạn đang cố gắng thực hiện.
Isaac Rabinovitch

Miễn là dịch vụ vẫn tương thích ngược với khách hàng trước đó, bạn có lựa chọn. Và trừ khi Dropbox có thể buộc mọi người nâng cấp ngay lập tức, tôi nghi ngờ họ có thể làm gì đó như thực hiện thay đổi cấp độ thấp đối với giao thức sẽ phá vỡ các máy khách cũ. Cách duy nhất tôi có thể thấy họ có thể làm là thông qua một số loại chuyển đổi.
Michael

Về những gì tôi đang cố gắng thực hiện, tôi đang cố gắng duy trì một tập hợp các tệp trên hai máy khác nhau và có thể sửa đổi một trong số chúng tại bất kỳ thời điểm nào, sau đó chuyển sang một tệp khác một thời gian ngắn sau đó và nhặt lên nơi tôi rời đi, mà không phải làm bất cứ điều gì thủ công như bắt đầu một rsync. Điều này chủ yếu là do tôi có thể thực hiện sửa đổi từ xa (ví dụ: thông qua giao diện web) và có các vấn đề như tường lửa và độ trễ khiến việc duy trì một bản sao dữ liệu tập trung duy nhất là bất tiện.
Michael
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.