среда, 13 июля 2011 г.

Как узнать размер папки?

Как узнать размер папки, к которой нет доступа - спросил меня коллега. Проблема в том, что при попытке сделать это привычным способом - правой кнопкой мыши, возвращается значение 0. Но при этом, сказал он, бекап ведь работает нормально. Такая себе инженерная задачка.
На самом деле тут все достаточно просто. Есть две привилегии: SeBackupPrivilege и SeRestorePrivilege. Наличие этих привилегий в токене процесса дает возможность этому процессу обходить стандартные списки доступа к файлам. Что делать? Проще всего - создать пользователя и добавить его в группу Backup Operators. Согласно настройкам в групповых политиках, эта группа получает эти привилегии. Однако тут есть тонкий момент. Новый механизм integrity level не дает добавить эти привилегии в токен любого процесса. Даже если запустить процесс, который будет  обращаться к таким файлам, от имени пользователя из группы Backup Operators с ходу ничего не получится. Нужно запускать процесс с повышенными привилегиями (elevated privileges). В этом случае все начинает работать.
Отправить комментарий