Mac OS X - Як Symlink / home для користувачів


14

Тим із нас, хто балується з пінгвінами та яблуками, здається, дуже варто в той час, як можна використовувати / домашні шляхи або з хабіту, або для тих випадкових випадків, коли значення, можливо, було синхронізовано десь уздовж рядка в якомусь файлі, який ви використання на обох машинах.


6
~usernameрозширюється на ваш домашній каталог незалежно від Mac OSX або Linux.
nohillside

1
Я знаю про це, але деякі крос-платформні програми заощаджують абсолютні шляхи. Приклад: Піднесений текст 2.
anthonyryan1

1
Насправді просто ~розширюється на ваш домашній каталог. Чи можете ви уточнити ваше запитання , чи хочете ви , щоб лінк до вашого користувачеві домашньої директорії (тобто .. /Users/[username]) Або насправді сам (директорія користувача /Users/) , який містить окремі каталоги для всіх користувачів на комп'ютері?
розумний

Відповіді:


19

sudo ln -s /Users /homeбуде працювати з додатковою конфігурацією, але я не думаю, що це гарна ідея, оскільки ви повинні отримати доступ додому через ~оболонку або $HOME. Також /homeможе бути стандартом Linux і часто використовується в Unix, але не завжди так краще покладатися на інформацію, яка гарантовано працює не тим, що працює лише більшу частину часу, якщо всі дотримуються конвенції.

Щоб зробити 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. Поки ви цього не зробите, вам просто не дозволять створювати символьне посилання, оскільки ресурс зайнятий.
anthonyryan1

@AR. чи є якісь потенційні негативні наслідки цього (або чому це в першу чергу?). І мені заборонено редагувати його навіть як root або після chmod a + w / etc / auto_master чи є інший спосіб?
Абе

2
-1. Це призводить до operation not supportedповідомлення
Abe

2
@Abe Це не так, якщо слідувати вказівці @ AR. Зауважте, що вам не доведеться перезавантажувати; ви можете sudo automount -cvзамість цього запустити .
zigg

@zigg дякую. Але це все ще не робить відповідь повною. Я запропоную редагувати - я все-таки не зміг подати заяву!
Абе

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сторінці людини , і ви знайдете програму, метою якої є взяти ім'я користувача, подивитися його в Open Directory, і повертає URL в домашній каталог користувача. Якщо ви прочитаєте на auto_masterна його сторінці , ви побачите , що з допомогою програми, що виконується для карти результатів в цій програмі викликається дивитися вгору URL для установки, яка , в свою чергу монтується на місці.

Передбачається, що програма, якщо ваш Mac підключений до служби каталогів, /home/jdoeпризведе до того, що автоматичний інструмент зможе встановити jdoeдомашній каталог.

Виходячи з цього, здається логічним висновок, що якщо ви не збираєтесь підключати свій Mac до служби каталогів, ви, ймовірно, добре видаляєте /homeавтоматичне кріплення, як це детально описано в цьому коментарі . Я не знаю, як майбутні оновлення ОС вирішать це.


1
Мені подобається користуватися автоматикою, а не відключати її. Тож я б дозволив автоматичному монтуванню / Users / $ USER на / home / $ USER. Цікаво, чи це не так просто, як замінити цей рядок у / etc / auto_home чимось на кшталт "+ / bin / echo / home / $ 1", або якщо ви хочете правильної обробки помилок, створіть сценарій, який повторює те, що робить od_user_homes
Тім B

@TimB Цікава думка. Трохи погравши з цим, я не зовсім впевнений, що ви можете вказати місцевий шлях, який automountdбуде мати справу. Здається, можна зробити NFS, SMB та AFS.
zigg

Я не знаю, чи це працює в Linux, але це було те, що я завжди робив у Solaris. Справжній каталог був / export / home / $ USER, і існувала стандартна конфігурація для автоматичного переходу на / home / $ USER. Насправді, схоже, що це тепер стандартна конфігурація в Solaris 11.x відповідно до blogs.oracle.com/observatory/entry/automnged_home_directory
Тім Б

1
Я просто швидко подивився. Вам навіть не потрібно імітувати виконувану карту od_user_homes. Це просто там, щоб підтримати OD. Можливе звичайне автоматичне встановлення / Users / $ USER на / home / $ USER. Він відображається на сторінці "авто_мастер", хоча приклад показує віддалені монтажі NFS, а не локальні каталоги, він також повинен працювати локально.
Tim B

Я, можливо, робив щось не так, але я спробував налаштувати локальний шлях, де я міг би використовувати NFS-кріплення і отримував Input/output errorпри спробі cd. З мого читання виглядало так, що я можу використовувати лише NFS, SMB або AFS, як я вже сказав. Але, можливо, нам слід взяти цей експеримент в іншому місці ...
zigg

2

Немає жодної користі /home. OS X, як і різні інші версії Unix, має унікальне місце для користувача. У Linux він є /home/user, а в OS X - це /Users. Ось чому є хорошою практикою використовувати скорочений " ~" або змінну оточення $HOME.

У той час як ви можете створити посилання на базу / домашній каталог користувача, /Users/[username]використовуючи таку команду:

ln -s ~ /foo

Створити посилання з іменем не вийде, /homeоскільки в корені системи вже є (n невикористаний) каталог з цим іменем.


1
Саме так. Я був у інших системах, схожих на Unix, які з різних причин використовували інші конвенції для домашніх каталогів, наприклад, /export/home/usernameдля Solaris. Погано вважати, що /home/usernameце спрацює. Програми, які шукають домашні каталоги, повинні використовувати getpwnamабо getpwuid.
зигг

1
Я повністю погоджуюся з тим, що це неправильна практика програм припускати існування, але це не стосується того, що інколи програмне забезпечення не розробляється грамотно.
anthonyryan1

Серед кріплень у моєму випадку та інших: map auto_home on /home (autofs, automounted, nobrowse)... хоча я не знаю походження цієї версії, я повинен не погодитися з "не використовую /home".
Грем Перрін

Вибачте, мав би бути зрозумілішим: щойно мається на увазі /home, мабуть, зарезервовано, але не використовується в OSX, не те, що немає сенсу його використовувати;)
розумний

@richarddas Я отримую ту ж operation not supportedпомилку, що sudo ln -s /Users/username /home/usernameі я sudo ln -s /Users /home. Рішення, яке надає @AR, працює (прокоментуйте /homeрядок у /etc/auto_masterта перезавантажте).
Абе

1

Я взагалі не бачу причин не перейменовувати каталог / головну (у випадку, якщо я помиляюся) та створювати символічне посилання з / home на / користувачів (або, як на моїй машині, / томів / користувачів з моєї системи диск для системи, чорт забирай!)

Раніше я працював сисадміном, в університетському відділі з 11 ароматами unix. У глобальному дереві каталогів ми мали всілякі посилання, щоб файлова система зробила правильно, а сценарії наблизилися до роботи скрізь. Ви натрапляєте на кілька хатчей, але якщо ваші пальці звикли набирати / home / foo, а симпосилання відкладає перекваліфікацію роботи для своїх пальців, перейдіть вперед.

Аналогічно, деякі linuxen вже матимуть домашні каталоги як / usr / home.

Одне місце, де я працював, мали домашні довідники / Users / {group} / {username} як частковий захист від студентів, що обхоплювали файли професорів, якщо професор недбало ставився до своїх дозволів. У каталозі Користувачі виконувались, але не було встановлено бітів для читання, а каталоги групи читалися лише для членів групи.

(Все це на ілюстрації, існує багато способів позбавити цього котячого кома.

Один із можливих прихильників - перевірте, чи машина часу не зробила дві копії всього. Я не знаю, як ТМ поводиться з посиланнями. Якщо так, то додайте / home до списку виключень TM.


1
Якщо щось або хтось встановить невідповідний режим або ACL для вашої альтернативи, /Usersто звичні підпрограми для відновлення дозволів, ймовірно, не зможуть внести необхідні виправлення. Тож рекомендую, /Usersщоб воно було встановлено Apple: каталог, а не символічне посилання.
Грехем Перрін

0

Я раніше пробував це і працював близько тижня, поки не перезавантажився ...

Ви не можете просто посилання /homeна /Users. Насправді ви навіть не можете їх видалити /home.

Якщо вам вдасться видалити /home, він знову з’явиться після перезавантаження.

Якщо ви перейдете /homeна /home.oldта посилаєте на символьне посилання /home, воно видалить символьне посилання /home.

Ви можете працювати з цим режимом до тих пір, поки ваш комп'ютер не вийде з ладу або перезавантажиться.

Після перезавантаження все це зникає!

Під час перезавантаження Mac OS X, здається, думає, що ви створюєте нового користувача, тому він замінить усі ваші налаштування користувача у вашому старому /Users/usernameкаталозі.

Оскільки ви все скопіювали /home/username, ви очікуєте, що ls /homeпісля перезавантаження ви побачите новий домашній каталог . Натомість ви отримуєте НІЧОГО !!! Наче вона ніколи не існувала.

У моєму випадку я бовтався близько 30 хвилин, потім завантажився в єдиний користувальницький режим, щоб побачити, чи можна щось зробити. Я думав, що мені вдасться схопити файл журналу або спробувати запустити утиліту ремонту.

В режимі одиночного користувача там був мій домашній каталог. Apple навмисно приховує будь-які новостворені каталоги /homeвід користувача у режимі багатокористувача. Це навмисно зла функція дизайну.

Apple кульгає і відштовхує від будь-якого і злому їх ОС. Що це за особливість дизайну? Apple приховує вміст новоствореного /homeкаталогу. Немає абсолютно жодної законної причини для Apple, щоб автоматично видалити /homeкаталог ... або будь-які створені користувачем каталоги взагалі!

У цьому випадку вони монтують каталог над вашою / домашньою каталогом ... ефективно приховуючи його.

Якщо ви дійсно налаштовані використовувати /homeзамість цього /Users, ви, можливо, зможете обійти його, написавши сценарій, щоб налаштувати все на кожен завантажувач.

Також я повинен зазначити, що ви повинні мати можливість використовувати інший каталог, який не /homeє заміною, /Usersоскільки /homeвін заборонений.

Якщо ви використовуєте bash, вам доведеться встановити деякі змінні середовища ... а саме: CD_HOMEі HOME.

Хочу додати, що ... хоча ви не можете відключити або примусити відключити /home, ви можете встановити диск поверх /home. Все це встановлено поверх "auto_home".

Мені вдалося змонтувати диск відновлення поверх /homeуспішно ... можливо, так це можна зробити.


TL / DR; можлива повторна завантажувальна настройка, використовуючи найкращу відповідь
MarkHu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.