ACLs, 企业应用必备Windows: ACLs是Access Control Lists的缩写, 存取控制列表/访问控制列表. 它已经在大多数的现代操作系统中得到支持. 系统安全就是通过ACLs来实现的. 广义说, 一个对象要访问另外一个, 那么就要提交自己的对象 Windows很早在NT时开始就支持ACLs, 而且稳定, 图形界面的操作直观, 可以说是支持ACLs最广的系统, 不仅仅是文件, 还可以控制打印机,注册表和服务等等, 可以说每个Windows的对象都可以用ACLs管理. 管理上, 除了图形界面每个对象的属性中的安全设置, 命令行也有如cacls.exe, 第三方的工具SetACL等, 脚本和API也都有. 在这方面, Windows可以说是最好的.Mac:OSX系统从老虎10.4才开始正式支持基于文件的ACLs. 因为OS X是符合UNIX标准的核心, 它同时支持POSIX和ACLs, 两者互相配合, 完成对安全的细致控制, 以满足各种应用环境的要求. 但是OS X目前只是实现了对文件系统的ACLs支持, 还没有推广到其他系统对象. 现实一个文件的ACLs列表, 可以使用ls命令的-e来查看, 使用chmod来对ACLs进行操作.比如 touch a.txt chmod +a "admin allow write" a.txt ls -le a.txt 应该显示: -rw-r--r--+ 1 admin staff 4 22 Apr 13:12 a.txt 0: user:admin allow write 我的博文:"Unix File Permissions and ACLs in OS X", 详细介绍了ACLs. http://blog.csdn.net/afatgoat/article/details/3462131 在Mac上, 目前有多重手段可以用来达到细化访问控制的目的. 一般来说, 有些情况依然可以使用文件的ACLs来达到访问控制的目的, 比如设置打印机的ppd文件的存取, 可以控制对打印机访问的用户和用户组. 另外一个手段就是使用MCX了, 另外一篇中有介绍. 有的情况是, 每个应用/服务本身支持在配置文件中对用户/组存取进行控制, 比如对打印机的控制, 下面是cupsd.conf文件中定义, 用户添加更改删除打印机的默认设置: <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices> AuthType Default Require user @SYSTEM Order deny,allow </Limit> 如果把user, 换为admin用户组,那么普通用户就无法添加更改删除打印机了. 其实OS X系统本身也维护者一个叫做authorization的文件, 这个文件中记录着用户访问权限的系统默认设定, 特殊情况下可以改变, 不过要特别注意, 一旦该文件被毁坏, 可能致使系统无法启动. OS X这样的*nix的一个特性是, root用户是这个系统的至高无上者, 他可以干任何想干的事情, 所以root用户不受任何POSIX或者ACLs的制约, 而系统服务等, 好多是以root用户身份执行的, 当然现在在Mac上, 有好多应用/服务级别的程序会以自己的管理者身份运行, 比如打印机的_lp是打印机服务的用户. 使用下面的命令可以看到,OS X有很多内置的用户, 这些以"_"开头, ID在500以下的都是系统内置用户, 特殊用户, root的ID永远是0, 第一个用户-一般是安装是创建的第一个管理员用户, 它的ID是501. dscl . list /Users UniqueID 要看用户组, 使用命令 dscl . list /Groups 需要注意的是, 在混合环境中, OS X和Windows用户交叉访问对方的服务器, 在设置ACLs的时候, 他们之间有可能出现水土不服的现象. 小结: 从上面来看, Windows对ACLs的支持是全面的, 而OS X比较分散, 甚至有些凌乱.