ProFFeSSoR, так и должно быть - это, если я правильно понял, сделано для защиты важных файлов от случайного удаления или изменения неопытным пользователем, который работает под учетной записью администратора, или программами - они очень любят портить (заменять своими) системные файлы.
Phoenix, Согласен. В Windows уже выставлены на ключи реестра и системные файлы права более или менее оптимально, и их лучше не трогать. Раньше думалось наоборот
Единственная защита в XP, которую нашел, работа без административных прав. В Windows 7, к счастью, есть UAC.
Помогите, пожалуйста, разобраться с xcacls/cacls, subinacl, и, возможно, icacls
читать дальше »
1. Вопрос №1: Как ДЛЯ ФАЙЛОВ И КЛЮЧЕЙ РЕЕСТРА правильно поставить права только на чтение (rx) в xcacls и subinacl для всех пользователей и групп, и при этом, чтобы объект нельзя было переименовать и удалить?
Все ли верно:
xcacls c:\1.txt /e /p S-1-1-0:rx (ключ /e означает, что существующая запись только редактируется - добавляются группы и/или пользователи к уже имеющимся в записи)
или
xcacls c:\1.exe /p S-1-1-0:rx (список групп и/или пользователей создается заново, теперь в записи будут присутствовать только группы и/или пользователи, которые указаны в команде)
Ключ /t - обрабатываются также подкоталоги и файлы в них, в данном случае он бесполезен, но в случае с папкой его надо будет написать.
Ключ /p удаляет все остальные "галочки" доступа, ставя только те, что указаны в команде (в отличие от ключа /g, который добавляет "галочки" доступа, которые указаны в команде, к уже имеющимся).
При установках только разрешений получается правило - что не разрешено, то запрещено. При этом галочек запретов нет, в окне ГРУППЫ И ПОЛЬЗОВАТЕЛИ стоят только галочки разрешений "чтение и выполнение" и "чтение". Также, можно выставить эти же права командами
xcacls c:\1.exe /p S-1-1-0:rx
subinacl /file c:\1.txt /perm /grant=S-1-1-0=rx
После этого файл можно читать и выполнять, а изменять его содержание (сохранять новую версию на месте старой) нельзя. Но файл можно переименовать и удалить.
Неясный момент: если в ДОПОЛНИТЕЛЬНО убрать все галки в столбце РАЗРЕШИТЬ (в ЭЛЕМЕНТАХ РАЗРЕШЕНИЯ пропадет строчка РАЗРЕШИТЬ), и в стобце ЗАПРЕТИТЬ поставить все галочки, кроме стандартных пяти ("траверс папок\выполнение файлов", "содержание папки\чтение данных", "чтение атрибутов", "чтение дополнительных атрибутов", "чтение разрешений"), наконец-то получилось! - файл можно будет читать\запускать, но его нельзя будет удалить или переименовать.
Однако, если поставить хотя бы 1 галочку в столбце РАЗРЕШИТЬ (в ЭЛЕМЕНТАХ РАЗРЕШЕНИЯ появится строчка РАЗРЕШИТЬ), опятьдвадцатьпять, файл можно будет удалить и переименовать.
Почему так?
Вопрос №2: Как галочка, например, "чтение атрибутов" в столбце РАЗРЕШИТЬ влияет на удаление и переименование файла?
Команды, по сути, одинаковые:
xcacls 1:\1.txt /p S-1-1-0:rx
subinacl /file c:\1.txt /perm /grant=S-1-1-0=rx
означают 5 галочек в столбце РАЗРЕШИТЬ: файл нельзя изменять (сохранять новую версию на месте старой), но, как я уже сказал, можно удалить. Если столбцы РАЗРЕШИТЬ и ЗАПРЕТИТЬ инверсировать (что описано в предыдущем абзаце), разрешения остаются теми же (чтение, чтение и выполнение), но в ЭЛЕМЕНТАХ РАЗРЕШЕНИЙ вместо строчки РАЗРЕШИТЬ появляется строчка ЗАПРЕТИТЬ и файл нельзя переименовать и удалить, что и нужно.
Но как это сделать?
Вопрос №3: как добиться в xcacls и subinacl, чтобы файл/ключ реестра нельзя было изменить, т.е. сохранить новую версию на месте старой, переименовать и удалить?