cygwin может обойти windows xp acls?

Как Cygwin может обойти ACLS Windows XP? В следующем примере cmd.exe не может создать файл в каталоге, но bash может. Что дает?

C:\WINDOWS\Temp>mkdir noaccess

C:\WINDOWS\Temp>cacls noaccess /E /R Everyone
processed dir: C:\WINDOWS\Temp\noaccess

C:\WINDOWS\Temp>cacls noaccess
C:\WINDOWS\Temp\noaccess

C:\WINDOWS\Temp>echo abc > noaccess\abc
Access is denied.

C:\WINDOWS\Temp>c:\cygwin\bin\bash -c "echo abc > noaccess/abc"

C:\WINDOWS\Temp>c:\cygwin\bin\bash -c "/bin/cat noaccess/abc"
abc

2 ответа

Решение

Приложения Cygwin не имеют никаких особых привилегий, но они "стараются изо всех сил". В случае сбоя вызова Win32 Cygwin попытается использовать функцию API ядра NT для выполнения эквивалентной операции (а иногда он сначала просто использует API ядра NT). Как ни странно, API ядра NT могут преуспеть там, где отказывают API Win32.

Я думаю, это связано с опцией noacl

noacl - Cygwin игнорирует ACL файловой системы и подделывает только подмножество битов разрешений на основе атрибута DOS только для чтения. Это поведение по умолчанию для FAT и FAT32. Флаг игнорируется в файловых системах NFS.

Это на самом деле не объясняет, как Windows не может применять ACL. Я думаю, у Cygwin есть какие-то привилегии. Возможно, это станет яснее, если вы прочитаете о Cygwin и безопасности NT.

Другие вопросы по тегам