Mac OS X - Cara Melakukan Symlink / home to / Users

14

Bagi kita yang berkecimpung dalam penguin dan apel, tampaknya sangat berharga untuk dapat menggunakan / jalur rumah baik di luar habbit atau untuk kasus-kasus aneh di mana nilai mungkin telah disinkronkan di suatu tempat di sepanjang baris dalam beberapa file yang Anda gunakan di kedua mesin.

anthonyryan1
sumber
6
~usernamememperluas ke direktori home Anda terlepas dari Mac OSX atau Linux.
nohillside
1
Saya mengetahui hal ini, tetapi beberapa aplikasi lintas platform menyimpan jalur absolut. Contohnya adalah Sublime Text 2.
anthonyryan1
1
Bahkan hanya ~memperluas ke direktori home Anda. Bisakah Anda menjelaskan dalam pertanyaan Anda apakah Anda ingin symlink ke direktori home pengguna Anda (mis. /Users/[username]) Atau bahkan direktori User itu sendiri ( /Users/) yang berisi direktori terpisah untuk semua pengguna di mesin?
cleverbit

Jawaban:

19

sudo ln -s /Users /homeakan bekerja dengan konfigurasi tambahan, tetapi saya tidak berpikir itu adalah ide yang baik karena Anda harus mengakses rumah melalui ~di shell atau $HOME. Juga /homemungkin standar Linux dan sering digunakan dalam Unix tetapi tidak selalu jadi lebih baik untuk mengandalkan informasi yang dijamin untuk bekerja bukan sesuatu yang bekerja hanya sebagian besar waktu jika setiap orang telah membuat konvensi.

Untuk membuat sudo ln -s /Users /homepekerjaan, ikuti langkah-langkah ini (dari komentar):

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
pengguna151019
sumber
7
Pertama-tama edit /etc/auto_masterdan beri komentar di telepon rumah. Kemudian reboot untuk membebaskan sumber daya / home yang ada. Kemudian Anda dapat symlink direktori menggunakan yang berikut ini. ln -s /Users /home. Sampai Anda melakukan ini, Anda tidak akan diizinkan untuk membuat symlink karena sumber daya sedang sibuk.
anthonyryan1
@AR. Adakah potensi konsekuensi negatif dari melakukan hal itu (atau mengapa itu ada di tempat pertama?). Dan saya tidak diizinkan untuk mengeditnya bahkan sebagai root atau setelah chmod + w / etc / auto_master apakah ada cara lain?
Abe
2
-1. Ini menghasilkan operation not supportedpesan
Abe
2
@Abe Tidak jika Anda mengikuti arahan @ AR. Perhatikan bahwa Anda tidak harus reboot; Anda bisa menjalankannya sudo automount -cv.
zigg
@zigg terima kasih. Tapi itu masih belum membuat jawabannya lengkap. Saya akan mengusulkan suntingan - Lagi pula saya tidak bisa mengundurkan diri!
Abe
5

Saya menyesal jawaban ini tidak sepenuhnya berwibawa, karena saya tidak pernah benar-benar melakukan ini sendiri - walaupun saya telah menggunakan automounter serupa pada sistem Unix lainnya - tapi inilah pemahaman saya mengenai apa /homeyang digunakan untuk OS X.

Jadi, mari ikuti jejaknya:

Jika Anda pertama kali mengetik mountTerminal untuk menampilkan tunggangan aktif, Anda akan melihat baris ini:

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

autofspeta didefinisikan /etc/auto_master, dan /homepada gilirannya didefinisikan secara khusus di /etc/auto_home. Jika Anda melihat /etc/auto_home, Anda akan melihat baris ini:

+/usr/libexec/od_user_homes

Ikuti jejak satu langkah lagi untuk yang od_user_homeshalaman manual , dan Anda akan menemukan sebuah program yang tujuannya adalah untuk mengambil nama pengguna, mencarinya di Open Directory, dan kembali URL ke direktori home pengguna. Jika Anda membaca auto_masterdi halaman manualnya , Anda akan menemukan bahwa menggunakan program yang dapat dieksekusi untuk peta menghasilkan program yang dipanggil untuk mencari URL yang akan dipasang, yang pada gilirannya dipasang di tempat.

Tampaknya aplikasi yang dimaksud adalah, jika Mac Anda terhubung ke layanan direktori, /home/jdoeakan menyebabkan automounter me jdoe- mount direktori home di sana.

Berdasarkan hal ini, tampaknya logis untuk menyimpulkan bahwa jika Anda tidak bermaksud untuk menghubungkan Mac Anda ke layanan direktori, Anda mungkin tidak masalah menghapus /homepemasangan otomatis seperti yang dijelaskan dalam komentar ini . Saya tidak tahu bagaimana pembaruan OS di masa depan akan menangani hal ini.

zigg
sumber
1
Saya suka menggunakan automounter, daripada menonaktifkannya. Jadi saya akan membiarkan automounter mount / Users / $ USER ke / home / $ USER. Saya ingin tahu apakah sesederhana mengganti baris di / etc / auto_home dengan sesuatu seperti "+ / bin / echo / home / $ 1", atau jika Anda ingin penanganan kesalahan yang tepat, buat skrip yang mereplikasi apa yang dilakukan od_user_homes
Tim B
@TimB Pikiran yang menarik. Setelah bermain dengannya sedikit, saya tidak sepenuhnya yakin Anda dapat menentukan jalur lokal yang automountdakan ditangani. Tampaknya mungkin untuk melakukan NFS, SMB, dan AFS.
zigg
Saya tidak tahu apakah itu bekerja di Linux, tapi itu yang selalu saya lakukan di Solaris. Direktori sebenarnya adalah / export / home / $ USER, dan ada konfigurasi standar untuk automount yang ke / home / $ USER. Bahkan, sepertinya itu sekarang konfigurasi standar dalam Solaris 11.x menurut blogs.oracle.com/observatory/entry/automounted_home_directory
Tim B
1
Saya hanya melihat dengan cepat. Anda bahkan tidak perlu meniru od_user_homes peta yang dapat dieksekusi. Itu hanya ada untuk mendukung OD. Penghitungan otomatis dari / Pengguna / $ USER ke / home / $ USER adalah mungkin. Itu ditampilkan di halaman manual auto_master, meskipun contoh di sana menunjukkan mount NFS jauh daripada direktori lokal, itu harus bekerja secara lokal juga.
Tim B
Saya mungkin telah melakukan sesuatu yang salah, tetapi saya mencoba mengkonfigurasi jalur lokal di mana saya bisa menggunakan NFS mount dan menerima Input/output errorketika mencoba cd. Dari bacaan saya, sepertinya saya hanya bisa menggunakan NFS, SMB, atau AFS, seperti yang saya katakan. Tapi mungkin kita harus mengambil jalur eksperimen ini di tempat lain ...
zigg
2

Tidak ada gunanya /home. OS X, seperti berbagai versi Unix lainnya, memiliki lokasi yang unik untuk pengguna. Di Linux ada di /home/user, dan di OS X ada di /Users. Inilah sebabnya mengapa adalah praktik yang baik untuk menggunakan " ~" steno atau variabel lingkungan $HOME.

Meskipun Anda dapat membuat symlink ke direktori home / base pengguna /Users/[username]menggunakan perintah berikut:

ln -s ~ /foo

Ini tidak akan berfungsi untuk membuat tautan yang dinamai /homekarena sudah ada direktori (n tidak terpakai) dengan nama itu di root sistem.

cleverbit
sumber
1
Persis. Saya sudah menggunakan sistem mirip Unix lain yang menggunakan konvensi lain untuk direktori home karena berbagai alasan, misalnya /export/home/usernamepada Solaris. Praktik buruk untuk menganggap /home/usernameakan berhasil. Program yang mencari direktori home harus menggunakan getpwnamatau getpwuid.
zigg
1
Saya sepenuhnya setuju bahwa ini adalah praktik buruk bagi program untuk menganggap keberadaannya, tetapi itu tidak membahas bahwa terkadang perangkat lunak tidak dikembangkan dengan cara yang kompeten.
anthonyryan1
Di antara tunggangan dalam kasus saya dan yang lain: map auto_home on /home (autofs, automounted, nobrowse)... sementara saya tidak tahu asal dari tunggangan itu, saya harus tidak setuju dengan "tidak ada gunanya /home".
Graham Perrin
Maaf seharusnya lebih jelas: hanya dimaksudkan /hometampaknya dicadangkan, tetapi tidak digunakan dalam OSX, bukan berarti tidak ada gunanya;)
cleverbit
@ Richarddas Saya mendapatkan operation not supportedkesalahan yang sama sudo ln -s /Users/username /home/usernameseperti yang saya lakukan sudo ln -s /Users /home. Solusi yang disediakan oleh @AR berfungsi (komentar di /homebaris /etc/auto_masterdan reboot).
Abe
1

Saya tidak melihat alasan sama sekali untuk tidak mengganti nama direktori / home (kalau-kalau saya salah) dan membuat tautan simbolis dari / home ke / Pengguna (atau, seperti di mesin saya, / Volume / Pengguna sejak sistem saya disk untuk sistem, sial!)

Saya dulu bekerja sebagai sysadmin, di departemen universitas dengan 11 rasa unix. Kami memiliki semua jenis symlink di pohon direktori global sehingga sistem file akan melakukan hal yang benar, dan skrip sedekat mungkin untuk bekerja di mana-mana. Anda benar-benar mengalami beberapa gotcha, tetapi jika jari Anda terbiasa mengetik / home / foo dan symlink menunda pekerjaan pelatihan ulang untuk jari Anda, lanjutkan.

Demikian pula beberapa linuxen akan memiliki direktori Home sebagai / usr / home sudah.

Satu tempat saya bekerja memiliki direktori home / Users / {group} / {username} sebagai perlindungan parsial terhadap mahasiswa yang merendahkan file profesor jika prof tersebut ceroboh dengan izinnya. Direktori Users telah menjalankan tetapi tidak ada bit baca yang ditetapkan, dan direktori grup hanya dapat dibaca oleh anggota grup.

(Semua ini dalam ilustrasi ada banyak cara untuk menghilangkan kucing khusus pelt ini.

Satu kemungkinan gotcha - periksa bahwa mesin waktu tidak membuat dua salinan dari semuanya. Saya tidak tahu bagaimana TM memperlakukan symlink. Jika ya, tambahkan / beranda ke daftar mengecualikan TM.

Sherwood Botsford
sumber
1
Jika sesuatu atau seseorang menetapkan mode yang tidak pantas atau ACL untuk alternatif Anda untuk /Userskemudian rutinitas akrab untuk memperbaiki izin mungkin akan gagal untuk membuat koreksi yang diperlukan. Jadi saya sarankan yang /Usersharus diinstal oleh Apple: direktori, bukan tautan simbolik.
Graham Perrin
0

Saya mencoba ini sebelumnya dan membuatnya bekerja selama sekitar satu minggu sampai saya reboot ...

Anda tidak bisa hanya terhubung /homeke /Users. Bahkan, Anda bahkan tidak bisa menghapusnya /home.

Jika Anda berhasil menghapus /home, itu akan muncul kembali setelah Anda reboot.

Jika Anda pindah /homeke /home.old, dan symlink /home, itu akan menghapus symlink /home.

Anda bisa membuatnya berfungsi selama mac Anda tidak macet atau reboot.

Ketika Anda me-reboot, semuanya lenyap!

Ketika Anda reboot, Mac OS X tampaknya berpikir bahwa Anda sedang membuat pengguna baru, sehingga itu akan menimpa semua preferensi pengguna Anda di /Users/usernamedirektori lama Anda .

Karena Anda menyalin semuanya ke /home/username, Anda berharap untuk melihat direktori home baru Anda ketika melakukan ls /homesetelah Anda reboot. Sebagai gantinya, Anda TIDAK mendapatkan apa-apa !!! Seolah-olah itu tidak pernah ada.

Dalam kasus saya, saya panik selama sekitar 30 menit, lalu saya boot ke mode pengguna tunggal untuk melihat apakah sesuatu dapat dilakukan. Saya berpikir bahwa saya mungkin dapat mengambil file log atau mencoba memulai utilitas perbaikan.

Dalam mode pengguna tunggal, direktori rumah saya ada di sana. Apple sengaja menyembunyikan direktori yang baru dibuat di bawah /homedari pengguna saat berada dalam mode multi-pengguna. Ini adalah fitur desain yang sengaja dibuat jahat.

Apple lumpuh dan tidak mendukung semua jenis peretasan OS mereka. Seperti apa fitur desain itu? Apple menyembunyikan konten /homedirektori yang baru dibuat . Sama sekali tidak ada alasan sah bagi Apple untuk menghapus /homedirektori secara otomatis ... atau direktori buatan pengguna sama sekali!

Dalam hal ini, mereka memasang direktori di direktori / home Anda ... secara efektif menyembunyikannya.

Jika Anda benar-benar bertekad untuk menggunakan /homebukan /Users, Anda mungkin bisa mendapatkan sekitar itu dengan menulis script untuk set semuanya pada setiap boot.

Juga, saya harus menyebutkan bahwa Anda harus dapat menggunakan beberapa direktori lain yang bukan /homesebagai pengganti /Userskarena hanya /homedilarang.

Jika Anda menggunakan bash, maka Anda harus mengatur beberapa variabel lingkungan ... yaitu: CD_HOMEdan HOME.

Saya ingin menambahkan itu ... meskipun Anda tidak dapat melepas atau memaksa melepas /home, Anda dapat memasang disk di atas /home. Semua ini dipasang di atas "auto_home".

Saya dapat me-mount disk pemulihan di atas /homeberhasil ... mungkin ini adalah bagaimana hal itu dapat dilakukan.

Tim
sumber
TL / DR; kustomisasi ulang boot-proof dimungkinkan menggunakan jawaban berperingkat teratas
MarkHu