Меняем пароль админа в Linux

  1. При загрузке системы указываем опцию ядра «init=/bin/bash»
  2. Когда загрузились — перемонтируйте файловую систему в режим чтения/записи «mount / -o remount,rw»
  3. «passwd root» и указываем новый пароль
  4. Перезагружаемся

Конечный этап загрузки ядра Linux — запуск процесса init. В конце ядерной функции kernel_init происходит вызов init_post(). В ядре 2.6.37 эта функция выглядит так:

818static noinline int init_post(void)
819{
820        /* need to finish all async __init code before freeing the memory */
821        async_synchronize_full();
822        free_initmem();
823        mark_rodata_ro();
824        system_state = SYSTEM_RUNNING;
825        numa_default_policy();
826
827
828        current->signal->flags |= SIGNAL_UNKILLABLE;
829
830        if (ramdisk_execute_command) {
831                run_init_process(ramdisk_execute_command);
832                printk(KERN_WARNING «Failed to execute %s\n»,
833                                ramdisk_execute_command);
834        }
835
836        /*
837         * We try each of these until one succeeds.
838         *
839         * The Bourne shell can be used instead of init if we are
840         * trying to recover a really broken machine.
841         */
842        if (execute_command) {
843                run_init_process(execute_command);
844                printk(KERN_WARNING «Failed to execute %s.  Attempting «
845                                        «defaults…\n», execute_command);
846        }
847        run_init_process(«/sbin/init»);
848        run_init_process(«/etc/init»);
849        run_init_process(«/bin/init»);
850        run_init_process(«/bin/sh»);
851
852        panic(«No init found.  Try passing init= option to kernel. «
853              «See Linux Documentation/init.txt for guidance.»);
854}

По умолчанию запускается процесс «/sbin/init»  (847 строчка). А то что мы укажем через опцию «init=…» будет запущено в 843 строчке. Функция run_init_process  — это всего лишь обертка для kernel_execve.

Вообще в ядре есть очень много интересных опций загрузки, которые сильно упрощают жизнь при восстановлении системы. Подробнее о них написано в документе, который находится в корне исходников ядра Documentation/kernel-parameters.txt или можете почитать тут для ядра 2.6.37.