【问题标题】:Setting file permissions in Ruby with File.open使用 File.open 在 Ruby 中设置文件权限
【发布时间】:2014-10-05 16:16:42
【问题描述】:

我写这篇文章是为了调查使用不同 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个文件的组写权限?

【问题讨论】:

    标签: ruby linux file file-permissions


    【解决方案1】:

    根据http://www.ruby-doc.org/core-2.1.2/File.html#method-c-new,Ruby 只使用open(2) 系统调用。这尊重 umask 设置(在实际设置权限位之前删除在 umask 中设置的任何位)。

    因此,您可以通过设置 umask 清除组可写位来实现组可写。例如。将其设置为0002。更多详情here.

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2014-04-28
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 2011-11-27
      • 2014-07-03
      • 1970-01-01
      相关资源
      最近更新 更多