Hun*_*len 2 ruby permissions chmod
我试图删除一些XML文件后,我使用它们之一,其中一个给我这个错误:
'delete': Permission denied - monthly-builds.xml (Errno::EACCES)
Run Code Online (Sandbox Code Playgroud)
Ruby声称该文件是写保护的,但我在尝试删除它之前设置了权限.
这就是我想要做的:
#collect the xml files from the current directory
filenames = Dir.glob("*.xml")
#do stuff to the XML files
finalXML = process_xml_files( filenames )
#clean up directory
filenames.each do |filename|
File.chmod(777, filename) # Full permissions
File.delete(filename)
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这个:
File.chmod(777, filename)
Run Code Online (Sandbox Code Playgroud)
不会做你认为它做的事情.从精细手册:
将命名文件上的权限位更改为由表示的位模式
mode_int.
强调我的.文件模式通常以八进制指定,因为它可以很好地将这些位分成三个Unix权限组(所有者,组,其他):
File.chmod(0777, filename)
Run Code Online (Sandbox Code Playgroud)
所以你实际上并没有将文件设置为完全访问权限,你将权限位设置为01411,如下所示:
-r----x--t
Run Code Online (Sandbox Code Playgroud)
而不是
-rwxrwxrwx
Run Code Online (Sandbox Code Playgroud)
那是你期待的.请注意,您的(十进制)777权限位图已删除了写入权限.
此外,删除文件需要对文件所在目录的写访问权限(至少在Unixish系统上),因此请检查目录的权限.
最后,您可能想要检查以下内容的返回值File.chmod:
[...]返回处理的文件数.
仅仅因为你打电话并不意味着它会成功.
| 归档时间: |
|
| 查看次数: |
4958 次 |
| 最近记录: |