cygwin 可以绕过 Windows XP ACL吗?

cygwin 可以绕过 Windows XP ACL吗?

cygwin 如何能够绕过 Windows XP ACLS?在下面的示例中,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

答案1

Cygwin 应用程序没有任何特殊权限,但它们确实“更加努力”。如果 Win32 调用失败,Cygwin 将尝试使用 NT 内核 API 函数执行等效操作(有时它只是先使用 NT 内核 API)。奇怪的是,NT 内核 API 可以在 Win32 API 失败的地方成功。

答案2

我猜是与noacl 选项

noacl - Cygwin 忽略文件系统 ACL,仅根据 DOS 只读属性伪造权限位子集。此行为是 FAT 和 FAT32 上的默认行为。NFS 文件系统上会忽略此标志。

这并不能真正解释 Windows 为何无法强制执行 ACL。我猜 Cygwin 有某种提升权限。如果你读过Cygwin 和“NT”安全

相关内容