Пользователь
Сообщения: 142
Благодарности: 11
|
Профиль
|
Отправить PM
| Цитировать
Сделал картинки, чтобы понятнее объяснить причину моего непонимания работы прав доступа в Windows 7.
Обратите внимание на картинку 0 - права не унаследованы от другой папки. В конце я объясню, почему оставил только группу Администраторы.
Примечание: галочки "чтение разрешений" и "смена владельца" я не ставил, чтобы не было путаницы.
Картинка 1
Создан элемент разрешения, в котором 5 галок соответствуют набору "Чтение и выполнение".
Результат. Файл нельзя записать (перезаписать старую версию новой), но множно переименовать и удалить.
Картинка 2
Сделан реверс. Стоявшие галочки "Разрешить" убраны, а там, где не было галочек "Запретить", галочки "Запретить" поставлены (кроме последних двух - чтения разрешений и смены владельца)
Результат. Во вкладке дополнительно "Элемент разрешения" типа "Разрешить" пропал, на его месте появился "элемент разрешения" типа "Запретить". Файл нельзя открыть. Потому что пропали явные разрешения?
Картинка 3
К галочкам с Картинки 2 добавил галочки с Картинки 1.
Результат. Файл снова можно открыть, но нельзя перезаписать. И... его снова можно переименовать и удалить. Почему??? Я не убирал явные запреты на удаление и дозапись, которые на Картинке 2. Каким образом разрешения из Картинки 1 отменяют запрет на переименование и удаление?
Еще один момент, который мне непонятен. Если оставить только запреты из Картинки 2, но добавить группу Пользователи и указать в ней хотя бы 1 ЛЮБОЕ разрешение, файл снова можно будет переименовать и удалить.
Каак сделать так, чтобы файл можно было читать и выполнять, но нельзя было переименовать и удалить. Интересует, как этого добиться не только обычными средствами (вкладкой безопасности), но и с помощью xcacls, subinacl и icacls. С icacls дела не имел, но в xcacls и subinacl можно менять файлы выборочно по типу, например, изменить права доступа для всех файлов с разрешением *.txt в папке или подпапках.
Tima182, На системные папки менять доступ не нужно, иначе перестанет работать система.
Для обычных папок можно использовать xcacls (скопировать файлв в папку Windows/system32) - она нужна для работы из-под командной строки.
Примерно так:
xcacls c:\*.txt /e /t /p "Имя пользователя":доступ
список доступов можно посмотреть, набрав в командной строке xcacls /?
Ключ /t - обрабатываются также подкаталоги и файлы в них
Ключ /e означает, что существующая запись только редактируется - добавляются группы и/или пользователи к уже имеющимся в записи). Если ключа /e нет, то прежние списки пользователей удаляются.
Ключ /p удаляет все "галочки" доступа (разрешений или запретов), ставя только те, что указаны в команде. В этом его отличие от ключа /g, который добавляет "галочки" доступа (разрешений или запретов), которые указаны в команде, к уже имеющимся.
Если в имени пользователя есть пробел, нужно заключить его в двойные кавычки.
*.txt - означает, что обработаются все файлы с таким расширением. Но если нужно обработать только папки с подпапками и файлами в них, то просто указать путь к папке.
Еще раз повторю, что системный диск лучше не трогать вообще.
Если не выходит сменить разрешение, станьте владельцем папки или файла. Поможет subinacl (копировать в windows/system32)
subinacl /file c:\1.txt /perm /grant=Имя_пользователя=права
/perm отменяет все прежние разрешения (чистит список, чтобы создать его по новой)
/file - применяется для файлов и папок. Чтобы узнать, что может subinacl, лучше внимательно посмотреть документацию, хотя могут все равно остаться вопросы.
Чтобы убедиться, что все сделано без ошибок, в файле bat в конце напишите pause, чтобы окошко не закрывалось после выполнения команд.
|