Я ищу способ изменить пароль пользователя root в системе Linux через сценарий bash без загрузки системы. Единственное, что я нашел до сих пор, это либо удалить пароль, либо использовать chroot, который я предпочитаю не использовать.
Я знаю, как очистить пароль root, но мне нужно изменить его на другой пароль, определенный ранее в скрипте.
У меня есть root доступ ко всей файловой системе.
Система использует теневые пароли, есть ли способ генерировать зашифрованный теневой пароль без входа в/chrooting?
Любые другие способы изменить пароль root из скрипта?Изменить пароль root из сценария
ответ
Хэш пароля находится в /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 $ вверху).
Это работало безупречно, спасибо! – SharkWipf
Нажмите e
на вкладке Ubuntu на экране меню выбора ОС. Обновление команды следующим образом
rw init=/bin/bash
Он будет падать вам линукс корневой оболочки. Измените свой пароль root, просто введя команду с именем passwd root.
Некоторые советы [здесь] (http://mywiki.wooledge.org/BashFAQ/078). Есть способы. Это зависит от платформы. – ormaaj
Спасибо за ответ. На самом деле это может быть решением. Я не знал, что Debian имеет команду mkpasswd, попробует это и отчитается. – SharkWipf