2012-06-28 3 views
5

Я ищу способ изменить пароль пользователя root в системе Linux через сценарий bash без загрузки системы. Единственное, что я нашел до сих пор, это либо удалить пароль, либо использовать chroot, который я предпочитаю не использовать.
Я знаю, как очистить пароль root, но мне нужно изменить его на другой пароль, определенный ранее в скрипте.
У меня есть root доступ ко всей файловой системе.
Система использует теневые пароли, есть ли способ генерировать зашифрованный теневой пароль без входа в/chrooting?
Любые другие способы изменить пароль root из скрипта?Изменить пароль root из сценария

+1

Некоторые советы [здесь] (http://mywiki.wooledge.org/BashFAQ/078). Есть способы. Это зависит от платформы. – ormaaj

+0

Спасибо за ответ. На самом деле это может быть решением. Я не знал, что Debian имеет команду mkpasswd, попробует это и отчитается. – SharkWipf

ответ

8

Хэш пароля находится в /etc/shadow. Вы можете просто заменить его сгенерированным (соленым) хешем. Формат хэша паролей описан в crypt (3). По умолчанию DES, но в системах glibc2 может содержать один из нескольких различных методов шифрования:

ID | Method 
--------------------------------------------------------- 
1 | MD5 
2a | Blowfish (not in mainline glibc; added in some 
    | Linux distributions) 
5 | SHA-256 (since glibc 2.7) 
6 | SHA-512 (since glibc 2.7) 

Так строка теневых паролей может выглядеть следующим образом: $5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD

В этом случае первый $ 5 $ часть указывает, что это хэш SHA-256, средняя часть - соль, а остальная часть - фактический хеш.

Чтобы создать один, лучше всего использовать крипту системы (3) функцию, например, с минимальной программой C:

#include <stdio.h> 
#include <crypt.h> 

int main(int argc, char *argv[]) { 
     printf("%s\n", crypt(argv[1], argv[2])); 
} 

компилировать с cc mkpass.c -o mkpass -lcrypt, а затем запустить с открытым текстом пароля и соли строки для создания строки вы можете поместить в /etc/shadow:

./mkpass yourpassword yoursalt     # DES (default) 
./mkpass yourpassword '$6$yoursalt$encrypted' # SHA-512 (quote your $) 

Вторая форма может не поддерживаться на старых системах Linux. Лучше посмотрите на существующую строку в теневом файле и используйте тот же тип хэша (из списка $ id $ вверху).

+0

Это работало безупречно, спасибо! – SharkWipf

-1

Нажмите e на вкладке Ubuntu на экране меню выбора ОС. Обновление команды следующим образом

rw init=/bin/bash 

Он будет падать вам линукс корневой оболочки. Измените свой пароль root, просто введя команду с именем passwd root.