Почему sudo занимает слишком много времени?

13

Я недавно обновил MacOS Sierra 10.12.4 Beta (16E144f), и это может быть причиной sudoзадержки до 10 минут, так как это последнее изменение, которое я помню с момента возникновения этой проблемы. Мне никогда не приходилось так долго ждать базовой программы, и что-то явно не так. Команда в конце концов успешно выполняется, но после ожидания слишком долго.

Я использовал этот вопрос в качестве ссылки. До сих пор я пытался добавить свое имя хоста в конце 127.0.0.1строки, /etc/hostsа также. Я проверил, /etc/resolv.confи у меня действительно были некоторые дополнительные записи, когда я был в сети, которая нуждалась в записях DNS вручную, но я удалил их, и не было никакой разницы. Я использовал networksetup -setdnsserversкоманду для восстановления исходных значений. Интернет по-прежнему работает нормально, но все еще очень медленно sudo.

Я попробовал logger 'test'команду, думая, что она будет писать /var/log/system.log, но похоже, что он полностью удалил этот файл, хотя вскоре он был создан заново.

Я надеялся использовать straceкоманду, чтобы увидеть, что происходит во время выполнения, sudoно эта команда недоступна в OS X. Кто-нибудь сталкивался с этой проблемой в этой операционной системе раньше?

/var/log/system.log содержит следующие сообщения, которые могут иметь отношение к теме. Опять же, команда в конце концов завершается успешно как обычно:

Feb  1 00:07:39 mycomputer com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent): Unknown key for integer: _DirtyJetsamMemoryLimit
Feb  1 00:07:56 mycomputer com.apple.xpc.launchd[1] (com.apple.quicklook[2355]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook
Feb  1 00:08:16 mycomputer System Preferences[1886]: I can not do what i want
Feb  1 00:11:23 mycomputer com.apple.xpc.launchd[1] (com.apple.opendirectoryd[2335]): Service exited with abnormal code: 70
Feb  1 00:12:07 mycomputer syslogd[54]: ASL Sender Statistics
Feb  1 00:16:35 mycomputer com.apple.xpc.launchd[1] (com.apple.opendirectoryd[2395]): Service exited with abnormal code: 70

Любая помощь будет оценена.

Спенсер Уильямс
источник
Имеет ли значение какая команда запускается через sudo? Как отметки времени в журнале относятся к вашему действию выполнения sudo и при выполнении sudo? Я вижу там opendirectoryd, вы работаете с локальной или сетевой учетной записью? Что произойдет, если вы переключаете пользователей (или настраиваете нового локально), также sudo работает медленно?
nohillside
Я использую ту же бета-версию, и sudo работает как всегда быстро.
nohillside
1
@patrix А, ладно. Да, это очень хорошо, может быть что-то еще. Да, это происходит независимо от того, какую команду я использую с sudo, задержка является постоянной. По сути, команда начинается около этой строки журнала com.apple.quicklookи, наконец, заканчивается в конце, поэтому в этом примере это было около 8 минут со всеми этими сообщениями между ними. Сообщение opendirectoryd, кажется, появляется всякий раз, когда оно наконец запускается sudo lsв моем локальном домашнем каталоге. Сейчас я работаю только с локальными папками. У меня только один пользователь на этом компьютере, хотя я могу видеть, что происходит с новой учетной записью ...
Спенсер Уильямс
@patrix Я только что сделал другого пользователя с правами администратора. К сожалению, эта учетная запись имеет ту же проблему.
Спенсер Уильямс

Ответы:

11

Ответ ErikMH дал мне идею сначала попытаться восстановить файл sudoers, не возвращая / не обновляя всю мою систему снова. Итак, вкратце:

  1. Запустите это, чтобы получить корневую оболочку: sudo -s
  2. Сделать копию /private/etc/sudoers
  3. Бегать: cp /private/etc/sudoers\~orig /private/etc/sudoers
  4. Исправьте разрешения, запустив: chmod 440 /private/etc/sudoers ; chown root:wheel /private/etc/sudoers
  5. Переместить любые файлы /private/etc/sudoers.d/оттуда
  6. Проверь sudoв другом терминале
  7. Не забудьте выйти из этой оболочки, чтобы предотвратить непреднамеренный запуск команд от имени root, когда вы не хотите

Теперь бег sudoдолжен работать снова.

Следующим шагом является проверка различий между старым файлом sudoers (вы скопировали его на шаге 2) и текущим и шаг за шагом добавляете эти изменения в /private/etc/sudoersили /private/etc/sudoers.d/, каждый раз при запуске команды с помощью, sudoчтобы проверить, не нарушает ли это изменение.

В моем случае я указал несуществующую группу в файле sudoers. Исправление, которое исправило мою проблему.

Седрик Дюбуа
источник
работал на macOS 10.13!
Нисба
У меня тоже сработало (OSX 10.13). Также была та же проблема - несуществующая группа в файле sudoer.
Петр Цибулька
Хм ... Я не помню, чтобы менялся файл sudoers на машине, где у меня была эта проблема, но мне хотелось бы попробовать то, что вы предлагаете, вместо восстановления моей системы.
Спенсер Уильямс
Я пошел дальше и принял ваш ответ, потому что похоже, что люди подтверждают, что он помогает, и я уверен, что хотел бы попробовать это в первую очередь, и при этом я вообще не рекомендую восстанавливать всю вашу систему.
Спенсер Уильямс
2

Это может произойти при обновлении до 10.12.4, если вы когда-либо редактировали файл / private / etc / sudoers.

Самое простое решение:

  1. Вернитесь к предыдущей версии системы (вы всегда клонируете свою систему перед обновлением, верно?)
  2. Удалить / личный / etc / sudoers
  3. Скопируйте / private / etc / sudoers ~ orig в sudoers
  4. Сброс владения sudoers для system / root - только для чтения
  5. Обновите систему до 10.12.4.
ErikMH
источник
«Это может произойти при обновлении до 10.12.4, если вы когда-либо редактировали файл / private / etc / sudoers». Знаем ли мы, что на самом деле вызывает это?
Wowfunhappy
1

Хотелось бы найти истинную причину этого, но я мог бы решить проблему только после восстановления системного программного обеспечения. Ранее я был в публичной бета-версии macOS Sierra, но теперь я в основной.

Я медленно загружаю обратно все свои программы, и я буду отмечать, если я испытываю задержку sudoснова.

Спенсер Уильямс
источник
0

У меня был файл, /etc/sudoers.d/который я удалил. Вуаля - sudoснова быстро.

vidstige
источник