จะรักษาความเป็นเจ้าของและการอนุญาตใน Dropbox ได้อย่างไร?


9

ฉันมีสองเครื่อง Mac และพีซีที่ใช้ Linux ซึ่งฉันพยายามจะซิงค์ไฟล์บางไฟล์ระหว่างการใช้ Dropbox

หนึ่งในไฟล์ที่ฉันกำลังซิงค์จะต้องสามารถเขียนได้โดยผู้ใช้รายอื่น (UID ที่แตกต่างกันในเครื่องเดียวกันไม่ได้อ้างอิงถึงผู้ใช้ดรอปบ็อกซ์อื่น) นอกเหนือจากตัวฉันเอง หากต้องการเจาะจงมากขึ้น UID อื่น ๆ นี้จะเป็นภูตจริง ๆ ดังนั้นไฟล์จะต้องเป็นของผู้ใช้รายอื่นหรือจำเป็นต้องมีสิทธิ์การเขียนสำหรับ "กลุ่ม" และ / หรือ "อื่น ๆ " ตอนแรกฉันได้ตั้งค่าวิธีนี้ในเครื่องทั้งสอง นอกจากนี้ไดเร็กทอรีที่มีไฟล์นั้นเป็นเจ้าของอยู่แล้ว (chmod 777) โดยผู้ใช้ที่จำเป็นต้องมีสิทธิ์เขียนเพื่อเข้าถึงไฟล์

อย่างไรก็ตามเมื่อใดก็ตามที่ไฟล์ได้รับการซิงค์จากกล่องหนึ่งไปยังอีกกล่องหนึ่ง Dropbox จะเพิกเฉยต่อสิทธิ์การใช้งานทั้งสองชุดอย่างสมบูรณ์และเปลี่ยนแปลงการอนุญาตบนไฟล์ที่อัปเดตใหม่ให้ฉันเป็นเจ้าของด้วยสิทธิ์ 0644 (rw สำหรับฉัน ) หากฉันไม่ได้เป็นเจ้าของไฟล์มันก็จะเปลี่ยนความเป็นเจ้าของกลับไปเป็นของฉัน! เป็นผลให้ผู้ใช้รายอื่นไม่มีสิทธิ์ในการเขียนอีกต่อไปจนกว่าฉันจะเข้าไปและเปลี่ยนไฟล์อีกครั้ง

สิ่งเพิ่มเติมที่ฉันลองซึ่งไม่ได้ผล:

  1. ตรวจสอบให้แน่ใจว่าบัญชีผู้ใช้ (สำหรับ "ผู้ใช้อื่น") บนเครื่องทั้งสองมี UID เดียวกัน ไม่แน่ใจว่าทำไมจึงเป็นสิ่งจำเป็นเนื่องจากบัญชีหลักของฉันไม่มี UID เดียวกันในทั้งสองเครื่อง

  2. chmod u+s <dir>และchmod g+s <dir>ไดเร็กทอรีที่มีไฟล์นั้นอยู่ที่ไหน

  3. การเปลี่ยนความเป็นเจ้าของไฟล์ให้กับผู้ใช้รายอื่นและวางไว้นอกไดเรกทอรี Dropbox และสร้าง symlink เป็นไฟล์ในไดเรกทอรี Dropbox Dropbox จริง ๆ แล้วลบ symlink ออกจากไฟล์ต้นฉบับ (นอกไดเรกทอรี Dropbox) ไม่เปลี่ยนแปลงและสร้างสำเนาใหม่ของไฟล์ที่ symlink เคยเป็น!

ฉันจะตั้งค่าเพื่อให้สิทธิ์และ / หรือความเป็นเจ้าของของฉันถูกเก็บรักษาไว้ได้อย่างไร?

คำตอบ:


5

ตกลงนี่คือทางออกที่ฉันได้พบ สิ่งนี้จะใช้ได้กับ Dropbox เวอร์ชันอนาคตหรือไม่ ฉันได้เปิดคำขอบริการกับ Dropbox เพื่อพยายามแก้ไขปัญหาเพิ่มเติม

โดยรวมแล้วทางออกคือการรวมกันของสองสิ่ง:

  1. การตั้งค่า umask สำหรับกระบวนการ Dropbox เพื่อให้ไฟล์ที่สร้างขึ้นใหม่มีสิทธิ์เป็น 0660 นี่คือการอ่าน / เขียนของผู้ใช้, กลุ่มอ่าน / เขียน, ไม่มีอื่น ๆ
  2. การตั้งค่ากลุ่มสำหรับไฟล์ที่สร้างขึ้นใหม่ไปยังกลุ่มที่จำเป็นต้องมีสิทธิ์เขียนเพื่อเข้าถึงไฟล์ที่เป็นปัญหา

โซลูชันนี้จะนำไปใช้กับไฟล์ทั้งหมดในโฟลเดอร์ Dropbox ไม่ใช่เพียงไฟล์เดียว ในกรณีของฉันนี้เป็นที่ยอมรับ

ภายใต้ Linux ฉันแก้ไข/etc/init.d/dropboxสคริปต์เริ่มต้นเพื่อให้บรรทัดที่เรียกใช้ดรอปบ็อกซ์เป็น daemon อ่าน:

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

การเพิ่มการ--umask 0006ตั้งค่า umask ให้สำเร็จและ:$dbgrpส่วนของตัวเลือก -c จะสำเร็จการตั้งค่ากลุ่มให้เป็นของ daemon

ในฝั่ง Mac ฉันเรียกใช้คำสั่งต่อไปนี้:

ps aux | grep -i dropbox

จากนี้ฉันสามารถเห็นตัวเลือกบรรทัดคำสั่งที่เริ่ม Dropbox และจากนี้ฉันแยก $ mydropboxid ใช้ในภายหลัง จากนั้นฉันออกจาก Dropbox และเปิดพรอมต์คำสั่งและป้อนคำสั่งต่อไปนี้:

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

ฉันวางแผนที่จะทำตามคำสั่งข้างต้นโดยอัตโนมัติในบางจุดเพื่อที่ฉันจะได้ไม่ต้องเรียกใช้สิ่งเหล่านี้อีกครั้งเมื่อใดก็ตามที่รีบูตเครื่อง

การจัดการนี้เป็นการตั้งค่ามาสก์สำหรับไฟล์ที่สร้างขึ้นใหม่เพื่อให้กลุ่มของไฟล์มีสิทธิ์การเขียน อย่างไรก็ตามเพื่อให้การตั้งค่ากลุ่มถูกต้องฉันต้องตั้งค่าไดเรกทอรีแคชของ Dropbox - เท่านี้ต้องทำเพียงครั้งเดียว:

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

ดูเหมือนว่าไฟล์ใหม่ทั้งหมดจะถูกสร้างขึ้นเป็นครั้งแรกภายใต้ไดเรกทอรี ~ / Dropbox / .dropbox.cache ดังนั้นคำสั่งด้านบนจะให้ความเป็นเจ้าของและสิทธิ์ที่ถูกต้องซึ่งไฟล์ใหม่ที่สร้างโดย Dropbox มีกลุ่มที่ถูกต้อง


น่าสนใจ คุณช่วยอธิบายเพิ่มเติมเล็กน้อยว่าบรรทัดนี้และไฟล์ที่แก้ไขโดยทั่วไปทำอะไรได้บ้าง
nixda

start-stop-daemon เป็นยูทิลิตี Linux ที่ให้คุณควบคุมการตั้งค่าต่าง ๆ ภายใต้ที่ daemon ทำงานอยู่ พารามิเตอร์ส่วนใหญ่ถูกส่งผ่านในตัวแปรเชลล์ การแก้ไขที่สำคัญคือการเพิ่ม "--umask 0006" ซึ่งออกจากสิทธิ์ R / W สำหรับผู้ใช้และกลุ่ม แต่ลบออกสำหรับผู้อื่นและการเพิ่มของพารามิเตอร์กลุ่ม (": $ dbgrp") ไปยังพารามิเตอร์ -c ซึ่ง ตั้งค่า UID / GID ที่กระบวนการ daemon ทำงานเป็น) คำสั่ง Mac นั้นคล้ายกัน แต่ฉันไม่พบโปรแกรมอรรถประโยชน์ที่คล้ายกันดังนั้นให้ใช้การตั้งค่าเหล่านี้ในเชลล์ที่ใช้งาน Dropbox
ไมเคิล

สิ่งนี้ใช้ได้กับเวอร์ชันดรอปบ็อกซ์ปัจจุบันหรือไม่ สคริปต์ dropboxd ของฉันคือ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 $@และตั้งอยู่ใน. /.dropbox-dist/ และจัดการผ่านสคริปต์ python ที่ให้มา
จักรยาน

@ จักรยานฉันไม่ได้รับแจ้งให้อัพเดตไคลเอนต์ดรอปบ็อกซ์ของฉันตั้งแต่เริ่มใช้โซลูชันนี้
Michael

@Michael Dropbox ตอบสนองต่อคำขอบริการของคุณหรือไม่
bbozo

0

วางไฟล์นั้นไว้ในโฟลเดอร์ของตัวเองและแชร์โฟลเดอร์นั้นกับผู้ใช้รายอื่น วิธีนี้พวกเขากำลังแก้ไขเวอร์ชันล่าสุดเช่นเดียวกับคุณ ระวังอย่าทำงานกับมันในเวลาเดียวกัน


1
การอัปเดตคำถามเดิมของฉันเพื่อสะท้อนถึงความจริงที่ว่าผู้ใช้รายอื่นเป็นเจ้าของโฟลเดอร์ที่มีไฟล์ดังกล่าวอยู่แล้ว มันไม่ได้ทำให้แตกต่าง Dropbox ยังคงเพิกเฉยต่อความเป็นเจ้าของ / สิทธิ์ปัจจุบันและรีเซ็ตพวกเขาเมื่อใดก็ตามที่ไฟล์จะถูกซิงค์กับเครื่อง
ไมเคิล

0

หากคุณคัดลอกไฟล์ระหว่างคอมพิวเตอร์สองเครื่องซอฟต์แวร์ที่คัดลอกจะตัดสินว่าสิทธิ์ใดบ้างที่อยู่บนสำเนา สำหรับสิ่งที่คุณทำคุณจำเป็นต้องมีการจับคู่สิทธิ์อย่างละเอียด Dropbox คุณสมบัติได้รับอนุญาตการทำแผนที่จะถูก จำกัด ให้การรักษาสิทธิ์ถ้าทั้งสองระบบเรียกใช้ระบบปฏิบัติการเดียวกัน ไม่มีการรับประกันผลลัพธ์เฉพาะสำหรับการคัดลอกระหว่างสองระบบปฏิบัติการที่แตกต่างกัน

แม้ว่าคุณจะสามารถหาวิธีใช้ Dropbox ในแบบที่คุณต้องการได้บ้างฉันก็จะไม่แนะนำให้ใช้มัน ซอฟต์แวร์ที่ไม่มีเอกสารประกอบมีวิธีการหายไปโดยไม่แจ้งให้ทราบล่วงหน้า คุณต้องดูที่เครื่องมือถ่ายโอนไฟล์ที่ออกแบบโดยคำนึงถึงการใช้งานของคุณ ตัวเลือกแรกของฉันจะเป็นrsyncซึ่งเป็นมาตรฐานใน distros ลินุกซ์และง่ายต่อการติดตั้งบน Windows, โดยเฉพาะอย่างยิ่งถ้าคุณมีCygwin และโดยทั่วไป Cygwin นั้นมีประโยชน์สำหรับผู้ที่ต้องทำงานกับทั้ง Windows และ Linux!

แน่นอน rsync ต้องการการเชื่อมต่อโดยตรงไม่มีเซิร์ฟเวอร์กลางเช่นเดียวกับ Dropbox วิธีจัดการกับสิ่งนั้นขึ้นอยู่กับรายละเอียดการตั้งค่าเครือข่ายของคุณ


ใช่ฉันเห็นด้วยกับสิ่งที่คุณพูดเกี่ยวกับนิสัยใจคอ ในใจของฉันนี่เป็นเหตุผลที่ดีที่จะหยุดการอัปเกรดซอฟต์แวร์ - ถ้าทำในสิ่งที่คุณต้องการทำไมต้องเสี่ยงรุ่นที่ใหม่กว่า!
ไมเคิล

rsync ไม่ใช่แบบสองทิศทางและจะไม่อัปเดตโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงไฟล์
ไมเคิล

@Michael คุณไม่มีทางเลือกเกี่ยวกับการอัปเกรดซอฟต์แวร์เสมอไป เมื่อเป็นระบบคลาวด์ (เช่น Dropbox) คุณจะไม่มีทางเลือก และยากที่จะทราบว่าเหตุใดทิศทางแบบสองทิศทางหรือการคัดลอกอัตโนมัติจึงเป็นสิ่งจำเป็นสำหรับสิ่งที่คุณพยายามทำ
Isaac Rabinovitch

ตราบใดที่บริการยังคงย้อนกลับเข้ากันได้กับไคลเอนต์ก่อนหน้าคุณมีทางเลือก และหาก Dropbox ไม่สามารถบังคับให้ทุกคนอัปเกรดได้ทันทีฉันสงสัยว่าพวกเขาสามารถทำอะไรบางอย่างเช่นทำการเปลี่ยนแปลงระดับต่ำไปยังโปรโตคอลซึ่งจะทำให้ลูกค้าเก่าเสีย วิธีเดียวที่ฉันเห็นพวกเขาทำได้คือผ่านการเปลี่ยนแปลงบางอย่าง
ไมเคิล

เกี่ยวกับสิ่งที่ฉันพยายามจะทำฉันพยายามบำรุงรักษาชุดของไฟล์บนเครื่องที่แตกต่างกันสองเครื่องและสามารถแก้ไขไฟล์ใดไฟล์หนึ่งในเวลาใดก็ได้จากนั้นข้ามไปที่อีกอันหนึ่งในเวลาอันสั้นและรับ ที่ฉันออกไปโดยไม่ต้องทำอะไรด้วยตนเองเช่นเริ่ม rsync สิ่งนี้ส่วนใหญ่เป็นเพราะฉันอาจทำการแก้ไขจากระยะไกล (เช่นผ่านเว็บอินเตอร์เฟส) และมีปัญหาเช่นไฟร์วอลล์และเวลาแฝงซึ่งทำให้ไม่สะดวกในการเก็บสำเนาข้อมูลส่วนกลาง
ไมเคิล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.