Windows has a privilege called "Bypass Traverse Checking" (also known as SeChangeNotifyPrivilege). It allows the system to bypass ACL checks in parent objects so a user can [potentially] access a child object.
An example would probably be helpful:
<file system> | +-- john.doe | +-- public
In the example above, one would normally clamp down directory
john.doe so that he has full control (and perhaps his group has read access). However, Doe's
public directory is world readable so that anyone can see what he's sharing.
In Windows, Bypass Traverse Checking would be used to facilitate the above scenario.
Does Unix/Linux offer the equivalent of Windows Bypass Traverse Checking? If so, what is it?
If not, how does one provide access to the
public directory without opening security holes in parent directory?
Interestingly, all my Ubuntu machines de-clamp the home directory so that anyone can access it on the way to the
public directory, even the Guest account!!! And the Guest account is allowed to probe root's directory, too. But Guest accounts on desktops and servers is a whole 'nother can of worms...
And I recently came across this from Cryptree: A Folder Tree Structure for Cryptographic File Systems. I think the claim was not quite correct (as "Bypass Traverse Checking" demonstrates):
Upward Inheritance of Access Rights: Explicitly granted access to a folder implies inherited access to the names of the folder’s ancestor folders. For example, when granting Alice recursive access to a folder documents/ that resides in /bob/projects/, Alice should automatically be allowed to see the names of its ancestor folders /bob/ and /bob/projects/. Without being able to see the parent folders’ names, it would not be possible for her to reconstruct the correct path of documents/.