[prev in list] [next in list] [prev in thread] [next in thread]
List: bash-bug
Subject: Re: Built-in "test -x" fails for root on FreeBSD
From: Johan Hattne <johan.hattne () utsouthwestern ! edu>
Date: 2010-03-29 18:31:01
Message-ID: 4BB0F1E5.6040209 () utsouthwestern ! edu
[Download RAW message or body]
On 03/29/10 11:42, Eric Blake wrote:
>>> Therefore, it is perfectly acceptable for the root user to claim that a
>>> file is executable, as reported by eaccess, even if none of the file
>>> permission bits grant such permission.
>>
>> Yes, but test should still return false if the file isn't executable by
>> anybody on the system.
>
> If eaccess() lies and returns true even though the file is not
> executable by anybody on the system (including the superuser), then that
> is a bug in eaccess(), not in test(1).
The way I read the specifications, it can be OK for eaccess(2) and
friends to say something's executable when it really isn't, while it's
not OK for test(1) to return false positives. I still believe this is a
bash bug.
>> Regarding ACLs, I'm not sure they're checked on any
>> other operating system either.
>
> YES THEY ARE. Cygwin is proof of a system that has _properly_
> implemented faccessat() in the face of ACLs. It is _entirely_ possible
> for stat() to claim that a file cannot be accessed by the owner, group,
> or world, but where ACLs show that the current effective id _can_
> execute it, and that is the case that faccessat is designed to detect,
> which must then be fed into test -x.
What I meant was that I don't think there's any consideration of ACLs in
bash's built-in test. I don't seem to have any calls to faccessat() in
my bash source tree.
>> As far as I can see from bash's
>> sh_stataccess function, "test -x" ANDs the st_mode bits with S_IXGUO.
>
> That's because bash's sh_stataccess is a workaround for systems that
> lack POSIX 2008 compliance - no one ever claimed that the workaround is
> as good as the real thing.
To me it looks like whenever one does "test -x" in bash one will end up
calling either eaccess(2) or stat(2).
// Best wishes; Johan
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic