Обсуждение завершено Дело об ошибке FrontPage

Саныч

Ветеран
Сообщения
860
Симпатии
1,096
Баллы
553
#1
В очередной статье из серии "Дело об..." от Марка Руссиновича (Mark Russinovich) мы поговорим об ошибке, вызванной некорректным наследованием прав в Windows.

Представляем вам первую публикацию из серии "Дело об" от стороннего автора. За последние два месяца мы получили множество великолепных статей с расследованиями, но для первого раза мы выбрали это, написанное Троем Вольбринком (Troy Wolbrink), корпоративным веб-мастером.

Трой столкнулся с проблемами со своим сервером и вместо того, перезагрузить его, переустановить его или звонить в Microsoft Product Support Services, где, несомненно, ему бы посоветовали эти же шаги, он использовал базовые техники для решения проблем, на что ему понадобилось несколько минут. В благодарность за детальную статью со скриншотами я послал Трою подписанною копию книги Windows Internals.

В свой доклад Case of the Unexplained..., который я озвучил наTechEd/IT в июне, я включил несколько новых дел. Даже если вы видели мой доклад с ноябрьского TechEd/ITForum, рекомендую вам ознакомиться и с этим, поскольку вы сможете узнать много нового.

Итак, слово Трею.

Недавно я перевел свой сайт с общего хостинга на выделенный сервер. Некоторые части моего сайта использовали FrontPage Server Extensions (FPSE), например, страницы, которые собирали данные и сохраняли их в лог.

proxy.php?image=http%3A%2F%2Fimg40.imageshack.us%2Fimg40%2F9872%2Ffrontpage1.png&hash=c6b89763116e6f4933ed8e0ef3be46c2

Я установил FPSE, используя аплет установки и удаление программ, а потом сделал все, чтобы настроить его с помощью IIS. Но по какой-то причине я не мог правильно настроить FPSE, чтобы моя форма сбора данных работала. Сообщение об ошибке в браузере было абсолютно непонятным.


proxy.php?image=http%3A%2F%2Fimg40.imageshack.us%2Fimg40%2F8017%2Ffrontpage2.png&hash=a418cf7ffa1a44e72cd42eda7a7dc6ba



Я изучил на предмет возможных проблем логи из Event Log сервера, но ничего не нашел.

В мои планы входила замена данного сайта на соответствующий, созданный на ASP.NET и SQL Server, так что я не видел причин, чтобы становится гуру по FPSE для того, чтобы решить одну эту проблему. Но так как другие приоритеты в течение уже нескольких лет мне мешали перейти на ASP.NET, у меня не было другого выбора, кроме как провести расследование. Я как раз недавно смотрел "The Case of the Unexplained…", и решил запустить Process Monitor на своем сервере - возможно, я бы увидел источник проблемы. Я исключил из логов некоторые процессы, которые очевидно, что не могли иметь никакого отношения к моей проблеме. Это удалило много мусора. Так как моя страница называется TntWebLog.htm, а логи пишутся в файл TntWebLog.csv, то я настроил программу так, чтобы она подсвечивала любые события, в пути которых содержится TntWebLog.

Чтобы повторно вызвать появление проблемы я запустил браузер и попытался снова заполнить форму, после чего я прекратил захват событий в Process Monitor. После этого я пролистал список в поиске выделенных строчек. Я удивительно быстро нашел источник проблемы. FPSE пытался создать файл с таким же именем, который уже существовал.

proxy.php?image=http%3A%2F%2Fimg40.imageshack.us%2Fimg40%2F1456%2Ffrontpage3.png&hash=d45cdee102e9e5b19ccb61ede860c312


Очевидно, что здесь было что-то не так с правами доступа. Я проверил права доступа к файлу TntWebLog.csv и не нашел в списке учетной записи IUSR_WEBBOARD, которая настроена в IIS для анонимного доступа.


proxy.php?image=http%3A%2F%2Fimg40.imageshack.us%2Fimg40%2F4747%2Ffrontpage4.png&hash=458a7ef3ae8c9070bf8ac085f29a6bd5



Так что я зашел в расширенные свойства файла и отметил пункт "Allow inheritable permissions from the parent to propagate…", подтвердив свой выбор ОК.

proxy.php?image=http%3A%2F%2Fimg40.imageshack.us%2Fimg40%2F4074%2Ffrontpage5.png&hash=bc5c6b89ae8c1e3ccdd97b8435a82068


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

Оглядываясь назад, я могу сказать, что эта проблема произошла из-за того, что я использовал Windows Explorer для перемещения, а не копирования файла. Для подтверждения провел несколько тестов. Когда вы перемещаете файл с помощью Windows Explorer, то Windows Explorer копирует и права доступа, а когда копируете - Windows Explorer создает новый файл, права для которого берет из прав папки. Если бы я изначально копировал этот файл, то проблемы бы этой не было.



Источник
 
Сверху Снизу