Mac OS X - Nasıl Symlink / home to / Users


14

Penguenler ve elmalar ile uğraşanlar için, alışkanlık dışında / ev yollarını kullanabilmeniz ya da değerin bir dosyada çizginin bir yerinde senkronize olabileceği garip durumlar için çok değerli görünüyor. her iki makinede de kullanın.


6
~usernameMac OSX veya Linux'tan bağımsız olarak ana dizininize genişler.
nohillside

1
Bunun farkındayım, ancak bazı çapraz platform uygulamaları mutlak yolları kaydediyor. Yüce Metin 2 örneği
anthonyryan1

1
Aslında sadece ~ana dizininize genişler. Sorunuzda, kullanıcı ana dizininize (yani. /Users/[username]) Veya aslında /Users/makinedeki tüm kullanıcılar için ayrı dizinler içeren Kullanıcı dizininin kendisine ( ) işaretlemek isteyip istemediğinizi açıklığa kavuşturabilir misiniz ?
cleverbit

Yanıtlar:


19

sudo ln -s /Users /homeek yapılandırma ile çalışacaktır, ancak evden ~kabukta veya $HOME. Ayrıca /homebir Linux standardı olabilir ve genellikle Unix'te kullanılır, ancak herkesin bir toplantıya devam etmesi durumunda çoğu zaman işe yarayan bir şey değil, çalışması garanti edilen bilgilere güvenmek her zaman daha iyi olmayabilir.

İş yapmak için sudo ln -s /Users /homeaşağıdaki adımları izleyin (yorumlardan):

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
İlk /etc/auto_masterolarak ana hattı düzenleyin ve yorum yapın. Ardından mevcut / ev kaynağını serbest bırakmak için yeniden başlatın. Daha sonra aşağıdakileri kullanarak dizine sembolik bağlayabilirsiniz. ln -s /Users /home. Bunu yapana kadar, kaynak meşgulken sembol bağlantısını oluşturmanıza izin verilmez.
18:12

@AR. Bunu yapmanın potansiyel olumsuz sonuçları var mı (ya da neden ilk etapta var?). Ve kök olarak veya chmod a + w / etc / auto_master sonra bile başka bir yolu var düzenlemek için izin verilmiyor?
Abe

2
-1. Bu bir operation not supportedmesajla sonuçlanır
Abe

2
@Abe @ AR.'in yönünü izlerseniz olmaz. Yeniden başlatmanız gerekmediğini unutmayın; sudo automount -cvbunun yerine koşabilirsiniz .
Zigg

@zigg teşekkürler. Ama bu hala cevabı tamamlamıyor. Bir düzenleme teklif edeceğim - Yine de aşağı inemedim!
Abe

5

Bu cevabın tam olarak yetkili olmadığı için üzgünüm, çünkü bunu asla kendim yapmadım - diğer Unix sistemlerinde benzer bir otomatik sayaç kullanmış olsam da - işte /homeOS X'te ne için kullanıldığına dair anlayışım .

Öyleyse, izi takip edelim:

mountEtkin bağları göstermek için ilk önce Terminal'i yazarsanız, şu satırı görürsünüz:

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

autofsharitalar, içinde tanımlanır /etc/auto_masterve /homedaha sonra özellikle içinde tanımlanır /etc/auto_home. Eğer bakarsanız, /etc/auto_homeşu satırı görürsünüz:

+/usr/libexec/od_user_homes

Trail bir adım daha izleyin adam sayfasında ve kimin amacı, bir kullanıcı adı almak Open Directory içinde aramak ve o kullanıcının ev dizinine bir URL döndürmektir bir program bulabilirsiniz. Eğer üzerinde okursanız de , kılavuz sayfasında , sen sırayla yerinde monte edildiği, bu programda bir harita sonuçları için yürütülebilir bir program kullanarak monte etmek için bir URL aramak için çağrıldığını olduğunu göreceksiniz.od_user_homesauto_master

Amaçlanan uygulama, Mac'iniz bir dizin hizmetine bağlıysa /home/jdoe, otomatik sayacın jdoeana dizininin oraya bağlanmasına neden olacağı şeklindedir .

Buna dayanarak, Mac'inizi bir dizin hizmetine bağlamak istemiyorsanız, muhtemelen bu açıklamada/home ayrıntılı olarak gösterildiği gibi otomatik bağlamayı kaldırmanızın iyi olacağı sonucuna varmak mantıklı görünmektedir . Gelecekteki işletim sistemi güncellemelerinin bununla nasıl başa çıkacağını bilmiyorum.


1
Automounter'ı devre dışı bırakmak yerine kullanmayı seviyorum. Bu yüzden automounter / Users / $ USER / home / $ USER üzerine bağlansın. / Etc / auto_home içindeki satırı "+ / bin / echo / home / $ 1" gibi bir şeyle değiştirmek kadar basit mi yoksa doğru hata işleme istiyorsanız, od_user_homes'in yaptığı şeyi kopyalayan bir komut dosyası oluşturun
Tim B

@TimB İlginç düşünce. Bununla biraz oynadıktan sonra automountd, başa çıkacak yerel bir yol belirtebileceğinizden emin değilim . NFS, SMB ve AFS yapmak mümkün görünüyor.
zigg

Bunun Linux'ta çalışıp çalışmadığını bilmiyorum, ama Solaris'te her zaman yaptığım buydu. Gerçek dizin / export / home / $ USER idi ve bunu / home / $ USER dizinine otomatikleştirmek için standart bir yapılandırma vardı. Aslında, artık blogs.oracle.com/observatory/entry/automounted_home_directory
B

1
Sadece çabucak baktım. Od_user_homes yürütülebilir haritasını taklit etmeniz bile gerekmez. OD'yi desteklemek için sadece orada. / Users / $ USER öğesinin / home / $ USER dizinine sıradan otomatik olarak dağıtılması mümkündür. Auto_master man sayfasında gösterilir, ancak örnekte yerel dizinler yerine uzak NFS bağlantıları gösterilmiş olsa da, yerel olarak da çalışması gerekir.
Tim B

Bir şeyin yanlış yapıyor olabilir, ama ben bir NFS monte Kullanabileceğim bir yerel yol yapılandırarak çalıştı ve bir alınan Input/output errorçalışırken cd. Okumadan, dediğim gibi sadece NFS, SMB veya AFS kullanabileceğim gibi görünüyordu. Ama belki de bu tür bir deney
yapmalıyız

2

Bunun faydası yok /home. OS X, diğer çeşitli Unix sürümleri gibi, kullanıcı için benzersiz bir konuma sahiptir. Linux'ta /home/userve OS X'te /Users. Bu yüzden steno " ~" veya ortam değişkenini kullanmak iyi bir uygulamadır $HOME.

/Users/[username]Aşağıdaki komutu kullanarak kullanıcının base / home dizinine bir sembolik bağlantı oluşturabilirsiniz :

ln -s ~ /foo

/homeSistemin kökünde bu ada sahip bir (n kullanılmayan) dizin olduğu için adlandırılmış bir bağlantı oluşturmak işe yaramaz .


1
Kesinlikle. Çeşitli nedenlerle ev dizinleri için başka kurallar kullanan Unix benzeri sistemlerde bulundum, örneğin /export/home/usernameSolaris. İşe /home/usernameyarayacağını varsaymak kötü bir uygulamadır . Ana dizinleri arayan programlar getpwnamveya kullanıyor olmalıdır getpwuid.
zigg

1
Programların varlığını kabul etmelerinin kötü bir uygulama olduğuna tamamen katılıyorum, ancak bu bazen yazılımların yetkin bir şekilde geliştirilmediğini ele almıyor.
anthonyryan1

Benim durumumdaki binekler ve diğerleri arasında: map auto_home on /home (autofs, automounted, nobrowse)… o binanın kökenini bilmesem de, “faydası yok” a katılmam gerekir /home.
Graham Perrin

Üzgünüm daha açık olmalıydı: /homegörünüşe göre ayrılmış, ancak OSX'te kullanılmamış, onu kullanmanın bir anlamı yok;)
cleverbit

I @richarddas aynı olsun operation not supportedgelen hatayı sudo ln -s /Users/username /home/usernameben den yaptığım gibi sudo ln -s /Users /home. @AR tarafından sağlanan çözüm çalışır ( /homesatırı girin /etc/auto_masterve yeniden başlatın ).
Abe

1

/ Home dizinini (yanlış olması durumunda) yeniden adlandırmamak ve / home'dan / Users'a (veya makinemdeki gibi / Volume / Users sisteminden beri) sembolik bir bağlantı oluşturmak için hiçbir neden görmüyorum disk sistem içindir, kahretsin!)

Bir üniversite bölümünde 11 unix lezzeti olan bir sistem yöneticisi olarak çalışıyordum. Global dizin ağacında her türlü sembolik bağ vardı, böylece dosya sistemi doğru olanı yapacaktı ve scriptler her yerde çalışmaya mümkün olduğunca yaklaştı. Birkaç gotchas içine koşmak, ama parmaklarınız / home / foo yazmak için alışkınsanız ve parmaklarınız için yeniden bir symlink erteleme işi, devam edin.

Benzer şekilde bazı linuxen zaten / usr / home olarak Home dizinlerine sahip olacaktır.

Çalıştığım bir yerde, prof'in izinleriyle dikkatsiz davranması durumunda profesör dosyaları etrafında gelişen öğrencilere karşı kısmi bir koruma olarak / Users / {group} / {username} dizinleri vardı. Kullanıcılar dizini yürüttü ancak okuma bitleri ayarlanmadı ve grup dizinleri yalnızca grup üyeleri tarafından okunabildi.

(Tüm bunlar illüstrasyonda, postunun bu özel kedisini yoksun bırakmanın birçok yolu vardır.

Bir olası sorun - zaman makinesinin her şeyin iki kopyasını almadığını kontrol edin. TM'nin sembolik bağları nasıl ele aldığını bilmiyorum. Varsa, TM'nin dışlama listesine / home öğesini ekleyin.


1
Bir şey veya bir kişi alternatifiniz için uygun olmayan bir mod veya ACL /Usersayarlarsa, izinlerin onarılması için tanıdık rutinler muhtemelen gerekli düzeltmeleri yapamaz. Bu yüzden /Userssembolik bir bağlantı değil, Apple tarafından yüklenen şekilde olması önerilir .
Graham Perrin

0

Bunu daha önce denedim ve yeniden başlatana kadar yaklaşık bir hafta çalıştım ...

Sadece bağlantı /homeoluşturamazsınız /Users. Aslında, kaldıramazsın bile /home.

Kaldırmayı /homebaşarırsanız, yeniden başlattıktan sonra yeniden görünür.

Eğer taşırsanız /homeiçin /home.oldve symlink /home, bu sembolik kaldıracaktır /home.

Mac'iniz çökmediği veya yeniden başlatılmadığı sürece bunu çalıştırabilirsiniz.

Yeniden başlattığınızda hepsi yok oluyor!

Yeniden başlattığınızda, Mac OS X yeni bir kullanıcı oluşturduğunuzu düşünüyor, bu nedenle eski /Users/usernamedizininizdeki tüm kullanıcı tercihlerinizin üzerine yazacak .

Her şeyi kopyaladığınız için /home/username, ls /homeyeniden başlattıktan sonra yeni ana dizininizi görmeyi beklersiniz . Bunun yerine, HİÇBİR ŞEY olsun !!! Sanki hiç var olmamış gibi.

Benim durumumda, yaklaşık 30 dakika boyunca çıldırıyordum, sonra bir şey yapıp yapamayacağını görmek için tek kullanıcı moduna geçtim. Bir günlük dosyası kapabileceğimi veya bir onarım yardımcı programı başlatmayı deneyebileceğimi düşünüyordum.

Tek kullanıcı modunda, ana dizinim oradaydı. Apple , çok kullanıcılı modda yeni oluşturulan dizinleri kullanıcıdan gizlice gizler/home . Bu kasten kötü bir tasarım özelliğidir.

Apple topal ve işletim sistemlerini hacklemek her türlü cesaret kırıcı. Bu nasıl bir tasarım özelliği? Apple yeni oluşturulan /homedizinin içeriğini gizler . Apple'ın /homedizini veya kullanıcı tarafından oluşturulan dizinleri otomatik olarak kaldırmasının hiçbir meşru nedeni yoktur !

Bu durumda, bir dizini / home dizininizin üzerine bağlarlar ... etkin bir şekilde gizlerler.

/homeBunun yerine gerçekten kullanmaya kararlıysanız /Users, her önyüklemede her şeyi ayarlamak için bir komut dosyası yazarak bu sorunu çözebilirsiniz.

Ayrıca, sadece yasak /homeolduğu için yerine geçmeyen başka bir dizini kullanabilmeniz gerektiğini belirtmeliyim ./Users/home

Bash kullanırsanız, ortam değişkenlerinden bazılarını ayarlamanız gerekir ... yani: CD_HOMEve HOME.

Sana bağlantısını kesme veya güç değildir çıkart rağmen ... o eklemek istediğiniz /home, sen yapabilirsiniz üstünde bir disk monte /home. Tüm bunlar "auto_home" üzerine monte edilmiştir.

Kurtarma diskini /homebaşarılı bir şekilde monte edebildim ... belki de bu şekilde yapılabilir.


TL / DR; en yüksek puanlı yanıt kullanılarak yeniden önyüklemeye dayanıklı özelleştirme mümkündür
MarkHu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.