(Примечание: я парень из Linux, и у меня нет опыта работы с macOS. Примите мой ответ с небольшим количеством соли).
С помощью sudo chmod 664 /etc/ вы удалили бит выполнения из каталога, и фактически вы не можете получить доступ (читать, записывать) к элементам, находящимся внутри. Это включает в себя (среди прочих):
/etc/profile , где определяется общий PS1 ,
/etc/localtime , /etc/timezone или все, что использует macOS.
Вам нужно sudo chmod 755 /etc чтобы это исправить. К сожалению, нет доступа к /etc/sudoers , вероятно, помешает вам сделать это напрямую. Если вам очень повезло, у вас все еще есть оболочка, работающая от имени root (запущенная по любой причине, прежде чем что-то пошло не так), где вы можете вызывать chmod 755 /etc без sudo . Но, вероятно, вам не так повезло.
Если бы та же проблема возникла в моем Kubuntu (без шифрования или чего-то подобного), я бы загрузил live Linux Linux, смонтировал файловую систему и установил разрешения. Я не знаю, можете ли вы легко исправить macOS "извне", как это.
Этот (старый) вопрос касается аналогичной проблемы, когда sudo не работает из-за неправильных разрешений /etc/sudoers . Возможные решения из ответов:
Это может быть одним из редких случаев, когда запуск "Восстановить права доступа к диску" из Дисковой утилиты может быть оправдан.
Если это не сработает, следуйте […] предложению загрузки в однопользовательском режиме, чтобы исправить это
Это выглядит многообещающе:
Другой подход заключается в использовании Automator.app .
Создайте новый рабочий процесс, который содержит что-то вроде следующего:
do shell script "chmod 0440 /etc/sudoers" with administrator privileges
Когда вы запустите его, он запросит ваш пароль и (предположим, что вы администратор) исправит это.
Это также работает, если вы испортили разрешения для родительского каталога (например, создание / что-то отличное от 755).
Имейте в виду, что вам нужно использовать chmod 755 /etc , поэтому не вставляйте этот код вслепую. Ваш случай попадает под "испорченные разрешения на родительский каталог".