我写这篇文章是为了调查使用不同perm
值
[0644, 0664, 0755, 0775].each do |perm|
filename = "file#{perm}"
File.open(filename, 'wb', perm) { |f| f.puts 'test' }
puts '%o' % File::Stat.new(filename).mode
end
运行时会输出:
100644
100644
100755
100755
这不是我的预期。为什么第2和第4个文件的组写权限未设置?
答案 0 :(得分:3)
根据http://www.ruby-doc.org/core-2.1.2/File.html#method-c-new,Ruby只使用open(2)
系统调用。这尊重umask设置(在实际设置权限位之前删除在umask中设置的任何位)。
因此,您可以通过设置umask来清除组可写位来实现组写入。例如。将其设置为0002
。更多详情here。