Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Разрешения NTFS (http://forum.oszone.net/showthread.php?t=6064)

SkyF 20-10-2002 11:01 30444

Ситуация следующая:
- Есть обычный пользователь, входящий в группу Users.
- Есть командный файл (батник) на него выставлено ТОЛЬКО разрешение read для этого пользователя.
- От имени этого пользователя из проводника выполнить командный файл нельзя, а из командной строки можно!!!!
-Однако, если снять специальное разрешение read extended attribute - то возможность запуска из командной строки, наконец-то, более не доступна.

Каков механизм этой проблемы? Что порочная ссвязь команднй строки, extened attribute  и баного файла?


Добавлено:

И, кстати, вдогонку...
Разрешение write - назначенное на объект, не даёт само по себе права на простотр разрешений объекта.
И всё это вопреки документации - по help такое разрешение (Read permissions) -WRITE  должно назначать. Ноэтого не происходит.
Где эта особенность документирована и почему, вообще так?

Fidel 20-10-2002 21:53 30445

SkyF
По поводу основного вопроса - ты гонишь. Смотри еще раз внимательно что делаешь.

Про догонку. В HELP опечатка.:biglaugh:

SkyF 20-10-2002 22:44 30446

Fidel
??? Ты пробовал? тогда не суди так строго.
Сделай сам.
вот при таких разрешениях *- bat запускается:
--------------
C:\1\exec.bat BUILTIN\Administrators:F
* * * * * * *mydomain\welcome:(OI)(CI)(special access:)

* * * * * * * * * * * * * * * * * * * * * * READ_CONTROL
* * * * * * * * * * * * * * * * * * * * * * SYNCHRONIZE
* * * * * * * * * * * * * * * * * * * * * * FILE_GENERIC_READ
* * * * * * * * * * * * * * * * * * * * * * FILE_READ_DATA
* * * * * * * * * * * * * * * * * * * * * * FILE_READ_EA
* * * * * * * * * * * * * * * * * * * * * * FILE_READ_ATTRIBUTES
--------------
А при таких -уже нет:
--------------
C:\1\exec.bat BUILTIN\Administrators:F
* * * * * * *mydomain\welcome:(special access:)

* * * * * * * * * * * * * * * * * * READ_CONTROL
* * * * * * * * * * * * * * * * * * SYNCHRONIZE
* * * * * * * * * * * * * * * * * * FILE_READ_DATA
* * * * * * * * * * * * * * * * * * FILE_READ_ATTRIBUTES


C:\1>exec.bat
Access is denied.
---------------

по поводу 2-го вопроса: ты видел эту только в Хелпе? *хм, я видел её везде... только один правильный импортный автор заметил этот факт.

Я просил замечания Microsoft *по этому вопросу.

[s]Исправлено: SkyF, 0:45 21-10-2002[/s]

Fidel 20-10-2002 22:59 30447

SkyF
Пробовал.
Все делал юзером, отличным от себя, не членом группы Администраторов. Все запускалось одинаково из командной строки и из проводника. Руками снимал разрешение FILE_READ_EA в ACL файла. Все работает.


SkyF 20-10-2002 23:06 30448

Fidel
Работает, работает.. это в каком смысле? Запускается или нет?
Что же работает? стоит разрешение only read  - и, значит, не запускается - не из командной строки, не из проводника (страшная табличка).  -потом ты ещё снимаешь специальное разрешение FILE_READ_EA - и тоже работает - в смысле не запускается..  
так?  Или как?

Fidel 21-10-2002 01:53 30449

Fidel
Работает = Запускается

vasketsov 21-10-2002 18:25 30450

SkyF
чтения достаточно для запуска, если проводник ломается - это проблемы только проводника (лень проверять, доверяю тут Fidel), мало ли, он может FULL_ACCESS хочет, но на моей памяти такого не было и нет.

Про WRITE - даже комментировать не хочу, заметь, доступ на запись не предполагает необходимость в общем случае доступ на чтение. Лучше б написал откуда взял это.

Про FILE_READ_EA. Весь мой опыт программирования свидетельствует о том, что для файлов как таковых Extended Attributes не используются (на фатах их нет в принципе, на NTFS это все замечательно реализуется файловыми атрибутами и смысла в использовании EA нет, сам проверь, EA везде пустые будут, если только нарочно их какой-то хитрый софт не использует, как обратный пример: точно где используются EA - это при создании сокетов, сам это делал). Потому это право на обычные файлы распространяется постольку поскольку и роли никакой не играет.

Еще расскажи плиз, как ты представляешь себе в списке прав GENERIC-право? Его там быть просто не должно, под ними (GENERIC) скрывается всегда некий набор прав (он может реализовываться на уровне операционной системы, и тогда эта константа не представима в виде суммы отдельных прав, пример - MAXIMUM_ALLOWED, либо на уровне кода приложения, то есть, константа представима в виде суммы отдельных прав, например, KEY_READ), а в списке эти GENERIC-права должны размапливаться (слово по имени соответствующей функции API) на составляющие (в этом смысле MAXIMUM_ALLOWED не есть полноценное GENERIC-право, я его просто как пример привел, можно было GENERIC_READ придумать).

Fidel 22-10-2002 03:30 30451

vasketsov

[pre]FILE_GENERIC_READ =  STANDARD_RIGHTS_READ || FILE_READ_DATA || FILE_READ_ATTRIBUTES || FILE_READ_EA || SYNCHRONIZE[/pre]

Думаю ты понял:) (Глянь windows.h, я думаю там эта константа определена:) )

SkyF
Extended Attributes - вещь эфимерная. Присутствует у файла, и обрабатывется только если это предусмотренно разработчиком.:) Как правильно сказал vasketsov: "для файлов как таковых Extended Attributes не используются" (обычно).

vasketsov 22-10-2002 12:39 30452

Fidel
именно это я и имел в виду под GENERIC-правом, и присутствие его в списке прав для файла для меня непонятно, должно быть именно такое разделение побитно, как ты и написал.

SkyF 22-10-2002 15:14 30453

Цитата:

чтения достаточно для запуска, если проводник ломается - это проблемы только проводника (лень проверять, доверяю тут Fidel), мало ли, он может FULL_ACCESS хочет, но на моей памяти такого не было и нет.
"Чтения достаточно для запуска"... Э-эх. Это лажа.

Для чего нужно так было делать Microsoft? Для чего выделять ещё и execute, если его совершенно не реализовывать?
и почему, "Чтения достаточно для записи", если как только, это пресловутое спец. разрешение FILE_READ_ATTRIBUTES (которое по вашему нигде не используется), убрать - то ЗАПУСКСАТЬ командные файлы при разрешении READ  станивится нельзя?

Ясно, что можно скопировать и запустить, но это не то...

Цитата:

Про WRITE - даже комментировать не хочу, заметь, доступ на запись не предполагает необходимость в общем случае доступ на чтение. Лучше б написал откуда взял это.
В смысле где взял? В хелпе и взял (в хелп - индекс - "file permissions"), на Microsoft.com  и взял - http://support.microsoft.com/default...;en-us;Q308419.
По любому "Read Permissions" - указан как вклчающийся для разрешения write.
Я уже говорил что так написано всюду. Где вот вы искали, что это не нашли, это я и пытаюсь узнать.

Fidel 22-10-2002 15:59 30454

SkyF
Zdes chital Advanced File and Folder Permissions
vasketsov
ne gruzis :)
eto utilita calcs.exe tak vyvodit permissions

vasketsov 22-10-2002 17:14 30455

SkyF
Открою "страшный секрет" как запускаются программы на NT.

а) открывается файл с правом доступа FILE_EXECUTE | SYNCHRONIZE (замечу, что здесь даже не требуется FILE_READ_DATA, даже не спорьте тут, сам пишу такой код на Native Nt Api, и он работает, FILE_EXECUTE тоже лишь бы было, по идее);

б) создается для этого файла секция (объект Section) с правом SECTION_ALL_ACCESS и закрывается файл;

в) создается для этой секции объект Process;

г) пара манипуляций с секцией для вычисления точки входа и прочих параметров;

д) закрывается сеция;

е) создается первичный поток;

ну и так далее.

Когда загрузчик поднимает DLL-ки в адресное пространство, он их читает в память, и здесь и необходимо право на чтение, а так как сам файл тоже оформляется в виде DLL (в этом смысле), то на него тоже это право требуется. FILE_READ_ATTRIBUTES может использоваться, а может и нет, но в FILE_READ_EA точно необходимости нет.

Цитата:

FILE_READ_ATTRIBUTES (которое по вашему нигде не используется), убрать - то ЗАПУСКСАТЬ командные файлы при разрешении READ *станивится нельзя?
Как я понял, ты в начале темы READ_EA снимал? :)

Кстати, я в своей програмке мониторю открытые по сетке файлы и режим их открытия, обнаружил, что XP и выше использует для открытия на запуск недокументированный флаг, точнее, даже 2, потому скоро в права на шары, возможно, и появится более тонкая настройка, а пока только так.

[s]Исправлено: vasketsov, 19:17 22-10-2002[/s]

SkyF 22-10-2002 17:36 30456

Цитата:

Как я понял, ты в начале темы READ_EA снимал?  
Да, очепятался просто.

Фразу следует читать так:
"если как только, это пресловутое спец. разрешение FILE_READ_EA  (которое по вашему нигде не используется), убрать - то ЗАПУСКСАТЬ командные файлы при разрешении READ  станивится нельзя? "

В любом случае, создание потоков и объектов меня не интересует.

Fidel - Спасибо. Ну вот то что мне и было нужно. Однако только в ХР Microsoft мягко поправила документацию.

Fidel 23-10-2002 05:48 30457

SkyF
Пожалуйста :)


Время: 08:36.

Время: 08:36.
© OSzone.net 2001-