3

特定のファイルをチェックして、誰でも書き込み可能かどうかを確認する必要があります。1.9.x には、これに対する便利なチェックがありますが、このチェックは 1.8.7 には存在しません。互換性の理由から、このスクリプトは 1.8.7 で作成する必要があります。

1.8.7 で欠けているこのチェックを行うための良い方法はありますか、それとも stat を使用して独自の方法で行う必要がありますか?

編集 これは私がこれまでに思いついたものです。ちょっとハッキーで悪いですが、動作します:

def world_writable?(file)
  write_bit = Integer(sprintf("%o", File.stat(file).mode)[-1,1])
  if [2, 3, 6, 7].include?(write_bit)
    return true
  else
    return false
  end
end

if world_writable?('/Users/nate/Desktop/scriptrunnertest/test1.sh')
  puts "World writable"
else
  puts "Not World Writable"
end

私はRubyにかなり慣れていないので、優しくしてください。

edit2気にしないでください。それも機能しません。

edit3で修正しました

4

1 に答える 1

3

ファイルのオブジェクトを取得し、そのメンバーstatを調べることができます...mode

world_writable = File.stat("testfile").mode == 0x100777

これを追加できるはずFileです...

class File
    def self.world_writable? path
        permissions = File.stat(path).mode
        permissions == 0x100777 && permissions || nil
    end
end

ルビーフィドル

于 2012-09-29T13:29:22.253 に答える