通过PHP的SSH备份问题
我正试图通过PHP使用一些SSH命令备份服务器上的所有文件,我有一个脚本在某种程度上起作用 问题是,实际上只有一些文件夹包含任何文件,但文件夹结构似乎是正确的 这是我正在使用的脚本:通过PHP的SSH备份问题,php,ssh,backup,Php,Ssh,Backup,我正试图通过PHP使用一些SSH命令备份服务器上的所有文件,我有一个脚本在某种程度上起作用 问题是,实际上只有一些文件夹包含任何文件,但文件夹结构似乎是正确的 这是我正在使用的脚本: <?php $output = `cd / ls -al tar -cf /home/b/a/backup/web/public_html/archive.tar home/*`; echo "<pre>$output</pre>"; ?> 我甚至
<?php
$output = `cd /
ls -al
tar -cf /home/b/a/backup/web/public_html/archive.tar home/*`;
echo "<pre>$output</pre>";
?>
我甚至不能通过SSH命令查看文件,例如test帐户。如果使用以下命令,则无法查看网站文件
egrep -iw --color=auto 'user|group' /etc/httpd/conf/httpd.conf
但是,如果我在不同的帐户上使用相同的命令,我就能够看到和下载网站文件
egrep -iw --color=auto 'user|group' /etc/httpd/conf/httpd.conf
这是权限问题还是我的脚本中遗漏了什么
谢谢我认为这是权限问题,请尝试给apache用户(或您设置的内容)读取
/home/*
目录的权限。
要查找apache服务使用的用户名,请运行以下命令:
对于linux:
ls -l / | grep home
对于FreeBSD:
lrwxr-xr-x 1 root wheel 8 Mar 30 14:13 home -> usr/home
我猜PHP是在chroot中运行的
如果您只想执行备份,请考虑用另一种语言进行备份。特别是如果它只是一系列UNIX命令,请编写一个shell脚本。也许关于这个脚本将用于什么以及谁提供和维护您的主机的更多细节将是有用的
usermod -a -G wheel www-data
输出如下:
在我的例子中,所有者是root,而root用户的主要组是轮,因此现在我们将www data用户添加到轮组中,以便他可以在其中列出文件:
您可以下载一些文件,因为它们位于www-data用户拥有的目录中,而当您无法下载时,www-data在该目录中没有权限 我尝试了以下方法,但只能在etc/文件夹中找到apache2.conf文件。这返回了以下内容:
用户www-data
组www-data
在您的情况下,apaceh使用www-data作为用户和组,现在尝试授予www-data用户从/home读取内容的权限/*抱歉,我不确定您的评论是什么意思,我对SSH和apache命令非常陌生。此外,我还不明白为什么我可以下载一些文件而不能下载其他文件?ls-l/| grep home
returnsdrwxr-xr-x 28 root 4096 2010年5月2日home
这是否意味着我需要运行usermod-a-G root www-data
?@James,如果你从未尝试过,你永远不会知道它:D.尝试过,它没有任何区别!我仍然只能看到一些文件夹中的文件!您是否从浏览器运行脚本?是的,很遗憾,我没有SSH访问权限,因此必须通过PHP运行命令
usermod -a -G wheel www-data