From: "kosaki (Motohiro KOSAKI)" Date: 2013-02-19T11:39:18+09:00 Subject: [ruby-core:52507] [ruby-trunk - Bug #7879][Rejected] File.readable? fails when ruby runs as root Issue #7879 has been updated by kosaki (Motohiro KOSAKI). Status changed from Open to Rejected When run as root, access(2) ignore permission and always return success. That's UNIX filesystem semantics. In the other words, this is completely your script bug. You need specific concern when opening /proc, /sys and similar pseudo filesystem's file. ---------------------------------------- Bug #7879: File.readable? fails when ruby runs as root https://bugs.ruby-lang.org/issues/7879#change-36583 Author: balbi (Feliple Balbi) Status: Rejected Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.1.0 ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] I have the following script to find sysfs (linux) files which are readable but throw an exception when read: Dir.glob("/sys/**/*").each do |file| next if File.directory?(file) if File.world_writable?(file) puts "#{file} is world-writable" end if File.readable?(file) begin File.open(file) { |f| result = f.readline } rescue EOFError nil rescue => e puts e.message end end end If I run as a normal user, it works just fine, but when I run as root, even for files which are write only (chmod 200), File.readable?(f) will return true which makes my script fail. I have also tried File.readable_real? but it has the same outcome. -- http://bugs.ruby-lang.org/