Секреты Windows 7: Дело о потерянных правах
Среда, 23 - Ноябрь - 2011 7 комментариев
Столкнулся на днях с любопытной ситуацией: пользователи не могут перезаписывать файл, даже обладая разрешениями Full Control на него. Обычный текстовый файл вида ImportantInformation.txt, сохранённый в корне системного диска (C:\), работа с ним осуществляется в Notepad. Эта программа данные обычно пишет напрямую, никаких ужимок и гримас не строит, как любит делать MS Word. Итого, администраторы всё успешно сохраняют, рядовые пользователи — нет. Разрешения NTFS одинаковые.
Пришлось взять в руки Аудит и включить слежение за неудачными попытками доступа. Картинка начала вырисовываться совсем непонятная.
Как мы видим из текста сообщения, доступ на запись был заблокирован проверкой Политики Целостности (Integrity Policy check). Первая же ссылка на MSDN (http://msdn.microsoft.com/en-us/library/bb625963.aspx) пускается в пространные объяснения, не давая ответа на вопрос «Что делать-то будем? Людям работать нужно!» Помог Mark Minasi: http://www.minasi.com/apps/
Объясняя проблему вкратце, файл C:\ImportantInformation.txt унаследовал с корня системного диска высокий Integrity Level, не разрешающий рядовым пользователям операции выше, чем просто чтение. А поскольку система контроля целостности стоит выше, чем разрешения NTFS, то ни Modify, ни даже Full Control тут делу не поможет. Что делать? Берите у Минаси программу chml и снизьте уровень целостности нужного файла до среднего, выполнив команду:
chml C:\ImportantInformation.txt -l:m
А можно решить вопрос и встроенной командой:
icacls C:\ImportantInformation.txt /setintegritylevel M
P. S. Я прекрасно знаю, что сохранять пользовательские файлы в корне системного диска — тяжкий грех и нарушение Протокола. Почему же меня этот вопрос так волновал? Да потому, что существуют чудесатые поставщики программного обеспечения, у которых работают не менее чудесатые программисты. Знаете, что они мне ответили на вопрос «Зачем ваша программа пытается писать и в Program Files, и в Temp, и в свою папку, и в корень системного диска?» «Наша бухгалтерская программа написана согласно всем правилам Кабинета Министров Латвийской Республики за номером таким-то. Эти правила писать в корень диска C: не запрещают.»
Последее предложение в P.S. особенно порадовало… :)
Петр, спасибо за разбор полетов. У меня на эту тему в викторине была загадка о пунктах контекстного меню http://www.outsidethebox.ms/11418/#3 Одному коллеге она мозг взорвала :)
Дат, поведение UAC реально мешает мне при работе с правами доступа. Поэтому UAC я отключаю. Впрочем, это мы уже обсуждали.
«существуют чудесатые поставщики программного обеспечения, у которых работают не менее чудесатые программисты.»
Например Adobe Photoshop CS6, пишет свой temp файл исключительно в корень раздела.
статья «ниачем»
Уведомление: Викторина «Загадки Windows» с призами от Microsoft и ESET – Вадим Стеркин
Спасибо огромное! По-поводу чудесатых программистов согласен на все 100%