On Wed, Jan 13, 2010 at 10:13 AM, Roger Burton West <ro...@firedrake.org> wrote:

On Wed, Jan 13, 2010 at 10:05:08AM -0500, Chris Devers wrote:

>Congratulations, you've discovered ACLs.

I suspect that the short answer to this is "I am root, dammit. If I tell
you to remove my head with a chainsaw, I expect you to assume I have a
good reason and _do_ it. I didn't su - just for fun."

But that wouldn't match Apple's expected user profile.

Well, my take there is that the whole *point* of ACLs is to provide an
access control framework that can't just be trivially trumped by any
old yokel that figures out the root password. As Mr Newton says,
having root access now doesn't mean you get access to everything, but
that you have the power to give yourself access to anything, if you
know how to do so.

Not to mention the fact that ACLs provide much more fine-grained
control to begin with.

To paste from one of the URLs in my original reply:

<quote 
href="http://arstechnica.com/apple/reviews/2005/04/macosx-10-4.ars/8#acls2";>

Worse, imagine that you want to grant the ability to delete a
particular file to a group of users. In traditional Unix permissions,
there is no "delete" permission for a single file. The ability to
delete a file is controlled by the "write" permission of the parent
directory. But you want to allow just this particular file to be
deleted, not all files in the same directory. The Unix permission
system is not fine-grained enough to accommodate these needs.

Enter access control lists. An ACL is an ordered list of rules that
control file permissions. Each rule specifies three things: an actor,
an action, and whether that action is allowed or denied. A rule is
also known as an ACE, or access control entry.

To determine whether or not to allow an action, the rules are
considered in order. The first rule that is applicable to the current
actor and action determines the decision, and no further rules are
considered. If none of the rules apply, then the decision is
determined by the traditional Unix file permissions.

Note that the Unix permissions are not even considered unless none of
the ACEs are applicable. It's possible to have a file that "appears"
to be readable to everyone, for example, but that actually allows no
one to read it, or just allows a single user to read it, and so on. In
effect, the Unix file permissions can be totally ignored if the access
control list contains rules that apply to all potential actions and
actors.

(It's actually a bit more complex in the case where multiple actions
are requested simultaneously—opening a file for reading and writing,
for example. But the overriding rule is the same: ACEs take precedence
over Unix permissions.)

ACLs can be modified from the command line using the chmod command
(run "man chmod" for details) or the Workgroup Manager application in
Mac OS X Server.

[...]

ACLs have existed in various forms in many other operating systems
over the years. In many ways, Tiger is playing catch-up here. Even
classic Mac OS has some file sharing features that are beyond the
capabilities of traditional Unix file permissions.

The addition of ACLs to Tiger was significantly motivated by the
mismatch between Unix permissions and the Windows/Active Directory
permissions model. With Tiger, Mac OS X can finally serve files to
(and exist as a full peer on) a Windows network.

</quote>

The ACL implementation on OSX is lifted wholesale from the Windows XP
design for the same framework.

If you find the way they work on both OSX & XP hateful, that's fine.

And if you don't like the fact that they trump Unix permissions,
that's also fine.

But this isn't just something that Apple made up, and it does both
solve real problems and create new possibilities that could not be
easily managed by the traditional Unix/Posix permissions framework.

Most of the modern Unix & Linux variants have adopted the same ACL
framework over the past few years, so Apple is hardly out of step on
this -- though I, for one, appreciate that the OSX implementation
folds the interface for ACLs into familiar existing commands like `ls`
& `chmod`, rather than forcing you to learn new `getfacl` & `setfacl`
(etc) commands.

If you find it the whole thing unbearable, you're welcome to keep
running Panther, if you happen to still have any hardware capable of
booting it. That or pick the 5+ year old Linux distro of your choice.

--
Chris Devers

Reply via email to