zigdon has asked for the wisdom of the Perl Monks concerning the following question:
I'm trying to figure out if a file is readable, so I do something like:dan@dbdb$ ls -l somefile.png -r-------- 1 dboger 3813 2008-06-05 16:46 somefile.png
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@dbdb$ perl -le 'print "lies" if -r shift' somefile.png dan@dbdb$
Is perl just assuming that if I'm root I can always read the file, even though the permissions say that's wrong? The perldoc page for -r says:dan@dbdb$ sudo perl -le 'print "lies" if -r shift' somefile.png lies dan@dbdb$ sudo file somefile.png couldn't open file somefile.png: regular file, no read permission
Also note that, for the superuser on the local filesystems, the "-r", "-R", "-w", and "-W" tests always return 1, and "-x" and "-X" return 1 if any execute bit is set in the mode. Scripts run by the superuser may thus need to do a stat() to determine the actual mode of the file, or temporarily set their effective uid to something else.But surely NFS doesn't count as a local filesystem? What am I missing?
-- zigdon
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: -r broken on root_squash NFS?
by pc88mxer (Vicar) on Jun 06, 2008 at 21:22 UTC | |
by zigdon (Deacon) on Jun 06, 2008 at 21:23 UTC | |
by pc88mxer (Vicar) on Jun 06, 2008 at 21:37 UTC | |
by zigdon (Deacon) on Jun 06, 2008 at 22:18 UTC | |
by sgifford (Prior) on Jun 06, 2008 at 22:31 UTC |