8

О смене юзернейма в MacOS

Ночью сел и часок-другой потратил на то, чтобы поменять username главного аккаунта на MacOS

Штука больше эстетичная, с элементом челленджа и легкой ноткой экстрима в виде возможности потери работоспособности операционной системы, что приведет к её переустановке.

Но я решительно его сменил везде, и вот больше года сижу со старым на ноуте...
Где-то читал что это можно сделать только снаружи системы, с рекавери мода или внешней системы
Формулировки не точные, но суть именно такая была

Но загуглив снова - я нашел официальное руководство на сайте Apple
В нём не хватает инструкции по переименованию директорий и восстановлению символьных ссылок только...

В целом операция довольно простая, притом явно проще, чем для Linux.
UPD. (Для рядового юзера) В линуксе юзернейм меняется всего одной командой:
usermod -l new_username old_username

Просто создаем второго админа, логинимся под ним, в настройках меняем имя пользователя и путь к его домашней директории.
Проблемы могут возникнуть именно со вторым пунктом, когда понадобится переименовать директорию (эт надо сделать вручную).
У меня не хватило любопытства разобраться в том как это сделать, т.к. мне выбивало Permission denied даже под sudo и su.
Видимо, есть еще доп права на эту операцию для вторичных админов.
Так что я просто при помощи su в терминале залогинился под главным пользователем, которому и меняю юзернейм и домашнюю директорию. И из-под него с sudo переименовал его же директорию, словив панику в консоле. (Самая высокая степень критичности ошибки)
Благо что паника не ядра, а каких-то консольных утилит 😂
Потом перепроверил - всё ок, задумка удалась. Директория переименована.
Заменил ему юзернейм и перезагрузил компьютер.

В целом на этом этапе 99% юзерам можно закончить.
Только вот есть один нюанс: этим юзерам не нужно переименовывать пользователя, а уж тем более менять путь домашней директории.
И, скорее, всего они даже не в курсе об их существовании, просто есть Finder, файлы и, в лучшем случае они не называют «директории» - «папками» 🤓

Так вот в системе, особенно в инструментах разработки активно используются символьные ссылки.
И именно тут может крыться дьявол. А дьявол, как мы помним - в деталях.

Мы не только сменили имя пользователя, а и путь к его домашней директории.
И все ссылки, которые вели к её содержимому, с этого момента теперь битые.
А значит у нас перестанут работать множество утилит.

Из первого что приходит на ум, использующее символьные ссылки в своей работе:
yarn, n, кэши, poetry и множество других утилит
В них в первую очередь можно будет столкнуться с проблемами.

Так что пришлось применить знания, которые были получены в процессе пользования семейством линуксовых дистрибутивов:
Был собран список всех битых ссылок при помощи команды:
find . -type l ! -exec test -e {} \; -print > broken-symlinks.txt
Затем этот файл был прочтен и построчно перепроверен Python скриптом
Я не делал никакой унификации, чисто одноразовый проход мне нужен был, так что готового скрипта прикреплять не стану, в силу его отсутствия.
После перепроверки получившегося списка - я убедился что правильно помню как работать с pathlib
(Как по мне, один из лучших вариантов для работы с файловой системой, хотя бывает, в редких случаях, функционала не хватает)
Далее уже пошло как по маслу - собрал данные по ссылкам в переменные, добавил логов через принты, убедился что нет относительных ссылок, отфильтровал и удалил все битые ссылки что не связаны с заменой юзернейма, затем еще одним проходом сделал замену в реальном пути ссылки, попутно ее пересоздавая при помощи операции "удалить + создать" в том же цикле.

Как итог, я с уверенностью могу продолжить пользоваться системой, из изменений в которой - только имя пользователя и имя его домашней директории.

Ну и финальным штрихом при помощи grep -r "/username" проходимся по всем файлам в домашней директории, подчищаем старые, не нужные файлы и ручками меняем значения конфигов, где был указан абсолютный путь к домашней директории пользователя чтобы восстановить работу оставшихся утилит.

Обычно таких файлов немного. Лично у меня их вышло около 10, часть fish, другая часть docker.

Ну и устаревшие билды кэша packer от Neovim, в отдельной директории, которую я просто снёс, потому что на последнем стриме переписал весь конфиг на Lazy

UPD. Узнал, что в авторский контент можно ссылки на свои ресурсы добавлять.
Мой Телеграм канал:
@cododelia

Лига Сисадминов

2.4K постов18.9K подписчиков

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

не проще создать нового пользователя с необходимым именем и пользоваться им?

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Если у тебя в текущем пользователе лежит 300gb рабочей инфы - проще вообще не переименовывать 😂
Но если есть сильные позывы сменить юзернейм - тогда проще переименовать.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

инфа прямо в профиле? на маке нельзя делать другие логические диски и там всё хранить?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Физически это сделать можно, но это извращение 🤣

Если сравниваешь с Windows like [диск C / диск D]
То это не актуально для unix подобных систем (MacOS, Linux и тому подобное)

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Непонятно. Если в комп с линуксом добавить два хдд по 4 ТБ, то они как будут видны пользователю?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это я не вспомню, но по идее так же как и на винде, в проводнике
Как два разных диска.

Я консолью пользовался, там это /dev/sd{a,b,c,}
И можно смонтировать куда удобно, в том числе в домашнюю директорию, выглядеть это будет просто как поддиректория.
Но на логические диски обычно не разделяют.

Ну и в случае с ноутом - редко бывает возможность добавить ещё один диск, чаще это внешний бокс с диском, что не очень удобно для постоянного исопльзования, если речь не о работе с крупными файлами (Производство медиа контента)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку