Задаване на разрешения за файлове в Ruby с File.open

Написах това, за да изследвам разрешенията на файлове, създадени с различни 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-ти файл не е зададено?


person branch14    schedule 12.08.2014    source източник


Отговори (1)


Според http://www.ruby-doc.org/core-2.1.2/File.html#method-c-new, Ruby просто използва системното повикване open(2). Това зачита настройките на umask (премахване на всички битове, които са зададени в umask, преди действителното задаване на битове за разрешение).

По този начин можете да постигнете групова записваемост, като настроите вашата umask да изчисти груповия записващ бит. напр. задайте го на 0002. Повече подробности тук.

person Jordan Samuels    schedule 12.08.2014