我正在早期尝试设置一个基本的 LAMP 盒子。这是我第一次设置我将使用的软件,而不是仅仅提供一个工作环境,所以请对我宽容一些:)
我已经安装了Apache,对应的htdocs文件夹的权限为drwxr-xr-x。我可以很好地从远程复制到本地,但是当尝试复制小目录时,我的权限被拒绝。
我应该提到我正在使用我自己的管理员用户帐户登录,当然 htdocs 不属于我所有。
所以我天真地认为我只需要 sudo 命令 - 但这不起作用。好吧,接下来我会根据我在网上读到的内容将权限“修复”为 774。不,这也不起作用。我在想“我需要向第三个“用户”添加写访问权限吗?这看起来很奇怪。
然后我读了一个论坛帖子,其中有人告诉那个人,因为该文件夹是 root 拥有的,所以他必须将文件 scp 到远程主机上的 home/ 目录中,然后 sudo cp 它们到 apache 文件夹。
对我来说,这似乎是一种冗长的方法,但在我尝试这样做之前,我想我应该问一下这是否属实,这里是否有任何最佳实践以及我的假设是否错误?
其次 - htdocs 的适当权限是什么?
我仍处于早期阶段,最终可能会设置一些 FTP 访问,但我很高兴知道。
答案1
有很多方法可以给这只猫剥皮。以下是一些供您考虑的内容:
几乎可以肯定,这
htdocs
棵树不必归根所有。重要的是它是可读的由 Apache 用户。根据所讨论的 *ix 系统,可能是apache
、www-data
或其他内容。上面给出的默认文件模式 drwxr-xr-x (缩写为 755)非常适合此目的。所以,问题是,谁应该拥有这棵树,它应该属于哪个群体。这可能就足够了:
$ sudo chown -R dan.apache /var/www
这表示用户
dan
拥有/var/www
其下的所有内容(-R
递归),并且该组apache
也对其具有一些权限。如果httpd
作为 group 运行apache
,它可能会获得足够的权限来读取树中的文件并更改其中的目录,这对于大多数站点来说已经足够了。另一种方法是使用您拥有的任何权限,并简单地告诉
scp
模仿树的所有者/var/www/
:mybox$ scp ~/site-mirror/index.html [email protected]:/var/www/htdocs
以用户身份登录,将根文件的本地副本复制
index.html
到适当的位置。您可以在此处使用所需的任何用户名和主机名。您只需要能够以树所有者的用户身份远程登录即可。如果您做不到这一点,请考虑使用选项#1,至少以允许您直接归档的方式进行设置。example.com
www
/var/www/
scp
如果你设置预共享密钥对于 SSH,您甚至不需要提供密码。
scp
我建议您不要使用来rsync
进行网站开发:mybox$ rsync -ave ssh --delete ~/site-mirror [email protected]:/var/www/htdocs
~/site-mirror
这会将onmybox
(您的本地工作计算机)的内容镜像到/var/www/htdocs
on中example.com
,并以 user 身份登录www
。与原始文件相比,使用rsync
原始文件的优点scp
是您不必复制和重新复制未更改的文件。 Rsync 算法计算更改并仅发送该更改。