共享主机,阻止用户删除.html 文件?

共享主机,阻止用户删除.html 文件?

大家好,我为朋友设立了一个小型共享主机。

我已将文件 chmod 权限设置为

chmod 711 /home 
chmod 711 /home/testuser 
chmod 755 /home/testuser/public_html 
chmod o+r /home/testuser/public_html/index.htm 

我如何阻止连接到他们自己的 ftp 的用户删除 html.htm 文件,并且将公共目录设置为 chmod 755 后我发现他们无法在目录中执行任何操作,例如上传/删除?

附加信息:我已经运行

setsebool -P httpd_enable_homedirs true
chcon -R -t httpd_sys_content_t /home/testuser/public_html

但没有效果?

答案1

传统的 unix 权限意味着如果用户可以在目录中创建文件,他们也可以删除其中的文件 - 即使文件本身是读保护的并且不属于他们。因此,html.htm如果文件位于他们应该具有写/执行权限的目录中,则无法保护(无论它是什么)。也许正如@vonbrand所建议的那样,ACL 可以提供帮助(但我对它们不熟悉,并且@vonbrand 也不保证它会起作用)。

  1. 无需将目录设置为全局可写或全局可执行,但您需要确保您的 Web 服务器守护程序具有对文件的读取权限。(它可能以组www-data--但请检查)运行。因此,请确保目录所有者与用户在连接时获得的 uid 匹配,并且您可以将其保持为模式 750。

  2. 如果需要让多个 uid 写入同一目录,则需要启用组写入访问权限 ( g+w)。在这种情况下,我将使用 以外的组www-data,并授予 apache 作为“其他”的只读访问权限。换句话说,模式 775。

  3. 还要留意您的umask,它控制用户创建的新文件的权限。如果您有个人帐户,请使用 umask022进行匹配。如果您有共享组目录,请使用 umask002允许用户编辑彼此的文件。(因为他们可以删除和替换文件,所以保护它们毫无意义)。

答案2

用户以谁的身份进行连接?根据你的设置,只有所有者可以写入 public_html。

此外,您目前已将其设置为用户可以输入/home/testuser但不能阅读。您可能需要类似以下内容:

chmod 711 /home 
chmod 755 /home/testuser    
chmod 777 /home/testuser/public_html 
chmod 644 /home/testuser/public_html/index.htm  
chown root /home/testuser/public_html/index.htm  

答案3

查找 ACL,这可能会解决您的问题。相关的手册条目是 acl(5)、setfacl(1) 和 getfacl(1)。不过,支持取决于文件系统。

相关内容