管理员是否可能没有某个驱动器的读/写权限?

管理员是否可能没有某个驱动器的读/写权限?

我正在编写一些脚本来检查新创建的 Windows 服务器机器是否符合某些条件,例如用户是否具有管理员权限、是否存在特定的驱动器、用户是否对该驱动器具有读/写访问权限等。

当我开始思考 - 管理员是否可以不是对某个驱动器有权限吗?

我通过尝试在其他管理员的用户目录中创建文件夹来测试这一点,并且能够做到这一点。如果无法以管理员身份获得写入权限,我将放弃这项检查。但如果可能的话,那么我该如何检查我是否没有写权限?

答案1

对的,这是可能的。

我已经创建了用户“Test”并将其添加到本地管理员组: 在此处输入图片描述

我在桌面上创建了一个文件夹“ServerFault”,并删除了“管理员”权限: 在此处输入图片描述

我以“测试”用户身份启动 shell,并尝试访问此目录:

在此处输入图片描述

因此,即使用户是管理员,单独的文件夹权限也会阻止访问。

如何以编程方式检查您是否具有写权限,很大程度上取决于您使用的编写语言,并且更确切地说是 StackOverflow 的一个问题。

编辑1:..但是嘿,我可以给你指点。例如,在 C++ 中,你可以使用打开文件函数打开一个文件进行写入。

如果该函数失败,您可以调用 GetLastError(),如果此错误值为 5,则您作为运行程序的用户没有写访问权限。

编辑2:由于您使用的是 Powershell,因此您可以使用 CACLS 命令并解析输出。

PS C:\Users\csa> cacls C:\temp | findstr“管理员”
C:\Temp BUILTIN\Administrators:(ID)F
        BUILTIN\管理员:(OI)(CI)(IO)(ID)F

来自“帮助”:

烫发可以是:R 读
              C 更改(写入)
              F 完全控制

缩写:
    CI——容器继承。
         ACE 将被目录继承。
    OI——对象继承。
         ACE 将被文件继承。
    IO——仅继承。
         ACE 不适用于当前文件/目录。
    ID——已继承。
         ACE 是从父目录的 ACL 继承的。

因此在这种情况下,内置管理员组的用户拥有完全控制权,因为他们从 C:\ 目录中设置的权限继承了它。

相关内容