This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Checking Your Access to a File | ||
|---|---|---|
| Code | Expected | Actual |
File.readable?('/bin/ls') |
true | true |
File.readable?('/etc/passwd-') |
false | false |
filename = 'test_file'
File.open(filename, 'w') {}
File.writable?(filename) |
true | true |
File.writable?('/bin/ls') |
false | false |
File.executable?('/bin/ls') |
true | true |
File.executable?(filename) |
false | false |
File.owned? 'test_file' |
true | true |
File.grpowned? 'test_file' |
true | true |
File.owned? '/bin/ls' |
false | false |
File.lstat('test_file').mode & 0777 # Keep only the permission bits. |
420 | 420 |
def what_can_i_do?
sys = Process::Sys
puts "UID=#{sys.getuid}, GID=#{sys.getgid}"
puts "Effective UID=#{sys.geteuid}, Effective GID=#{sys.getegid}"
file = '/bin/ls'
can_do = [:readable?, :writable?, :executable?].inject([]) do |arr, method|
arr << method if File.send(method, file); arr
end
puts "To you, #{file} is: #{can_do.join(', ')}"
end
what_can_i_do? |
UID=0, GID=0 Effective UID=0, Effective GID=0 To you, /bin/ls is: readable?, writable?, executable? |
UID=1000, GID=1000 Effective UID=1000, Effective GID=1000 To you, /bin/ls is: readable?, executable? |
Process.uid = 1000 what_can_i_do? |
UID=0, GID=0 Effective UID=1000, Effective GID=0 To you, /bin/ls is: readable?, executable? |
UID=1000, GID=1000 Effective UID=1000, Effective GID=1000 To you, /bin/ls is: readable?, executable? |