it-консалтинг и аутсорсинг
что мы делаем контакты блог

Пятничный траблшутинг квест

Кирилл Воронин 28.01.2011

Давайте решим сообща проблему в виде квеста?

Apple Desktop Bus Mouse II
/* Если хотите, есть приз – новенькая Apple Desktop Bus Mouse II, запечатанная, в коробке*/
/* Мои коллеги по Шорткат не участвуют */

Шаг #1
Пользователь:
– Что-то сломалось в моем iMac. Я вернулся из отпуска и у меня пропал чекбокс администрирования системы.

  • customer care service technician #1

    чекбокс администрирования?

  • Шаг #2
    Это же пользователь…
    Мы расспросили его и поняли, что у него пропали административные права.
    Это выяснилось, когда он попытался поставить программу в папку Applications.

  • customer care service technician #1

    а разве политика этой компании не предусматривает возможность установки ПО только силами системных администраторов с санкции ИТ директора?

  • Шаг #3
    Нет, это домашний iMac финансового директора.
    Он попросил с ним помочь. Отказать ему нельзя.

  • Паскаль

    Есть другие пользователи на компьютере?

  • Евгений

    в терминале id что выдает?

  • Шаг #4
    Нет, только один пользователь vadimakovlev

  • > в терминале id что выдает?

    uid=501(vadimakovlev) gid=20(staff) groups=20(staff),403(com.apple.sharepoint.group.3),100(_lpoperator),61(localaccounts),12(everyone),402(com.apple.sharepoint.group.2),401(com.apple.sharepoint.group.1)

  • Евгений

    Держа cmd+s при загрузке попадаем в однопользовательский режим

    На всякий случай
    fsck -y

    Монтируем файловую систему для записи
    mount -wu /

    Добавляем юзера в группу admin
    dseditgroup -o edit -a vadimakovlev -t user admin

    Ребутаемся

  • customer care service technician #1

    пароль от sudo финансовому директору известен?

  • Евгений

    к sudo пользователь свой пароль пишет
    но sudo система не даст ему выполнить так как в sudoers по умолчанию прописано что sudo доступно только юзерам из группы admin в которой как выяснилось выше юзер не состоит

  • Не ожидал, что мы так быстро дойдем до этого (можно же было и в GUI попробовать)

    Тем не менее,

    #dseditgroup -o edit -a vadimakovlev -t user admin
    Group not found.

  • Евгений

    dseditgroup -o create admin =)

  • # dseditgroup -o create admin
    Unable to create the record

  • Евгений

    хм… а версия mac os у него какая?

  • # sw_vers
    ProductName: Mac OS X
    ProductVersion: 10.6.4

  • Евгений

    А что говорит
    dseditgroup -v -o create admin
    ?

  • #dseditgroup -v -o create admin
    dseditgroup verbose mode
    Options selected by user:
    Create option selected
    Username determined to be
    Groupname provided as

    Skipping authentication because user has effective ID 0
    Unable to create record admin in /Local/Default.

  • Евгений

    ls -lad /var/db/dslocal/nodes/Default/groups/ ?

  • # ls -lad /var/db/dslocal/nodes/Default/groups/

    drwx—— 98 root wheel 3332 28 янв 16:01 /var/db/dslocal/nodes/Default/groups/

  • Евгений

    Хм… даже не знаю…
    А файловая система точно доступна для записи?
    mount | grep “^/”

  • Писать можно.

    # mount | grep “^/”
    /dev/disk0s2 on / (hfs, local, journaled)

  • Евгений

    У меня больше нет идей =(
    Конечно можно попробовать руками создать admin.plist с нужными правами в /var/db/dslocal/nodes/Default/groups но это как то не правильно.

  • А почему бы не посмотреть – есть ли у нас файл admin.plist?
    Будем считать, что мы сделали это сразу с ls -lad /var/db/dslocal/nodes/Default/groups/
    (кстати, это реальный случай из практики)

    #head /var/db/dslocal/nodes/Default/groups/admin.plist

    <contact>
            <buddy account='xxxxxxxxxxxxxxxxxxxx@gazprom.ru' proto='prpl-bigbrownchunx-facebookim'>
              <name>XXXXXXXX</name>
              <alias>XXXXX XXXXXXX</alias>
              <setting name='buddy_icon' type='string'>f166aaef040977303684d587693b3af74ea1e0ba.jpg</setting>
              <setting name='icon_checksum' type='string'>/hprofile-ak-snc4/hs223.ash2/48907_733076098_6652_q.jpg</setting>
              <setting name='last_seen' type='int'>7266348903</setting>
            </buddy>
    </contact>
    

  • customer care service technician #1

    не понял, чем все закончилось.
    писать может и разрешено, а, например, места нету)
    в таких случаях рекомендуют переустановить систему?

    о, кстати, вот где надо спросить! в вашей обширной практике не встречалось проблем с видеодрайверами в 10.6.6 на старых мбп с восстановленной 8600M GT? поменял винчестер на OCZ ONYX, заодно проапгрейдился до сноулео и теперь пожинаю плоды: сафари с флешем иногда намертво подвешивает компьютер, а квиктайм иногда приводит к моментальному логин скрину с принудительным закрытием всех открытых приложений.

  • Пока ничем не закончилось.

    Только выяснили, что в файле /var/db/dslocal/nodes/Default/groups/admin.plist какие-то какашки, которых там не должно быть и которые непонятно откуда там взялись.

  • Евгений

    А разве он не должен быть вида:

    
    < ?xml version="1.0" encoding="UTF-8"?>
    < !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>generateduid</key>
            <array>
                    <string>ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050</string>
            </array>
            <key>gid</key>
            <array>
                    <string>80</string>
            </array>
            <key>groupmembers</key>
            <array>
                    <string>FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000</string>
    </array></dict></plist>

    Может файл битый?
    Проверка диска/пермишенов проводилась?

  • customer care service technician #1

    эти какашки – порождение айчата?
    вот что на этот счет дает поиск в энторнетах

    an account is either admin or is not. the directory services entry for the admin group is corrupted and you need to recreate it. do the following. log in as root and run the following terminal commands. Copy and Paste, DO NOT retype.

    rm /var/db/dslocal/nodes/Default/groups/admin.plist

    cp /System/Library/DirectoryServices/DefaultLocalDB/Default/groups/admin.plist /var/db/dslocal/nodes/Default/groups/admin.plist

    then restart, log in as root and make your user admin using system preferences.
    credit to biovizier for this method.

  • Disk Utility ошибок не находит…

    Тем не менее, решено сохранить домашнюю папку пользователя, отформатировать диск и перезалить образ.

    Можно было скопировать admin.plist с другого компьютера, но кто знает, сколько еще мин в этом Маке…

  • Супер, я и не знал про /System/Library/DirectoryServices/DefaultLocalDB !

    Будем проводить квесты каждую пятницу!

  • customer care service technician #1

    самое обидное – источника не нашли. перезалить образ – из бэкапа?

  • Евгений

    А я и то как устроены группы в mac os не знал до начала квеста =)
    Спасибо, было интересно.

  • > перезалить образ – из бэкапа?

    Ну он же принес iMac в офис.
    Предположим, что в офисе автоматически создается образ Mac OS X с популярным необходимым Freeware, который можно залить по сети, загрузив Мак с нажатой клавишей N. Даром, что ли мы эту компанию саппортим :-)

  • Итог:
    нельзя присудить чистую победу Евгению или сustomer care service technician #1, хотя в конечном итоге оба бы решили проблему.

    Квест будем устраивать каждую пятницу.

  • Павел

    Господа, зачем все так сложно? Описанные выше в комментах решения это как ложкой вычерпать ванну воды.
    Грузитесь с установочного носителя MacOSX и резетите пароль.

  • От того, что вы сбросите пароль пользователя, он не станет администратором.

    Если же (загрузившись с установочного DVD) задать пароль root, зайти в систему как root и попробовать сделать пользователя администратором, то это не получится, по причине порчи службы каталогов.

  • Раду

    Выходные был занят питьем :)

    “Если же (загрузившись с установочного DVD) задать пароль root, зайти в систему как root и попробовать сделать пользователя администратором, то это не получится, по причине порчи службы каталогов.” – именно так делал много раз. В свое время даже заметил, когда такое происходило. Заливаем шаблон с 10.5.., и пользователем support (501) :), создаешь пользователя macuser (502) с админ правами, пользователя 501 удаляешь. Систему апдейтишь до 10.6… Получаешь пользователя без админ. прав. Бубны в студию :)

  • Раду, в данной ситуации “мистическим образом” был испорчен сам файл admin.plist (см. выше).
    Галочка бы ставилась, но сразу бы снималась. Люди у которых была эта проблема (просто знакомые и тоже администраторы) естественно, проделалывали, все это.