您的位置:首页 > 其它

cygwin文件权限控制

2013-09-11 19:29 169 查看
Cygwin是一款在Microsoft Windows中模拟Linux环境的软件,其目的是通过在Cygwin环境下重新编译源代码,使得原Linux系统的软件可以移植到Microsoft Windows上。同时,Cygwin也提供了大量成熟、强大的Unix命令行工具,供Windows用户使用。

 

Cygwin一样模拟了Linux的权限管理体系,这也没有什么不好的,但是跟Microsoft Windows的默认权限管理却有些不对付。举个例子,看看下面这个截图,这是我很久以前在Cygwin中创建的一个文件的权限表,它有两个无法识别的用户(两个带问号的),其实它们是我重装系统以前的用户,那一串数字是它们的“身份证号码”。尽管我的用户名从未更改过,但是对计算机来说它们是完全不同的,因为它们的身份ID不一样。而我计算机上的用户列表中并没有这两个身份证号,所以它们被归入了“无法识别”的类别。问题在于我当前的用户名并不在权限表中,而Everyone用户只有读取文件的权限,因此我无法更改文件内容或者删除文件。这个问题的解决方法是先取得文件的所有权(Ownership),再赋予自己“完全控制”的权限。





 

一个文件好办,多个文件那可真是要命。彻底的解决方法是,在安装好Cygwin以后,禁止Cygwin采用POSIX体系的权限管理。这在Cygwin 1.7和1.5版中是通过不同的方式设置的。

 




一、Cygwin 1.5 的设置

在Cygwin 1.5 版中,Cygwin通过全局环境变量CYGWIN的值来判断是否使用POSIX体系的权限管理。

 

设置全局环境变量的方法是:

 

1. Windows XP:

1.1 进入“控制面板”,双击其中的“系统”条目,点选“高级”表单,点击“环境变量”按钮。

1.2 在“环境变量”对话窗中,点击位于最下面的“新建”按钮。

1.3 在“新建环境变量”对话窗中,变量名处输入 CYGWIN,变量值处输入 NONTSEC。

 

2. Windows Vista

2.1 进入“控制面板”,点击“系统与维护”,点击“系统”。或者在开始菜单处的“我的电脑”右键,点选“系统属性”。

2.2 在左边的任务面板中,点击“高级系统属性”。在随之弹出的对话窗中点击“环境变量”。

2.3 在“环境变量”对话窗中,点击位于最下面的“新建”按钮。

2.4 在“新建环境变量”对话窗中,变量名处输入 CYGWIN,变量值处输入 NONTSEC。

 


二、Cygwin 1.7 版的设置

Cygwin 1.7 版改用 /etc/fstab 文件来控制权限设置。所以用编辑器打开 c:\cygwin\etc\fstab 文件,在里面添加这一行:

none / cygdrive binary,user,noacl,posix=0 0 0

保存文件,整个设置就完成了。如果你有兴趣把Cygwin做成便携版,那么可以去看看这篇文章

 

最后,让我们看看在如上设置之后,在Cygwin中创建的新文件的默认权限:





你看,Everyone用户拥有对文件的完全控制权限,而这正是Microsoft Windows默认的权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: