วิธีจัดการสิทธิ์บนโวลุ่มที่แชร์สำหรับ OSX และ Ubuntu


8

สำหรับ mac ของฉันฉันใช้พาร์ติชั่น HFS ที่ไม่ได้บันทึกเพื่อแชร์ไฟล์ระหว่าง OSX 10.8 และ Ubuntu 12.04

มันเป็นความคิดที่ดีในตอนแรกเพราะ Time Machine จะสำรองข้อมูลเสียงใน OSX โดยอัตโนมัติ แต่ในไม่ช้าฉันก็สังเกตเห็นว่า OSX และ Ubuntu ยุ่งกับการอนุญาตในลักษณะที่ทำให้ฉันยุ่งเหยิง

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

เป็นไปได้หรือไม่ที่จะตั้งค่าการอนุญาตบางอย่างถาวรเพื่อให้ทั้งสองระบบปฏิบัติการเคารพอย่างถาวร?

ฉันเดาว่า 777 จะใช้งานได้ แต่ฉันคิดว่านี่ไม่ใช่สิ่งที่ฉลาดที่ต้องทำ แต่ตราบใดที่ 'คนอื่น' ไม่สามารถเข้าถึงได้เต็มรูปแบบ (ที่สาม) ฉันเห็นไอคอนล็อคในไฟล์ในอูบุนตู


1
คุณมีชื่อผู้ใช้เดียวกันทั้งใน OS X และ Ubuntu หรือไม่ ถ้าคุณมีชื่อผู้ใช้ที่แตกต่างกันคุณสามารถลองเพิ่มชื่อผู้ใช้อูบุนตูในกลุ่มของคุณใน OS X และในทางกลับกัน วิธีนี้คุณจะต้อง774ได้รับอนุญาตเท่านั้น
edwin

@ edwin ขอบคุณสำหรับเคล็ดลับ ฉันจะเพิ่มชื่อผู้ใช้ในกลุ่มของฉันได้อย่างไร ใช้งาน 777 สมเหตุสมผลหรือไม่ปลอดภัย?

คำตอบ:


12

ชื่อผู้ใช้ไม่เกี่ยวข้อง สิทธิ์ในระบบไฟล์ทั้ง HFS + และ Linux ถูกเก็บในรูปแบบของIDผู้ใช้(UID) ซึ่งเป็นตัวเลขที่เกี่ยวข้องกับชื่อผู้ใช้ ใน Ubuntu เช่นเดียวกับการกระจาย Linux ที่ทันสมัยผู้ใช้คนแรกจะได้รับ UID 1,000 ตามค่าเริ่มต้น ใน OS X ผู้ใช้รายแรกจะได้รับ UID เป็น 501 โดยค่าเริ่มต้น ดังนั้นเมื่อแบ่งปันสื่อที่เข้ารหัสค่า UID ค่า UID จะไม่ตรงกัน

วิธีหนึ่งในการแก้ไขปัญหานี้คือการตั้งค่าการอนุญาตแบบหลวม (ค่าโหมดเป็นในrwxr-xr-xหรือ 755 ในฐานแปด) โปรดทราบว่ารหัสฐานแปดของการอนุญาตไม่เหมือนกับค่า UID ในระบบปฏิบัติการทั้งสองคุณสามารถตั้งค่าการอนุญาตเริ่มต้นที่ใช้กับไฟล์ด้วยumaskคำสั่งซึ่งระบุค่าบิตที่จะลบออกจากการอนุญาตของไฟล์ ตัวอย่างเช่นumask 022ลบสิทธิ์การเขียนสำหรับกลุ่มและการอนุญาตอื่น ๆ ซึ่งส่งผลให้ 755 (rwxr-xr-x) การอนุญาตสำหรับไฟล์ใหม่ (หรือ 644 หากมีบางสิ่งบางอย่างลบบิตสิทธิการใช้งานซึ่งเป็นเรื่องปกติสำหรับไฟล์) นี่เป็นเครื่องมือบรรทัดคำสั่งเป็นส่วนใหญ่ หากคุณเป็นผู้ใช้ GUI เป็นส่วนใหญ่คุณจะต้องค้นหาเครื่องมืออื่นเพื่อใช้ในการทำงานซึ่งอาจเกี่ยวข้องกับค่าเริ่มต้นของสภาพแวดล้อมเดสก์ทอปของคุณ สิ่งนี้อาจคลุมเครือและจัดทำเอกสารไม่ดี นอกจากนี้การตั้งค่าการอนุญาตแบบหลวม ๆ ด้วยวิธีนี้อาจมีข้อเสียด้านความปลอดภัยโดยเฉพาะหากคุณเป็นระบบที่มีผู้ใช้หลายคน

วิธีที่ดีกว่าคือการซิงโครไนซ์ UID บัญชีของคุณบน Linux และ OS X คุณสามารถเปลี่ยนค่า UID ใน Linux ด้วยusermodคำสั่งได้อย่างง่ายดายเช่นเดียวกับใน:

usermod -u 501 dale

คำสั่งนี้ตั้งค่า UID สำหรับdale501 มีข้อแม้ที่สำคัญบางอย่างแม้ว่า:

  • คุณควรออกจากระบบบัญชีที่คุณกำลังแก้ไขก่อนที่จะแก้ไข การพยายามแก้ไขบัญชีที่ไม่ใช้งานจะทำให้บัญชีนั้นเริ่มทำงานผิดปกติ
  • usermodrootจะต้องนำมาใช้เป็น คุณสามารถดำเนินการได้ผ่านทางsudoแต่การดำเนินการดังกล่าวจากบัญชีที่คุณกำลังแก้ไขจะไม่สามารถทำได้ในสุด ดังนั้นคุณจะต้องให้rootรหัสผ่านและเข้าสู่ระบบrootโดยตรงหรือใช้sudoจากบัญชีผู้ใช้ที่สอง
  • usermodคำสั่งจะไม่เปลี่ยนความเป็นเจ้าของของไฟล์ใด ๆ ที่เป็นเจ้าของโดยผู้ใช้ในคำถาม chownในการปรับเจ้าของไฟล์เหล่านั้นคุณจะต้องค้นหาพวกเขาแล้วเปลี่ยนความเป็นเจ้าของของพวกเขาด้วย ไฟล์ส่วนใหญ่จะอยู่ในโฮมไดเร็กตอรี่ของผู้ใช้, ดังนั้นchown -R dale: /home/dale, rootหลังจากพิมพ์daleUID, จะเปลี่ยนdaleไฟล์ส่วนใหญ่เพื่อใช้หมายเลขโพสต์ใหม่. แม้ว่าไฟล์บางไฟล์ของผู้ใช้อาจอยู่ที่อื่น การพิมพ์find / -uid 1000จะค้นหาไฟล์ทั้งหมดที่ใช้ UID เก่า (สมมติว่าเป็น 1,000) โปรดทราบว่าfindคำสั่งนี้อาจใช้เวลาหลายนาทีกว่าจะเสร็จสมบูรณ์ หากต้องการเพิ่มความเร็วให้ยกเลิกการต่อเชื่อมระบบไฟล์ใด ๆ ที่คุณมั่นใจว่าจะไม่พบ Hit เช่นวอลุ่ม FAT หรือ NTFS
  • หากคุณเข้าถึงวอลุ่ม FAT หรือ NTFS ค่า UID ของพวกเขาจะถูกกำหนดโดยตัวเลือก ณ เวลาที่เมานต์ หากคุณใช้ตัวจัดการไฟล์ GUI โอกาสที่ค่า UID จะถูกตั้งค่าเป็นใครก็ตามที่เรียกใช้ตัวจัดการไฟล์ดังนั้นคุณไม่จำเป็นต้องทำอะไรเป็นพิเศษ ถ้าคุณเมานไดรฟ์ผ่าน/etc/fstabรายการคุณอาจต้องปรับค่า UID ที่ระบุ
  • อูบุนตูเก็บค่าต่ำสุดที่จะใช้สำหรับ UIDs /etc/login.defsใน หากคุณไม่สามารถเปลี่ยนUID_MINค่าในไฟล์นี้คุณอาจพบว่าบัญชีของคุณจะ "หายไป" จากหน้าจอเข้าสู่ระบบ GUI และอาจมาจากระบบอื่น ๆ ดังนั้นคุณควรแก้ไขไฟล์นั้น

ในทางทฤษฎีคุณสามารถเปลี่ยน UID ของบัญชี OS X ของคุณด้วยวิธีที่คล้ายกันเพื่อให้บรรลุเป้าหมายเดียวกัน อย่างไรก็ตามฉันไม่ค่อยคุ้นเคยกับเครื่องมือบำรุงรักษาบัญชี OS X ดังนั้นฉันจึงไม่สามารถให้คำแนะนำที่ชัดเจนเกี่ยวกับการทำเช่นนั้นได้ การปรับค่า OS X จะช่วยให้คุณไม่ต้องปรับUID_MINใน Linux

หากคุณมีบัญชีหลายบัญชีในคอมพิวเตอร์ของคุณคุณควรปรับบัญชีทั้งหมดเพื่อให้บัญชีทั้งหมดตรงกับการติดตั้งระบบปฏิบัติการของคุณ

อีกหนึ่งจุด: ค่า Group ID (GID) จะถูกจัดเก็บในลักษณะที่คล้ายกัน IIRC, Ubuntu กำหนดค่า GID สำหรับแต่ละบัญชีที่เหมือนกับค่า UID ฉันไม่จำสิ่งที่ OS X ทำตามค่าเริ่มต้น คุณอาจต้องการปรับค่า GID สำหรับสองระบบปฏิบัติการในลักษณะที่คล้ายคลึงกับการเปลี่ยนแปลง UID แต่สิ่งนี้อาจไม่สำคัญเท่ากับการปรับค่า UID

แก้ไข:หากคุณต้องการเปลี่ยน UID ของคุณ (และ GID หากต้องการ) ใน macOS / OS X แทนที่จะเป็น Ubuntu คุณสามารถทำได้ เนื่องจากการปรับเปลี่ยนใน macOS นี้อยู่นอกเหนือขอบเขตของไซต์นี้ฉันจะลิงก์ไปยังหน้าต่างๆที่ให้ขั้นตอนการทำเช่นนี้ใน macOS:


ว้าวขอบคุณ! นี่เป็นคำตอบที่ครอบคลุมที่เขียนได้ดีมาก - อธิบายบริบททั้งหมดของปัญหา! วิธีการแก้ปัญหานี้ช่วยให้ฉันได้พาร์ติชันที่ใช้ร่วมกันอย่างไม่มีที่ติ ตอนแรกยังคงมีปัญหาของการเป็นเจ้าของไฟล์: "การเพิกเฉยต่อความเป็นเจ้าของของโวลุ่มนี้" ใน OSX จะไม่ให้สิทธิ์การเขียนเพื่อเข้าถึงไฟล์ที่สร้างขึ้นใหม่ของ OSX เมื่อฉันทำงานภายใต้ ubuntu (ไอคอนล็อค) และในทางกลับกัน ดังนั้นฉันสิ้นสุดการตั้งค่าบัญชีใหม่ใน Ubuntu โดยใช้ชื่อผู้ใช้เดียวกันใน OSX และเปลี่ยน UID อีกครั้ง

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

หลังจากทำตามคำแนะนำของคุณฉันพยายามเข้าสู่ระบบในอูบุนตู เมื่อฉันกด Enter ฉันเห็นหน้าจอสีดำเป็นเวลาหนึ่งวินาทีจากนั้นกลับไปที่หน้าจอเข้าสู่ระบบ หลังจากเปลี่ยนกลับไปเป็น 1,000 มาตรฐานจากบัญชีชั่วคราวของฉันฉันสามารถเข้าสู่ระบบอีกครั้ง มีความคิดอะไรที่ทำให้ฉันไม่สามารถเข้าสู่ระบบด้วย uid ใหม่ได้?
borisdiakur

หากคุณละเลยที่จะเปลี่ยนการอนุญาตในไดเรกทอรีบ้านของคุณเองนั่นอาจเป็นสาเหตุของปัญหา หากคุณกำลังใช้ 13.10 UID_MINก็ยังไปได้ว่าบางสิ่งบางอย่างในอูบุนตูมีการเปลี่ยนแปลงว่าก่อให้เกิดปัญหาหากคุณไม่ได้ปรับ
Rod Smith เมื่อ

1
ปรับปรุง: ฉันเพิ่ง usodod ในระบบของฉันและอย่างใดได้รับอนุญาตจากไดเรกทอรีบ้านของฉันไม่ต้องเปลี่ยน!? ทุกอย่างทำงานได้ดีหลังจาก usermod เท่านั้น (ในฐานะที่เป็น root)
krumpelstiltskin

0

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

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

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


ใช้ได้ทั้งสองกรณี แต่ฉันจะใช้ตัวเลือกแรกเท่านั้น แต่การอนุญาตให้เข้าถึง "ทุกคน" (เช่นการอนุญาต 777) นั้นรุนแรงเกินไป - หรือไม่ ปลอดภัยไหม

1
ก็ไม่แนะนำอย่างแน่นอน "ทุกคน" จะสามารถแก้ไขและอ่านเอกสารที่มีสิทธิ์เหล่านั้น (แต่นี่เป็นสิ่งที่ยูนิกซ์ส่วนใหญ่ฉันคิดว่า) 774แน่นอนเล็กน้อยบิตปลอดภัยมากขึ้นกับการใช้งาน
edwin

0

เปิดเทอร์มินัลและ:

ใน OS X ให้ลองสิ่งนี้

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

ใน Ubuntu ให้รันสิ่งนี้

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

ตอนนี้คุณควรจะสามารถใช้774หรือแม้กระทั่ง770สำหรับการอนุญาตไฟล์


มันใช้งานไม่ได้ คำสั่ง OSX ไม่ทำงานเช่นกัน แต่ฉันได้ทำการเพิ่มผู้ใช้ Ubuntu ผ่านทางอินเทอร์เฟซ GUI ใน OSX หลังจากเพิ่มผู้ใช้ของระบบปฏิบัติการอื่น ๆ ลงในระบบปฏิบัติการที่รันอยู่และเปลี่ยนการอนุญาตเป็น 774 ในระบบปฏิบัติการทั้งสอง Ubuntu ยังคงไม่สามารถเข้าถึงไฟล์ทั้งหมดบนพาร์ติชั่นที่แชร์ได้อย่างสมบูรณ์ ไดเร็กทอรีย่อยบางตัวอย่างเช่นฉันไม่สามารถเปิดได้ (สิทธิ์คือ 774) ดังนั้นฉันต้องเปลี่ยนเป็น 777 เพื่อที่จะเปิดมัน การอนุญาตที่สุภาพเหล่านี้ปลอดภัยหรือไม่?

อย่างน้อยใน Ubuntu คำสั่งควรใช้งานได้ก่อนที่จะเพิ่มคำตอบ คุณแน่ใจหรือว่าคุณได้แทนที่<ubuntu-username>ด้วยชื่อผู้ใช้จริงใน Ubuntu (idem for <os-x-usernanme>)? และคุณสามารถระบุได้มากขึ้นเกี่ยวกับข้อผิดพลาดที่ OS X มอบให้คุณเมื่อพยายามเรียกใช้คำสั่งนี้หรือไม่
edwin

ฉันแค่บอกว่าคำสั่งไม่ทำงานใน OSX หากฉันจำได้ถูกต้องคำสั่งadduserจะไม่ออก

ฉันได้แก้ไขคำตอบสำหรับสิ่งนี้แล้ว ลองมัน. ฉันไม่แน่ใจเนื่องจากฉันไม่คุ้นเคยกับการจัดการผู้ใช้ OS X ใน OS X คุณสามารถใช้ GUI เพื่อสร้างผู้ใช้ Ubuntu (ด้วยชื่อผู้ใช้ที่คุณใช้ใน Ubuntu) จากนั้นเพิ่มลงในกลุ่มผู้ใช้ OS X จริงของคุณ
edwin

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