[#399938] how to read arrary with an array — "Richard D." <lists@...>

Hello. I believe this is basic question, but I'm just starting to learn

19 messages 2012/10/02

[#400050] img src while sending email ruby cgi — Ferdous ara <lists@...>

Hi

16 messages 2012/10/05

[#400351] Drop 1st and last particular character — ajay paswan <lists@...>

What is the most efficient way to drop '#' from the first place and last

15 messages 2012/10/16

[#400374] database part of a desktop application — "Sebastjan H." <lists@...>

Hi,

14 messages 2012/10/16
[#400375] Re: database part of a desktop application — Chad Perrin <code@...> 2012/10/16

On Wed, Oct 17, 2012 at 05:28:39AM +0900, Sebastjan H. wrote:

[#400377] Re: database part of a desktop application — sto.mar@... 2012/10/17

Am 16.10.2012 23:24, schrieb Chad Perrin:

[#400389] Re: database part of a desktop application — Chad Perrin <code@...> 2012/10/17

On Wed, Oct 17, 2012 at 01:39:21PM +0900, sto.mar@web.de wrote:

[#400386] Unable to send attachment, and dealing with multiple attachment — ajay paswan <lists@...>

Hi,

11 messages 2012/10/17

[#400454] Hash with Integer key issue — Wayne Simmerson <lists@...>

Hi Im new to Ruby and am getting some unexpected results from a

18 messages 2012/10/19

[#400535] Name/symbol/object type clash? What is happening here? — Todd Benson <caduceass@...>

It's nonsense code, but I'm curious as to what is going on behind the scenes...

41 messages 2012/10/23

[#400556] Calling a method foo() or an object foo.method_call_here - both — Marc Heiler <lists@...>

Hello.

13 messages 2012/10/24

[#400650] OpenSSL ECDSA public key from private — Nokan Emiro <uzleepito@...>

Hi,

11 messages 2012/10/27

[#400680] Passing folder as argument ARGV? — Joz Private <lists@...>

Is there an easy way to pass multiple files on the command line?

15 messages 2012/10/28
[#400681] Re: Passing folder as argument ARGV? — brad smith <bradleydsmith@...> 2012/10/28

How are you traversing the directory you pass in on the command line ?

[#400697] File.readable? and /proc — Jeff Moore <lists@...>

root@nail:/projects/proc_fs# uname -a

13 messages 2012/10/28

[#400714] Marshal.load weird issue — "Pierre J." <lists@...>

Hi guys

12 messages 2012/10/28

[#400781] bug?: local variable created in if modifier not available in modified expression — "Mean L." <lists@...>

irb(main):001:0> local1 if local1 = "created"

21 messages 2012/10/30
[#400807] Re: bug?: local variable created in if modifier not available in modified expression — Bartosz Dziewoński <matma.rex@...> 2012/10/31

Oh, and in case it wasn't apparent: you can just add

[#400808] Re: bug?: local variable created in if modifier not available in modified expression — Eliezer Croitoru <eliezer@...> 2012/10/31

On 10/31/2012 4:52 PM, Bartosz Dziewoナгki wrote:

[#400809] Re: bug?: local variable created in if modifier not available in modified expression — Robert Klemme <shortcutter@...> 2012/10/31

On Wed, Oct 31, 2012 at 4:28 PM, Eliezer Croitoru <eliezer@ngtech.co.il>wrote:

[#400784] REXML & HTMLentities incorrectly map to UTF-8 — "Mark S." <lists@...>

I have some XML data (UTF 8) that I'm trying to convert into another XML

13 messages 2012/10/30

Re: File.readable? and /proc

From: Jeff Moore <lists@...>
Date: 2012-10-29 02:56:00 UTC
List: ruby-talk #400724
Sam Duncan wrote in post #1081722:
> On 10/29/2012 09:18 AM, Jeff Moore wrote:
>>> Well, that's how Unix works. I have two objections:
>>>
>>> (1) You should not be using superuser account for regular work!
>>> (2) You have no business running irb in /proc filesystem!
>>>
>>> If you do either of these things, you better not be surprised, ever!
>> And if you 'regular work' involves interrogating the /proc file system,
>> then what?
>>
> You could use something like this? You'd need to flesh out some error/
> input handling, and these constants (sadly not exposed by ruby that I
> can find) will be platform specific. I think the 'problem' is that root
> can do pretty much anything it wants (make a file owned root:root, chmod
> 000, and enjoy echo'ing stuff into it). The stdlib seems to use
> 'eaccess( path, R_OK )' which I guess gives a 0 for euid 0.
>
> require 'etc'
> S_IFMT   = 0170000
> S_IFLNK    0120000
> S_IRUSR  = 00400
> S_IRGRP  = 00040
> S_IROTH  = 00004
>
> def readable?( path, follow=false )
>      st = File.lstat( path )
>      if follow && ( S_IFLNK == ( st.mode & S_IFMT ) )
>          st = File.stat( path )
>      end
>      uid = Process.euid
>      if ( st.mode & S_IROTH ) > 0
>          print 'Other read'
>          true
>      elsif( ( ( st.mode & S_IRUSR ) > 0 ) && ( st.uid == uid ) )
>          print 'Owner read'
>          true
>      elsif ( st.mode & S_IRGRP ) > 0
>          username = Etc.getpwuid( uid ).name
>          if Etc.getgrgid( st.gid ).mem.include?( username )
>              print 'Group read'
>              true
>          else
>              false
>          end
>      else
>          false
>      end
> end
>
>
> Sam

Sam, Thanks for this.

It wasn't exactly what I expected but it focused on all the right issues
and that has lead to a conclusion.

As you pointed out, eaccess is the key.

If the stdlib implements eaccess with the same behavior as the 
implementation in file.c (line 1034), root is simply granted
read and write permission without ever hitting stat.

'ls -al', on the other hand, relies on stat.

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next