Права администратора MOODLE-пропали права

Права администратора MOODLE-пропали права

от Петр Полянский -
Количество ответов: 48

Люди помогите пожалуйста пропали права администратора moodle. Как их востановить где в БД выставляются права альзователей?

Переустаовка системы не помогла так как очевидно права сохраняются в БД а она не изменилась при переустановке.

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Пользователь с правами главного администратора (который назначается при установке системы) имеет ID=2 в таблице "mdl_user" базы данных "moodle" (если Вы не меняли при установке предложенные по умолчанию названия).

Для начала проверьте наличие в в таблице "mdl_user" пользователя с ID=2 и соответствующие ему данные (логин, фамилию и т.д.)

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Этот пользователь есть и я под ним захожу, только теперь у него права не admin a как будто создатель курса или что то в этом роде

Подскажите пожалуйста в каких таблицах рыть именно привелегии этого пользователя?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Вспомните, с переопределением ролей не игрались, ничего не меняли с ролями?

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

В том то и дело что игрались но не я, а мой научный руководитель, я не знаю что именно он делал но рылся он в ролях.

А теперь ни одному из пользователей определение ролей не доступно, что делать?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Посмотрите соответствие значений в таблицах значениям по умолчанию:

mdl_role
id=1     name=Администратор    shortname=admin  


mdl_role_allow_assign
id=1     roleid=1     allowassign=1


mdl_role_allow_override
id=1     roleid=1     allowoverride=1

Совет - никому никогда не давайте пароль главного администратора.

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Ничего не понимаю все поля такие же как у вас, где же собака зарыта? грущу

 

Блин диплом горит грущу

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Сравните еще одну таблицу: mdl_role_capabilities

Должны совпадать первые ПЯТЬ колонок

Смотрите вложение.

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

И эта таблица совпадает только у меня в ней 1000 строк, я вот что заметил когда я пытаюсь назначить роли из под своего "admin" пользователя у меня вываливается куча ошибок посмотрите

 

2

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

>> только у меня в ней 1000 строк

Я обрезал лишние строки (касающиеся отдельных модулей)...

Зачем назначаете роли на уровне Пользователя? Здесь все должно быть ПУСТО!

Нужно назначить роль администратора на уровне ЯДРА системы:

Управление - Пользователи - Права - Назначить глобальные роли.

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Так нету панели управления системой грущу как в нее зайти? Раньше у меня именно этот пользователь был админом и была панель

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Попробуйте по прямой сылке http://ВАШ_САЙТ/admin/roles/assign.php?contextid=1

А блок Управление (Администрирование), случаем, НЕ СКРЫТ (удален)?

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Не ничего не скрыто а попытка пройти по ссылке говорит "Извините, но у Вас нет прав сделать это (Assign roles to users)"

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Предпоогаю что как то нужно изменить роли и права пользователя напрямую из базы, но вот только как?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Давайте попробуем сначала поподробнее...

Сравните поля в таблицах:

mdl_role
id=1     name=Администратор    shortname=admin  
2      Создатели курса      coursecreator
3      Преподаватель      editingteacher
4      Ассистент (нередактирующий преподаватель)      teacher
5      Студент      student
6      Гость      guest
7      Аутентифицированный пользователь      user

mdl_role_allow_assign
id=1     roleid=1     allowassign=1
2      1      2
3      1      4
4      1      3
5      1      5
6      1      6
7      2      4
8      2      3
9      2      5
10      2      6
11      3      4
12      3      5
13      3      6

mdl_role_allow_override
id=1     roleid=1     allowoverride=1

2      1      2
3      1      4
4      1      3
5      1      5
6      1      6
7      1      7

И внимательно таблицу mdl_role_capabilities (приводил раньше)

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Проверил все таблици совпадение полное где не совпадало подправил, результат  0 ни каких изменениу видимо дело в чем то другом грущу

 

Есть еще табличка mdl_role_name мож там чего

Спасибо

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

>> где не совпадало подправил, результат  0 ни каких изменениу

Новую сессию начинали? Советую перегрузагрузить сервер, и заново войти в систему.

mdl_role_name у меня пустая.

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Да перезагружал я его уже всяко разно безрезультатно грущу

Вы не знаете в какой таблице задаются параметры главной страници?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Главная страница - всегда курс с ID=1

Часть параметров описана в таблице mdl_course

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -
В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

гм. А вы уверены, что у вас роль админа не изменялась ?

Роль админа - это только слова, а права лежат в mdl_capabilities.

неплохо бы сравнить таблички mdl_capabilities на убитой и на рабочей системе.

или можно попытаться восстановить эту таблицу и посмотреть не появились ли права.

В ответ на Виталий Лавров

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

А вы мне не скините рабочую версию таблички mdl_capabilities

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Оригинальной у меня нет.

кроме mdl_capabilities еще нужно проверять/восстанавливать mdl_role_capabilities.

бекапов нет ?

Я могу сделать дамп этих табличек.

PS судя по ошибкам - что-то разрушено в базе данных. Смотрите логи базы данных!

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Сравните с записями в файле из приложения.

Обратите внимание на moodle/site; moodle/role; moodle/course

Права на отдельные активные элементы можно не сравнивать.

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

И эти таблици в точности такие же как у вас, ничего не понимаю видимо придется все начинать с нуля грущу

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

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

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

Кидаю Вам скриптик, который инженеры ООО "Открытые технологии" используют в таких ситуциях. Скопируйте код в файл, поместите файл в корень Moodle, откройте его в браузере. Он создат роль "инженер" с полными правами и назначит туда пользователя 'admin'. Я его поправил руками немножно (сократил, убрав необязательные проверки и другие операции), не отлаживал. Если не заработает - пишите

<?
error_reporting(E_ALL);
ini_set('display_errors', '1');
require_once(dirname(__FILE__) . '/config.php');
error_reporting(E_ALL);
ini_set('display_errors', '1');
$roleid = create_role('System engineer', 'engineer', "System support engineer", 'moodle/legacy:admin');
reset_role_capabilities($roleid);

if ($user = get_record('user','username','admin'))
{
$context = get_context_instance(CONTEXT_SYSTEM);
role_assign($roleid, $user->id, 0, $context->id, time(), 0, true);
echo 'ok';
}

?>

В ответ на Alex Djachenko

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Скрипт вернул мне это "id, 0, $context->id, time(), 0, true); echo 'ok'; } ?>"

пытался зайти в систему из под пользователя admin не вышло, что я делаю не так?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

Скорее всего Вы либо забыли начальный <? либо файл не имеет расширения php. То что у Вас выдалось означает, что скрипт просто не опознан как PHP.

Да, и Виталий верно подметил, нужно исправление в строчке подключения config.php.

В ответ на Alex Djachenko

Re: Права администратора MOODLE-пропали права

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Либо не в корень, а в любой каталог в корне moodle (например  в lib/), либо в корень, но изменить

require_once(dirname(__FILE__) . '/../config.php');
на

require_once(dirname(__FILE__) . '/config.php');

В ответ на Виталий Лавров

Re: Права администратора MOODLE-пропали права

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

Да, верно, забыл поправить (исходный скрипт был расчитан на запуск из вложенной папки).

В ответ на Alex Djachenko

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Поправил

require_once(dirname(__FILE__) . '/../config.php');
на

require_once(dirname(__FILE__) . '/config.php');

И скрипт вернул мне следующее

Warning: require_once(/www/rff-moodle.tsu.ru/www./config.php) [function.require-once]: failed to open stream: No such file or directory in /www/rff-moodle.tsu.ru/www/x.php on line 4

Fatal error: require_once() [function.require]: Failed opening required '/www/rff-moodle.tsu.ru/www./config.php' (include_path='.:/usr/local/share/pear') in /www/rff-moodle.tsu.ru/www/x.php on line 4


В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

Пётр, судя по тексту ошибки, у Вас не "require_once(dirname(__FILE__) . '/config.php');", а "require_once(dirname(__FILE__) . './config.php');". Скорее-всего ошиблись, удаляя лишние слеши и точки.

Вы когда-нибудь программировали на PHP? Вам нужно добиться, чтобы функция require_once() подключила конфигурационный файл moodle.

В ответ на Alex Djachenko

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Увы я радиотехник и опыта в php у меня нет грущу

Ошибка была именно в этом, спасибо.

Запустил я скрипт и вернул он мне это "there is already a role with this name!" вмест OK грущу

Видимо это из-за того что я запускал скрипт не один раз.

Пытаюсь зайти под именем admin без пароля не пускает, скажите пожалуйста что мне делать дальше?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Вставьте (замените) пароль в базе данных у нужного Вам пользователя на:

827ccb0eea8a706c4c34a16891f84e7b

Это означает, что его пароль - 12345

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

1 если я правильно понял скрипт должен был создать пользователя admin но его нет в базе

2 вы уверенны что у меня 12345 будет зашифрованно именно так? на сколько я знаю в файле config.php есть строчка каторая задает параметры кодирования паролей и она у всех разная

Спасибо

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

1. Скрипт создаст роль "инженер" с полными правами и назначит туда пользователя 'admin'. У Вас же был пользователь с логином 'admin' ?

2. Раньше срабатывало... Насчет настроек Вашего сайта - я уже ни в чем не уверен. подмигиваю

В ответ на Александр Анисимов

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

В базе пользователей нет пользователя с логином admin я на сколько помню такого не создавал

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Его создал инсталятор moodle. Если в базе нет такого юзера, то это очень плохо.

Либо база разрушена, либо похакали, либо удалили по незнанию/ошибке

В ответ на Виталий Лавров

Re: Права администратора MOODLE-пропали права

от Evgeniy Devyatkin -

Не факт, для главного пользователя можно любой логин задать.

Под каким логином был главный администратор? В базе данных нужно его найти, дальше вместо текущего логина поставить "admin". Из таблицы ролей удалите запись про "System engineer". Дальше запускайте еще раз скрипт, который дал Алексей. Роль должна снова создаться, найдется пользователь "admin" и ему дадутся права администратора.

Дальше пробуйте зайти под учетной записью "admin".

Еще, как вариант, можно в самом скрипте поставить нужный логин.

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

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

А вообще, судя по-всему, у вас в базе данных уже "жабы и черви"... Вообще, странно, ведь никто не согласится лечь на операцию к академику физ-мат наук, ветеренару,  автослесарю (очень-очень хорошему) или просто "способному студенту", который "перед операцией почитает форумы и во всём разберется". Однако когда речь идет об информационной системе, пусть даже содержащей учебные материалы, результаты работы студентов, оценки - с довольно высокой общей стоимостью, никто не смущается.

В ответ на Alex Djachenko

Re: Права администратора MOODLE-пропали права

от Evgeniy Devyatkin -

У нас с вами совпали мысли.

Если закомментировать, то скрипт ничего не будет знать про переменную $roleid. Тогда нужно будет заменить создание на извлечение идентификатора роли из базы.

В ответ на Evgeniy Devyatkin

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

Спасибо всем огромное, благодаря вам я запустил скрипт и он отработал и выдал "ок" и создал роль "System ingineer" но моему пользователю ничего не назначил и роль "System ingineer" никому не назначенна, что теперь посоветуете?

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Evgeniy Devyatkin -

А ошибки продолжают выводиться? Ничего не изменилось, кроме добавления новой роли?

Опишите, как вы поправили скрипт.

В ответ на Evgeniy Devyatkin

Re: Права администратора MOODLE-пропали права

от Петр Полянский -

В скрипте я вписал свой логин который раньше был администратором, удалил из базы запись о роли system ingneer запустил скрипт он отработал написал что все "ок" . Захожу под этим логином в систему... ничего... ни панели администрирования ни каких либо других признаков того что пользователю добавилось привилегий. Вот такие вот синдромы.

Роль system ingneer создалась но пользователям не присвоилась попытка назначить себе роль system ingneer увенчалась кучей ошибок:

Notice: Undefined variable: fullname in /www/rff-moodle.tsu.ru/www/admin/roles/assign.php on line 137

Notice: Undefined variable: fullname in /www/rff-moodle.tsu.ru/www/admin/roles/assign.php on line 140


Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 94

Column 'instanceid' cannot be null

INSERT INTO mdl_context ( CONTEXTLEVEL, INSTANCEID, DEPTH ) VALUES ( 30, null, 2 )
  • line 1554 of lib/dmllib.php: call to debugging()
  • line 2210 of lib/accesslib.php: call to insert_record()
  • line 2535 of lib/accesslib.php: call to create_context()
  • line 94 of user/tabs.php: call to get_context_instance()
  • line 145 of admin/roles/assign.php: call to include_once()
Error: could not insert new context level "30", instance "".
  • line 2220 of lib/accesslib.php: call to debugging()
  • line 2535 of lib/accesslib.php: call to create_context()
  • line 94 of user/tabs.php: call to get_context_instance()
  • line 145 of admin/roles/assign.php: call to include_once()


Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 96

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 97

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 119

Incorrect context specified
  • line 376 of lib/accesslib.php: call to debugging()
  • line 129 of user/tabs.php: call to has_capability()
  • line 145 of admin/roles/assign.php: call to include_once()
Incorrect context specified
  • line 376 of lib/accesslib.php: call to debugging()
  • line 144 of user/tabs.php: call to has_capability()
  • line 145 of admin/roles/assign.php: call to include_once()


Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 145

Incorrect context specified
  • line 376 of lib/accesslib.php: call to debugging()
  • line 164 of user/tabs.php: call to has_capability()
  • line 145 of admin/roles/assign.php: call to include_once()


Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 166

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 171

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 175

Incorrect context specified
  • line 376 of lib/accesslib.php: call to debugging()
  • line 181 of user/tabs.php: call to has_capability()
  • line 145 of admin/roles/assign.php: call to include_once()


Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 187

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 192

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 197

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 202

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 208

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 234

Notice: Trying to get property of non-object in /www/rff-moodle.tsu.ru/www/user/tabs.php on line 239

 

Самое интересное что роль назнаилась и пользователь числится как system ingneer но по факту прав никаких грущу

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Evgeniy Devyatkin -

Если можете, сделайте экспорт базы в файл через phpMyAdmin, пришлите мне на почту, я посмотрю что можно сделать.

И скажите, заодно, версию мудла (из version.php можно взять).

Адрес почты отправил личным сообщением.

В ответ на Петр Полянский

Re: Права администратора MOODLE-пропали права

от Vadim Tabunshchik -
Изображение пользователя Developers

роль назнаилась и пользователь числится как system ingneer но по факту прав никаких

Так и будет, потому что проблема глубже, о чем говорят приведенные Вами ошибки - Incorrect context specified и остальные, связанные со словами context. Система не понимает, в каком контексте назначать права пользователю, в таблице mdl_context творится полный бардак, уж извините  улыбаюсь

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

В этой таблице поле contextlevel - это уровни (контексты):

'CONTEXT_SYSTEM', 10 - уровень системы, сайта в целом
'CONTEXT_USER', 30 - * пользователя
'CONTEXT_COURSECAT', 40 - * категории курсов
'CONTEXT_COURSE', 50 - * курса
'CONTEXT_MODULE', 70 - * модуля
'CONTEXT_BLOCK', 80 - * блока

Поле instanceid связано с ключами id таблиц mdl_user, mdl_course, mdl_course_categories и др.

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