我发现POSIX访问控制列表使您(作为系统管理员)可以通过覆盖常规的用户组-其他文件系统权限来保护用户免受最糟糕的无知之苦,而没有太多机会破坏任何重要的内容。
如果您(fi)需要主目录可以在世界范围内访问,则它们可能特别有用,因为Web内容需要可访问~/public_html/
。(尽管有了ACL,您现在可以执行相反的操作,删除所有用户的访问权限,并为apache用户使用特定的有效ACL。)
是的,有知识的用户可以再次删除/覆盖它们,这非常罕见,以至于不太可能,并且那些通常不是方便chmod -R 777 ~/
的用户,对吗?
您需要使用acl
mount选项来挂载文件系统:
mount -o remount,acl /home
在许多发行版中,默认设置是创建用户组,每个用户都有其主要组,而我已经将所有用户都设置为次要组,其名称难以想象users
。
使用ACL现在可以防止其他用户访问主目录了:
之前:
chmod 0777 /home/user*
ls -l /home/user*
drwxrwxrwx. 2 user1 user1 4096 Jul 11 15:40 user1
drwxrwxrwx. 2 user2 user2 4096 Jul 11 15:24 user2
现在,将users
组成员的有效目录权限设置为0
没有读取,写入或访问权限:
setfacl setfacl -m g:users:0 /home/user*
ls -l
drwxrwxrwx+ 2 user1 user1 4096 Jul 11 15:40 user1
drwxrwxrwx+ 2 user2 user2 4096 Jul 11 15:24 user2
该+
符号表示此处存在ACL设置。并且getfacl
可以确认:
getfacl /home/user1
getfacl: Removing leading '/' from absolute path names
# file: home/user1
# owner: user1
# group: user1
user::rwx
group::rwx
group:users:---
mask::rwx
other::rwx
该group:users:---
结果表明,组有效无访问权限,尽管另一个是普通权限other::rwx
并以user1身份进行测试:
[user1@access ~]$ ls -la /home/user2
ls: cannot open directory /home/user2: Permission denied
共享系统上的第二种常见解决方案是按需使自动挂载程序挂载主目录和专用于Shell访问的服务器。这远非万无一失,但是通常只有少数用户会同时登录,这意味着只有这些用户的主目录是可见的和可访问的。
chmod files 0777
绝对需要“ Web软件”的建议,即解决问题的根本原因,而不是通过这样做的征兆,即任何人都可以读取任何人的文件。很多时候,“ 允许所有人访问”建议只是避免支持电话的一种廉价方法,或者是在能够正确设置权限方面缺乏技术能力的简单方法。几乎在任何情况下,我都无需0777
在请求时设置文件或授予应用程序完全root访问权限。用户和/或供应商的教育在这里大有帮助。