[sf-perl] Bug in perl (or does -r not do what I think?)

frosty biztos at mac.com
Fri Jun 6 13:14:59 PDT 2008

My first suspicion was that something funny is going on with either the NFS or the "file" command, most likely the former.

I just checked and on a local filesystem it's consistent, at least in my world (Perl 5.8.6 on RHEL 4.5 i386).

    user at localhost ~ $ ls -l somefile
    -r--------  1 postgres postgres 4 May 27 17:46 somefile
    user at localhost ~ $ sudo perl -le 'print "lies" if -r shift' somefile
    user at localhost ~ $ sudo file somefile
    somefile: ASCII text
    user at localhost ~ $ file somefile
    somefile: regular file, no read permission
    user at localhost ~ $ cat somefile
    cat: somefile: Permission denied
    user at localhost ~ $ sudo cat somefile
    user at localhost ~ $

-- f.
On Friday, June 06, 2008, at 01:04PM, "Dan Boger" <dan at peeron.com> wrote:
>I'm a little bit confused here, maybe one of you guys can spot what I'm
>I have some files on an NFS filesystem, that is set to root_squash.  The
>file is owned by my network id (dboger), while I'm logged in locally as dan:
>dan at dbdb$ ls -l somefile.png
>-r-------- 1 dboger 3813 2008-06-05 16:46 somefile.png
>I'm trying to figure out if a file is readable, so I do something like:
>dan at dbdb$ perl -le 'print "lies" if -r shift' somefile.png
>dan at dbdb$
>That is correct - the file is owned by a different UID, and is set to 0400.
>Now, I try the same thing as root:
>dan at dbdb$ sudo perl -le 'print "lies" if -r shift' somefile.png
>dan at dbdb$ sudo file somefile.png
>couldn't open file
>somefile.png: regular file, no read permission
>Is perl just assuming that if I'm root I can always read the file, even
>though the permissions say that's wrong?
>What am I missing?
>Dan Boger

More information about the SanFrancisco-pm mailing list