Mac OS X - วิธี Symlink / home to / Users


14

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


6
~usernameขยายไปยังโฮมไดเร็กตอรี่ของคุณโดยไม่คำนึงถึง Mac OSX หรือ Linux
nohillside

1
ฉันรู้เรื่องนี้แล้ว แต่บางแอปพลิเคชันข้ามแพลตฟอร์มบันทึกเส้นทางที่แน่นอน ตัวอย่างเช่น Sublime Text 2
anthonyryan1

1
อันที่จริงเพียง~ขยายไปยังไดเรกทอรีบ้านของคุณ คุณช่วยอธิบายให้ชัดเจนในคำถามของคุณได้ไหมว่าคุณต้องการเชื่อมโยงไปยังโฮมไดเร็กตอรี่ของผู้ใช้ (เช่น/Users/[username]) หรืออันที่จริงแล้วยูสเซอร์เองนั้น ( /Users/) ซึ่งมีไดเรคทอรีแยกต่างหากสำหรับผู้ใช้ทั้งหมดในเครื่อง
cleverbit

คำตอบ:


19

sudo ln -s /Users /homeจะทำงานร่วมกับการกำหนดค่าเพิ่มเติม แต่ฉันไม่คิดว่าเป็นความคิดที่ดีที่สุดเท่าที่คุณควรจะเข้าถึงบ้านผ่านในเปลือกหรือ~ $HOMEนอกจากนี้ยัง/homeอาจจะมีมาตรฐานลินุกซ์และมักจะนำมาใช้ในระบบปฏิบัติการยูนิกซ์ แต่ไม่เสมอเพื่อให้ดีกว่าที่จะพึ่งพาข้อมูลที่มีการประกันการทำงานไม่ใช่สิ่งที่จะทำงานเฉพาะส่วนใหญ่ของเวลาถ้าทุกคนได้เก็บไปประชุม

ในการsudo ln -s /Users /homeทำงานให้ทำตามขั้นตอนเหล่านี้ (จากความคิดเห็น):

EDITOR=nano sudo -e /etc/auto_master
# add a "#" at the start of the line beginning with /home
# save changes
sudo automount -cv
sudo ln -s /Users /home

7
ก่อนอื่นให้แก้ไข/etc/auto_masterและใส่ความคิดเห็นในบรรทัดแรก จากนั้นรีบูตเพื่อปล่อยทรัพยากรที่มีอยู่ / บ้านให้เป็นอิสระ จากนั้นคุณสามารถเชื่อมโยงไดเรกทอรีโดยใช้ข้อมูลต่อไปนี้ ln -s /Users /home. จนกว่าคุณจะทำเช่นนี้คุณจะไม่ได้รับอนุญาตให้สร้าง symlink เนื่องจากทรัพยากรไม่ว่าง
anthonyryan1

@AR มีผลกระทบด้านลบที่อาจเกิดขึ้นจากการทำเช่นนั้น (หรือทำไมจึงมีในตอนแรก?) และฉันไม่ได้รับอนุญาตให้แก้ไขแม้เป็น root หรือหลังจาก chmod a + w / etc / auto_master จะมีวิธีอื่นหรือไม่
Abe

2
-1 ผลลัพธ์นี้ในoperation not supportedข้อความ
Abe

2
@Abe ไม่ได้หากคุณทำตามทิศทางของ @ AR. โปรดทราบว่าคุณไม่ต้องรีบูตเครื่อง คุณสามารถเรียกใช้sudo automount -cvแทน
zigg

@zigg ขอบคุณ แต่นั่นก็ยังไม่ได้ทำให้คำตอบเสร็จสมบูรณ์ ฉันจะเสนอการแก้ไข - ฉันไม่สามารถลงคะแนนได้เลย!
Abe

5

ฉันเสียใจที่คำตอบนี้ไม่ได้มีอำนาจเพราะฉันไม่เคยทำสิ่งนี้มาก่อน - แม้ว่าฉันจะใช้ระบบอัตโนมัติที่คล้ายกันในระบบ Unix อื่น ๆ - แต่นี่คือความเข้าใจของฉันเกี่ยวกับสิ่งที่/homeใช้สำหรับ OS X

ดังนั้นติดตามเส้นทาง:

หากคุณพิมพ์mountเทอร์มินัลเพื่อแสดงการเมาท์ที่ใช้งานอยู่คุณจะเห็นบรรทัดนี้:

map auto_home on /home (autofs, automounted, nobrowse)

autofsแผนที่ที่กำหนดไว้ใน/etc/auto_masterและเป็นในทางกลับกันที่กำหนดไว้โดยเฉพาะใน/home /etc/auto_homeหากคุณดูที่/etc/auto_homeคุณจะเห็นบรรทัดนี้:

+/usr/libexec/od_user_homes

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

ดูเหมือนว่าแอปพลิเคชันที่ต้องการหาก Mac ของคุณเชื่อมต่อกับบริการไดเรกทอรี/home/jdoeจะทำให้ออโต้เมาท์ติดตั้งjdoeโฮมไดเรกทอรีของที่นั่น

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


1
ฉันชอบที่จะใช้เครื่องออโต้แทนการปิดการใช้งาน ดังนั้นฉันจะให้ automounter เมานต์ / ผู้ใช้ / $ USER เข้าสู่ / home / $ USER ฉันสงสัยว่ามันง่ายเหมือนการแทนที่บรรทัดนั้นใน / etc / auto_home ด้วยบางอย่างเช่น "+ / bin / echo / home / $ 1" หรือถ้าคุณต้องการจัดการข้อผิดพลาดที่เหมาะสมสร้างสคริปต์ที่ทำซ้ำสิ่งที่ od_user_homes
Tim B

@TimB ความคิดที่น่าสนใจ ต้องเล่นกับมันนิดหน่อยฉันไม่แน่ใจว่าคุณสามารถระบุเส้นทางท้องถิ่นที่automountdจะจัดการกับ ดูเหมือนเป็นไปได้ที่จะทำ NFS, SMB และ AFS
zigg

ฉันไม่รู้ว่าใช้งานได้กับ Linux หรือไม่ แต่เป็นสิ่งที่ฉันทำกับ Solaris เสมอ ไดเรกทอรีจริงคือ / export / home / $ USER และมีการกำหนดค่ามาตรฐานเพื่อ automount ที่ไปยัง / home / $ USER ในความเป็นจริงดูเหมือนว่าตอนนี้เป็นการกำหนดค่ามาตรฐานใน Solaris 11.x ตามblogs.oracle.com/observatory/entry/automounted_home_directory
Tim B

1
ฉันแค่มองอย่างรวดเร็ว คุณไม่จำเป็นต้องเลียนแบบแผนที่ที่เรียกใช้งานได้ od_user_homes มีเพียงเพื่อสนับสนุน OD การนับอัตโนมัติสามัญของ / Users / $ USER เข้าสู่ / home / $ USER เป็นไปได้ มันจะแสดงในหน้า man_ auto_master แม้ว่าตัวอย่างที่แสดงให้เห็นการเมาต์ NFS ระยะไกลมากกว่าไดเรกทอรีท้องถิ่นมันควรจะทำงานในท้องถิ่นเช่นกัน
ทิม B

ฉันอาจจะได้รับการทำบางสิ่งบางอย่างผิด แต่ฉันพยายามกำหนดค่าเส้นทางภายในที่ฉันสามารถใช้ NFS ติดและได้รับเมื่อพยายามที่จะInput/output error cdจากการอ่านของฉันดูเหมือนว่าฉันจะสามารถใช้ NFS, SMB หรือ AFS อย่างที่ฉันพูดเท่านั้น แต่บางทีเราควรจะทำการทดลองนี้ที่อื่น…
zigg

2

/homeไม่มีการใช้งานสำหรับเป็น OS X เช่นเดียวกับ Unix รุ่นอื่น ๆ มีตำแหน่งเฉพาะสำหรับผู้ใช้ ในลินุกซ์เป็นที่/home/userและใน OS X /Usersมันจะอยู่ที่ ด้วยเหตุนี้จึงเป็นวิธีปฏิบัติที่ดีที่จะใช้ชวเลข " ~" $HOMEหรือตัวแปรสภาพแวดล้อม

ในขณะที่คุณสามารถสร้าง symlink ไปยังไดเร็กทอรีฐาน / home ของผู้/Users/[username]ใช้โดยใช้คำสั่งต่อไปนี้:

ln -s ~ /foo

จะไม่ทำงานเพื่อสร้างลิงก์ที่มีชื่อ/homeเนื่องจากมีไดเรกทอรี (ไม่ได้ใช้งาน) ที่มีชื่อนั้นอยู่ที่รูทของระบบ


1
เผง ฉันใช้ระบบ Unix ที่ใช้อนุสัญญาอื่นสำหรับโฮมไดเร็กตอรี่ด้วยเหตุผลหลายประการเช่น/export/home/usernameในโซลาริส เป็นการปฏิบัติที่ไม่ถูกต้องที่จะถือว่าใช้/home/usernameงานได้ โปรแกรมมองหาไดเรกทอรีบ้านควรจะใช้หรือgetpwnam getpwuid
zigg

1
ฉันเห็นด้วยอย่างยิ่งว่ามันเป็นการปฏิบัติที่ไม่ดีสำหรับโปรแกรมที่จะคิดว่ามันมีอยู่จริง แต่นั่นก็ไม่ได้ชี้ว่าบางครั้งซอฟต์แวร์ไม่ได้พัฒนาขึ้นอย่างมีความสามารถ
anthonyryan1

ท่ามกลางภูเขาในกรณีของฉันและอื่น ๆ : map auto_home on /home (autofs, automounted, nobrowse)... ในขณะที่ฉันไม่ทราบที่มาของภูเขานั้นฉันควรไม่เห็นด้วยกับ "ไม่มีประโยชน์/home"
Graham Perrin

ขออภัยควรมีความชัดเจนมากขึ้น: หมายถึง/homeมีการจองไว้อย่างชัดเจน แต่ไม่ได้ใช้งานใน OSX ไม่ใช่ว่าไม่มีประโยชน์ในการใช้;)
cleverbit

@richarddas ฉันได้รับเหมือนกันoperation not supportedข้อผิดพลาดจากการที่ผมทำจากsudo ln -s /Users/username /home/username sudo ln -s /Users /homeโซลูชันที่จัดทำโดย @AR ใช้งานได้ (แสดงความคิดเห็นใน/homeบรรทัด/etc/auto_masterและรีบูต)
Abe

1

ฉันไม่เห็นเหตุผลใด ๆ ที่จะไม่เปลี่ยนชื่อไดเรกทอรี / home (ในกรณีที่ฉันผิด) และสร้างลิงก์สัญลักษณ์จาก / home เป็น / ผู้ใช้ (หรือในเครื่องของฉัน / Volumes / Users เนื่องจากระบบของฉัน ดิสก์ใช้สำหรับระบบ, dammit!)

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

ในทำนองเดียวกันบาง linuxen จะมีไดเรกทอรีบ้านเป็น / usr / home แล้ว

ที่เดียวที่ฉันทำงานมีโฮมไดเร็กตอรี่ของ / Users / {group} / {ชื่อผู้ใช้} เพื่อปกป้องนักเรียนบางส่วนที่กำลังคลานไปรอบ ๆ ไฟล์ของอาจารย์ถ้าศาสตราจารย์ไม่ใส่ใจกับสิทธิ์ของเขา ไดเร็กทอรี Users มีการดำเนินการ แต่ไม่ได้ตั้งค่าบิตการอ่านและไดเร็กทอรีกลุ่มสามารถอ่านได้เฉพาะกับสมาชิกกลุ่มเท่านั้น

(ทั้งหมดนี้แสดงให้เห็นว่ามีหลายวิธีในการกีดกันลูกแมวของเขา

gotcha ที่เป็นไปได้อันหนึ่ง - ตรวจสอบว่าไทม์แมชชีนไม่ได้จบลงด้วยการทำสำเนาสองชุด ฉันไม่รู้ว่า TM จัดการกับ symlinks อย่างไร ถ้าเป็นเช่นนั้นให้เพิ่ม / home ไปยังรายการแยกของ TM


1
หากบางสิ่งบางอย่างหรือบางคนตั้งค่าโหมดที่ไม่เหมาะสมหรือ ACL สำหรับทางเลือกของคุณ/Usersแล้วขั้นตอนที่คุ้นเคยสำหรับการซ่อมแซมสิทธิ์อาจไม่สามารถทำการแก้ไขที่ต้องการได้ ดังนั้นฉันขอแนะนำว่า/Usersควรติดตั้งโดย Apple: ไดเรกทอรีไม่ใช่ลิงก์สัญลักษณ์
Graham Perrin

0

ฉันลองมาก่อนและทำให้มันใช้งานได้ประมาณหนึ่งสัปดาห์จนกว่าฉันจะรีบูต ...

คุณไม่สามารถเพียงแค่ symlink ไป/home /Usersที่จริงแล้วคุณไม่สามารถลบ/homeได้

หากคุณจัดการที่จะลบ/homeมันจะปรากฏขึ้นอีกครั้งหลังจากที่คุณรีบูต

ถ้าคุณย้าย/homeไป/home.oldและ symlink /homeจะลบ /homesymlink

คุณสามารถใช้งานได้ตราบใดที่ mac ของคุณไม่ได้ทำงานผิดพลาดหรือรีบูต

เมื่อคุณรีบูททุกอย่างจะหายไป!

เมื่อคุณรีบูต Mac OS X ดูเหมือนจะคิดว่าคุณกำลังสร้างผู้ใช้ใหม่ดังนั้นมันจะเขียนทับการตั้งค่าผู้ใช้ทั้งหมดใน/Users/usernameไดเรกทอรีเก่าของคุณ

เมื่อคุณคัดลอกทุกอย่างไปยัง/home/usernameคุณคาดว่าจะเห็นไดเรกทอรีบ้านใหม่ของคุณเมื่อทำls /homeหลังจากรีบูต แต่คุณจะไม่มีอะไรเลย !!! มันราวกับว่ามันไม่เคยมีอยู่

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

ในโหมดผู้ใช้คนเดียวไดเรกทอรีบ้านของฉันอยู่ที่นั่น Apple ตั้งใจซ่อนไดเรกทอรีที่สร้างขึ้นใหม่ภายใต้/homeจากผู้ใช้เมื่ออยู่ในโหมดผู้ใช้หลายคน นี่คือคุณลักษณะการออกแบบที่ชั่วร้ายโดยเจตนา

Apple อ่อนแอและไม่สนับสนุนการแฮ็คระบบปฏิบัติการทุกชนิด คุณลักษณะการออกแบบชนิดใดที่เป็นเช่นนั้น? Apple ซ่อนเนื้อหาของ/homeไดเรกทอรีที่สร้างขึ้นใหม่ ไม่มีเหตุผลอันสมควรที่ Apple จะลบ/homeไดเรกทอรี ... หรือไดเรกทอรีที่ผู้ใช้สร้างขึ้นโดยอัตโนมัติ!

ในกรณีนี้พวกเขากำลังติดตั้งไดเรกทอรีเหนือ / home ของคุณ ... ซ่อนอย่างมีประสิทธิภาพ

หากคุณตั้งใจแน่วแน่ที่จะใช้/homeแทนคุณ/Usersอาจสามารถหลีกเลี่ยงได้โดยการเขียนสคริปต์เพื่อตั้งค่าทุกอย่างในการบู๊ตทุกครั้ง

นอกจากนี้ฉันควรพูดถึงว่าคุณควรจะสามารถใช้ไดเรกทอรีอื่น ๆ ที่ไม่ได้/homeใช้แทน/Usersเพราะ/homeถูกแบนเท่านั้น

ถ้าคุณใช้ทุบตีแล้วคุณจะต้องตั้งบางส่วนของตัวแปรสภาพแวดล้อม ... คือ: และCD_HOMEHOME

ฉันต้องการที่จะเพิ่มว่า ... แม้ว่าคุณจะไม่สามารถยกเลิกการต่อเชื่อมหรือบังคับ unmount /homeคุณสามารถ/homeติดตั้งดิสก์ด้านบนของ ทั้งหมดนี้ติดตั้งที่ด้านบนของ "auto_home"

ฉันสามารถติดตั้งดิสก์กู้คืนได้/homeสำเร็จ ... บางทีนี่อาจเป็นวิธีที่ทำได้


TL / DR; การปรับแต่งการบู๊ตซ้ำเป็นไปได้โดยใช้คำตอบที่ได้รับคะแนนสูงสุด
MarkHu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.