2

我刚刚切换到一个新的服务器主机 (VPS),然后我将所有文件都转移了过来。我注意到没有任何工作一切都在抛出 500 内部错误。

然后我通过命令行运行它,它工作正常

 for i in `cat /etc/trueuserdomains | awk '{print $2}'`; do chown $i.$i /home/$i/public_html -R; chown $i.nobody /home/$i/public_html; done

我不太确定它做了什么,但我认为它改变了脚本的所有者。无论如何,我在过去一周中注意到,每当我上传一个尚未在服务器上的新脚本时,它都会给我同样的 500 错误,我必须再次运行该脚本。有什么办法可以防止这种情况发生吗?

4

1 回答 1

1
for i in `cat /etc/trueuserdomains | awk '{print $2}'`; 
do 
  chown $i.$i /home/$i/public_html -R; 
  chown $i.nobody /home/$i/public_html; 
done

通过分解上面的代码来描述

cat /etc/trueuserdomains | awk '{print $2}'

这将打印出由文件 /etc/trueuserdomains 的第二列中的每个单词组成的用户列表(该文件中可能只有一行,其中第二个单词包含文件应该是的用户拥有)

如果您想查看该列表的确切内容,请从命令行运行以下命令。

cat /etc/trueuserdomains | awk '{print $2}'

然后for i部分执行两个 chown 命令,将 $i 替换为从 cat /etc/trueuserdomains | 收集的单词。awk '{print $2}' 命令。

第一个 chown 命令将每个文件和目录的所有者和组更改为 cat /etc/trueuserdomains | 中的所有者和组。awk '{print $2}' 命令。

然后,第二个 chown 命令将 public_html 上的nobodygroup 设置为 ,这是一个在主机上可能没有分配给它的用户帐户的组。

这样就可以整理出您的 Web 服务器文件中的权限,但就像您说的那样,它并不能完全描述您的问题的根本原因。

要解决根本问题,请让我们知道以下内容。

如何将文件上传到服务器?工具的名称是什么?当您上传文件时,您能否提供他们在运行上述命令之前拥有的所有者和组权限的示例?

于 2011-03-15T18:18:05.710 回答