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.5K постов19K подписчиков

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

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества