![如何在Windows 7中限制cygwin的权限](https://linux22.com/image/1354147/%E5%A6%82%E4%BD%95%E5%9C%A8Windows%207%E4%B8%AD%E9%99%90%E5%88%B6cygwin%E7%9A%84%E6%9D%83%E9%99%90.png)
经过…呃…事件涉及一个错误判断rm -rf
,我突然想到,如果你在 Windows 机器上拥有管理员权限,那么在 Cygwin 终端内工作就相当于在 Unix 中使用 root shell。
这可能会造成不良后果,例如...因判断错误而意外擦除整个文件系统rm -rf
。
所以,我的问题是:当从具有管理员权限的 Windows 帐户登录时,如何限制 cygwin 的权限,类似于在 Unix 系统上以用户帐户而不是 root 身份运行?
我希望对我工作文件夹中的自己的文件具有写权限,但是每当我(意外地)在我不应该触碰的地方(例如 /cygdrive/c/Windows)写入东西时,就会出现“权限被拒绝”错误。
我搜索过“cygwin 权限”和类似的关键词,但只发现人们想要获得更多的比 cygwin 给予他们的权限还要多。
有一篇文章这里关于 Cygwin 中的 Windows 安全性,但我无法理解,可能是因为我对 Windows 访问控制不够了解......
答案1
如果您打开用户帐户控制 (UAC) — 请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa511445.aspx详细信息 — 那么当您以本地组管理员成员的用户身份登录时,您将没有对以下文件的写权限计算机目录:\Windows,甚至可以从 Cygwin Bash shell 中看到。您应该看到以下内容:
$ cd /cygdrive/c/windows
$ touch xyzzy
touch: cannot touch `xyzzy': Permission denied
我甚至无法删除 C:\Windows 下的文件。例如,我打开了提升为管理员的命令提示符,将目录更改为计算机目录:\Windows,然后输入copy system.ini xyzzy.ini。现在我在 Cygwin Bash shell(未提升)中看到了以下内容:
$ cd /cygdrive/c/windows
$ icacls xyzzy.ini
xyzzy.ini NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
Successfully processed 1 files; Failed processing 0 files
$ rm xyzzy.ini
rm: remove write-protected regular file `xyzzy.ini'? y
rm: cannot remove `xyzzy.ini': Permission denied
$ rm -f xyzzy.ini
rm: cannot remove `xyzzy.ini': Permission denied
因此,即使我是本地组管理员的成员,我也无法删除计算机目录:\Windows。