Как добавить пользователя root в файл nis passwd?

Один из системных администраторов случайно отодвинулся в сторону /etc/passwd... doh! Восстановление файла из резервной копии не работает... он выдает ошибку, потому что пользователь root не существует.

У меня NIS работает на этом сайте и обслуживает файлы passwd/group/shadow, и я попытался добавить пользователя root, но не смог получить его для распространения (я пробовал разные значения для MINUID и MINGID). Я понимаю, почему NIS хотел бы избежать подобных вещей, но, ПОМОГИ, ПОМОГИ!

Сервер работает под управлением CentOS 5.6 и не имеет привода CD/DVD, поэтому я не могу перезагрузиться на аварийный компакт-диск.

Какие-либо предложения?

2 ответа

Решение

Я уверен, что есть какой-то способ попробовать подключить к нему пользователя root, но если вы отчаянно пытаетесь заставить его работать снова в минимальные сроки, мой способ заставить его работать - это USB-накопитель или USB-CD-привод, который вы можете загрузиться с аварийного компакт-диска; любой из них должен быть легко доступен, и к тому времени, когда вы найдете способ использовать умный обходной путь, вы, вероятно, могли бы вернуться от местного продавца с диском и загрузкой аварийного дистрибутива, ожидающего на вашем рабочем столе.

Вы не упоминаете больше информации о сервере, но есть вероятность, что на нем не работает RAID (или системный диск не RAIDED)? Если это так, вы можете извлечь диск, смонтировать его в другой системе и изменить файл там. В зависимости от того, насколько критичной является система, вы можете попробовать смонтировать диск и контроллер в другой системе, чтобы весь том RAID был подключен как другой диск.

Возможно, вы захотите получить USB-накопитель в качестве резервной копии процесса восстановления для этого сервера в будущем. В этот раз ваши проблемы могут быть человеческими ошибками, но это не исключает возможности повреждения диска в будущем, что приведет к аналогичным проблемам.

Вы можете попытаться временно отредактировать Makefile NIS на главном сервере NIS. Где это в настоящее время говорит

passwd.byname: $(PASSWD) $(SHADOW) $(YPDIR)/Makefile
        @echo "Updating $@..."
        @$(UMASK); \
        $(MERGER) -p $(PASSWD) $(SHADOW) | \
           $(AWK) -F: '!/^[-+#]/ { if ($$1 != "" && $$3 >= $(MINUID) && $$3 !=$(NFSNOBODYUID)) \
           print $$1"\t"$$0 }' | $(DBLOAD) -i $(PASSWD) \
                -o $(YPMAPDIR)/$@ - $@
        -@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@

попробуйте изменить эту строку awk, чтобы удалить тесты для MINUID а также NFSNOBODYUIDнапример,

           $(AWK) -F: '!/^[-+#]/ { if ("" == "") \

и аналогично в разделе для passwd.byuid переделайте карты passwd и посмотрите, есть ли там корневая запись с ypcat passwd,

Другие вопросы по тегам