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”安全