关于Cygwin文件无法删除的问题

     最近一段时间在研究Hadoop,于是在自己的笔记本上搭建了一个Hadoop的环境,当然是Windows系统下的,用的是Win7。于是装了Cygwin,配置了一个下午,总算是搞好了。杯具的是前两天不知道是什么原因,开机以后,在启动画面就是进不了系统,也没有做备份,于是只能重装。我的Cygwin是装在系统盘上的,Win7有一种升级的安装方法,安装盘上的和系统文件夹不相关的文件能够保留。装完系统我立即看来下Cygwin能不能使用,居然可以!但是后来发现了问题,当我使用Cygwin的SSH连接Unbutu的时候,发现原来认证过的地址由于我修改过密钥以后不能使用了,并且当想删除那个地址的RSA信息时,发现没有权限。我尝试很多中方法,用管理员权限,切换到安全模式下都不行。通过网上搜索,发现是Cygwin的文件权限管理的问题。

    Cygwin模拟了Linux的权限管理体系,这跟Windows的默认权限管理有些冲突。当使用右键查看属性中的安全选项夹时,可以看到“组或用户名”一栏,有无法识别的用户(带有问号),它们是我重装系统以前的用户,那串数字是唯一识别号,尽管我的用户名没有改,但是它的唯一的识别号是完全不同的,所以目前登录的帐号对文件没有修改和删除的权限。

    手动操作的方法是,选择“安全—高级”,首先修改所有者,编辑为目前的帐户名或者“administrator”,然后选择“权限”,更改当前自己当前账户的权限,将其修改成“完全控制”,然后那个文件就可以删除。如果要删除一个文件夹的话,需要其文件夹下的所有文件和文件夹都修改了权限才能顺利删除。

     手动删除是在是非常痛苦,Cygwin安装目录下有大量的系统文件和自己的文件。既然能手动操作,那么程序肯定完成这项任务。我以前也没有接触过文件权限相关的编程,网上搜吧。发现这样一篇文章《以程序的方式操纵NTFS的文件权限》里面讲解了怎么修改NTFS文件系统的安全设置,其中例程二是为一个文件增加一个安全设置项,这个安全项设置为当前的用户具有完全控制权就能够将文件删除了。我在系统中的其他文件试验都没有问题,但是修改Cygwin文件的时候就失败了,显示 SetFileSecurity()失败,拒绝访问,这个是所有者和审核策略的问题,这个程序好像没有能够解决这个问题。还是感谢搜索,找到了一个程序能够直接解决这个所有者问题:TakeOwn.exe,Win7和Vista在CMD里面直接能用,但是XP就不太清楚了,下一个去!?。

    输入“Takeown /?”查看下Takeown的帮助,发现参数列表直接能够对目录递归,太好啦!在Cygwim目录下运行“Takeown /F * /R”,等待两三分钟吧,文件很多呢。运行结束,再查看,可以看到文件的拥有者已经改成Administrator了,这下就好了。直接删除吧!呀,怎么还是不行啊?再查看下权限,发现用户还不具有删除和修改的权限。这下可以用前面的那个程序了吧,把代码修改下,使得程序能够便利获得目录下的每一个文件和文件夹(注意文件夹的权限也一定要修改)。程序顺利运行,一段时间后,所有文件的安全属性都回复正常了。这样的话你想要删除还是修改都没有问题了。

    这个问题折腾了大半天啊,刚刚才解决完,不过以后遇到类似的问题的也能解决了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值