Sensenet: Потерян доступ к сайту

По какой-то причине я потерял доступ к одному из сайтов, которые я настроил в своем сенсете. Я не могу получить доступ к какой-либо конфигурации в «Проводнике» даже с правами администратора.

Как установить права доступа к сайту?

Проверяя logEntrie в базе данных, я могу проверить последние разрешения на изменение на сайте:

<Type>SetPermissions</Type>   
<OldAcl>-(5968)|+(7):_____________________________________________+++++++++++++++++++,+(8):___________________________________________________________+++++</OldAcl>  
<NewAcl>-(5968)|+(7):_____________________________________________+++++++++++++++++++,+(8):_______________________________________________+___________+++++</NewAcl>   
<UserName>BuiltIn\Admin</UserName>   

Я также проверил в таблице узлов, что путь, который, как я думаю, находится на начальной странице по умолчанию, заблокирован:

/Root/Sites/<site>/<document workspace>/(apps)/This/Browse

(Я указал рабочую область документа в качестве альтернативной стартовой страницы на сайте).


person Luciano Valinho    schedule 23.01.2017    source источник
comment
Таким образом, вы даже не можете войти в Content Explorer с правами администратора, или вы можете войти в него и увидеть дерево, но не можете получить доступ к одному из материалов сайта sensenet в дереве?   -  person Miklós Tóth    schedule 23.01.2017
comment
У вас есть контент из нескольких сайтов с разными URL-адресами или только сайт по умолчанию, который вы получаете при установке senset?   -  person Miklós Tóth    schedule 23.01.2017
comment
Другой вопрос: вы помните, что вы делали до выпуска? Было ли это где-то изменено разрешение?   -  person Miklós Tóth    schedule 23.01.2017
comment
Я могу получить доступ к Content Explorer с правами администратора и видеть в дереве (слева) все содержимое сайта. Но я не могу получить доступ к контенту, включая разрешения...   -  person Luciano Valinho    schedule 23.01.2017
comment
Я не совсем уверен, что я делал раньше... Я пытался сделать некоторые изменения разрешений на сайте и на определенном контенте на сайте (рабочая область документа)... Я не помню, чтобы сделать это действие, но единственный способ, которым я думаю, что это произошло, - это каким-то образом группа администраторов была удалена из записи безопасности сайта ... Да, у меня есть другой URL-адрес этого сайта.   -  person Luciano Valinho    schedule 23.01.2017
comment
Я попытался написать подробный ответ ниже. Вполне возможно, что права группы Администраторы надо добавить в Корень, а не сайт, потому что по умолчанию на сайте для этой группы вообще не определены права, он просто наследует их от Корня.   -  person Miklós Tóth    schedule 23.01.2017


Ответы (1)


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

Использование SnAdmin

SnAdmin — это инструмент командной строки, способный выполнять пакеты. Пакет может быть огромным пакетом обновления (предоставляется для корпоративных клиентов) или небольшим пакетом, который собирается вручную. На самом деле это zip-файл, содержащий как минимум manifest.xml и, возможно, другие материалы (например, скрипты sql для изменения базы данных или файлов на импорт).

SnAdmin — рекомендуемый способ внесения технических изменений в репозиторий.

В вашем случае это было бы очень просто:

  • создайте ZIP-файл (например, с именем "MyPermissionPackage.zip"), содержащий один файл manifest.xml (см. содержание ниже), который содержит этапы установки разрешений.
  • скопируйте этот ZIP-файл в каталог web\Admin
  • остановить сайт IIS
  • убедитесь, что файл web\Tools\SnAdminRuntime.exe.config содержит то же значение конфигурации строки подключения, что и файл web.config (это важно, чтобы инструмент работал с тем же репозиторием!)
  • выполнить пакет из командной строки (основной файл SnAdmin.exe находится в веб-файле \Admin\bin, вы можете запустить его оттуда)

SnAdmin.exe MyPermissionPackage

Это пример манифеста, вы можете добавить любое количество шагов (есть их целая библиотека):

<Package type='Product' level='Tool'>
  <Name>Sense/Net ECM</Name>
  <ReleaseDate>2017-01-01</ReleaseDate>
  <Steps>
      <Phase>
          <StartRepository startWorkflowEngine="false" />
          <SetPermissions
            path="/Root/Sites/Default_Site"
            identity="/Root/IMS/BuiltIn/Portal/Administrators"
            allow="Open,RunApplication,SeePermissions,SetPermissions"
            />
    </Phase>
  </Steps>
</Package>

Если все пойдет хорошо, после запуска сайта вы увидите изменения.

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

Использование инструмента импорта

В этом случае вы выполняете обычный импорт. Вам придется найти файлы «.Content» в оригинальном исходном пакете или создать их вручную, но проще скопировать тот, который вы хотите импортировать (например, файл содержимого сайта по умолчанию). В нижней части файла .Content вы увидите раздел Разрешения, где вы можете определить импортированные разрешения. На самом деле вам следует удалить из файла весь раздел Поля, чтобы не перезаписывать поля метаданных, а только импортировать разрешения.

person Miklós Tóth    schedule 23.01.2017
comment
В итоге я восстановил базу данных с предыдущей версией. К счастью, у меня была недавняя версия базы данных. До этого я пытался использовать команду SnAdmin, но по какой-то причине это не сработало. Команда работала нормально, но я считаю, что моя проблема может быть другой. Спасибо за все. - person Luciano Valinho; 23.01.2017