(Примечание: я парень из 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
, поэтому не вставляйте этот код вслепую. Ваш случай попадает под "испорченные разрешения на родительский каталог".