Русский

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

Вариант 1
Для начала посмотрим вывод команды:

drush sqlq "SELECT name, pass FROM users WHERE uid = 1;"
Вывод будет, например, таким:

name pass
admin $S$DDVoaxqGiaiWMqjIgdeTmd8ySy4B7Gp/KFRWbQJrZttsdOOSwhlo
Это означает, что имя пользователя администратора "admin", а в поле pass находится хэш его пароля. Сохраним значение хэша пароля, чтобы после наших манипуляций мы могли вернуть его на место.
Теперь устанавливаем новый пароль для пользователя admin:

drush upwd admin --password=newpassword
Теперь можно провести все необходимые изменения на сайте, так как мы знаем пароль пользователя с админским доступом.
После проведения всех изменений необходимо вернуть старый пароль на место. Сделать это можно следующей командой:

drush sqlq "update users set pass='$S$DDVoaxqGiaiWMqjIgdeTmd8ySy4B7Gp/KFRWbQJrZttsdOOSwhlo' where uid = 1;"
Добавлено
Так же можно использовать команду

drush uli
для получения одноразовой ссылки для авторизации под администратором сайта.
P.S. Спасибо пользователю kalabro за подсказку;)

Вариант 2
Сброс пароля для Drupal 6
Зайти в mysql:

mysql -uuser -ppass
Просмотреть список баз данных:

SHOW DATABASES;
Найти свою и установить её для дальнейшего использования:

USE drupal_database;
Выполнить команду, которая установит пароль “password” для пользователя с именем admin:

UPDATE users SET pass = MD5('password') WHERE name = ‘admin’;
Таким образом мы в запросе передали пароль и на “лету” выполнили его шифрование.

Сброс пароля для Drupal 7
Перейти в директорию с сайтом и выполнить команду:

./scripts/password-hash.sh new_password
В этой команде выполняется скрипт, которому параметром передается новый пароль “new_password”. Скрипт пароль шифрует с помощью алгоритма SHA512 и выдает зашифрованный пароль в виде хеша:

$S$D6kfEggLdwCHweucG1Yuriy1mHDdMvhcq4ANcomv3K3iz29NL7j2
Также хеш с новым паролем можно сгенерировать следующим образом:
Создать в корне сайта файл с расширением .php, например hash.php и поместить в него код:

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
require_once DRUPAL_ROOT . '/includes/password.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
echo user_hash_password('new_password');
die();
?>
Где “new_password” - новый пароль

После этого перейти на адрес:

http://example.com/hash.php
Замените “example.com” на имя вашего домена

И вы получите хеш нового пароля.
По окончанию удалите файл hash.php!
Далее установим хеш с новым паролем для учетной записи, к примеру admin.

Установка нового пароля
Зайти в mysql:

mysql -uuser -ppass
Просмотреть список баз данных:

SHOW DATABASES;
Найти свою и установить её для дальнейшего использования:

USE drupal_database;
Выполнить команду, которая установит хеш с паролем для пользователя с именем admin:

UPDATE users SET pass ='$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML' WHERE name = ‘admin’;
Вариант 3
Бывают случаи, при которых получить доступ к SSH не удается, а пароль поменять надо.
Для этих целей можно написать скрипт, который производит загрузку ядра Drupal и предоставляет доступ к функциям учетной записи. Этот пример работает только для Drupal 7.

Создать файл с расширение .php и случайным именем, например dy32h3.php в корне сайта с кодом:

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/includes/password.inc';
if (isset($_GET['pass']) && !empty($_GET['pass'])) {
$newhash = user_hash_password($_GET['pass']);
}
else {
die('Retry with ?pass=PASSWORD set in the URL');
}
$updatepass = db_update('users')
->fields(array(
'pass' => $newhash,
// Uncomment the following lines to reset username and/or email address
// 'name' => 'admin',
// 'mail' => 'yourmail@example.com'
))
->condition('uid', '1', '=')
->execute();
print "Complete! Please delete this file immediately!";
drupal_exit();
?>
При выполнении скрипта происходит смена пароля для учетной записи с uid 1, то есть для самой главной учетной записи.

Также помимо пароля можно поменять имя учетной записи и адрес электронной почты. Для этого уберите комментарии со строк и укажите новое имя и адрес электронной почты.:

// 'name' => 'admin',
// 'mail' => 'yourmail@example.com'
Открыть браузер и перейти по адресу, замените “example.com” и “new_password” на имя вашего домена и новый пароль:

http://example.com/dy32h3.php?pass=new_password
Если скрипт выполнится успешно, то появится сообщение:

Complete! Please delete this file immediately!
По окончанию удалите файл dy32h3.php!

Добавить комментарий

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот тест необходимо выполнить для определения являетесь Вы человеком или спам-ботом осуществляющим спам-рассылку.