我有一个用户的public_html文件夹。我根据网上的说明更改权限:
chmod 701 /home/*
chmod 705 /home/*/public_html
chmod 604 /home/*/public_html/*.html
chmod 705 /home/*/public_html/cgi-bin
并且已存在的文件public_html
可以在线查看。
如果用户将较新的文件上传到该public_html
文件夹,则该文件夹不可见。
我也跑了chcon -R -t httpd_user_content_t home/*/public_html
。
我缺少什么来允许用户上传他们的文件并允许他们在线查看?
答案1
您需要检查它们的umask
设置,因为它控制着新创建文件的权限。大多数发行版将掩码设置为022
允许文件组读取和全局读取,但其他发行版的掩码更为严格,仅设置所有者权限。
答案2
正如 staticsan 提到的,这听起来像是一个设置 umask 可以解决的情况。如果你想要更细粒度地控制权限,而又不想让用户创建的每个文件都能被所有人读取,那么你可以使用文件访问控制列表为 public_html 目录设置默认值,以便其他读取+执行
setfacl --set d:o:rx /home*/public_html
无论 umask 设置为多少,如果用户可以写入该目录,则文件默认值将始终为 o+r(目录为 x)。您的 ls -l 输出将类似于:
drwxrwxr-x+ 3 用户 用户 4096 2009-12-02 21:30 public_html/
权限末尾的加号表示有一个 ACL,您可以使用以下方式查看
getfacl public_html
存在一个权衡,因为现在权限并不明显,您必须使用 getfacl 才能查看更多详细信息,但您可以更好地控制权限与全局默认值之间的区别。