使用 SCP 从本地复制到根拥有的文件夹的权限“问题”

使用 SCP 从本地复制到根拥有的文件夹的权限“问题”

我正在早期尝试设置一个基本的 LAMP 盒子。这是我第一次设置我将使用的软件,而不是仅仅提供一个工作环境,所以请对我宽容一些:)

我已经安装了Apache,对应的htdocs文件夹的权限为drwxr-xr-x。我可以很好地从远程复制到本地,但是当尝试复制小目录时,我的权限被拒绝。

我应该提到我正在使用我自己的管理员用户帐户登录,当然 htdocs 不属于我所有。

所以我天真地认为我只需要 sudo 命令 - 但这不起作用。好吧,接下来我会根据我在网上读到的内容将权限“修复”为 774。不,这也不起作用。我在想“我需要向第三个“用户”添加写访问权限吗?这看起来很奇怪。

然后我读了一个论坛帖子,其中有人告诉那个人,因为该文件夹是 root 拥有的,所以他必须将文件 scp 到远程主机上的 home/ 目录中,然后 sudo cp 它们到 apache 文件夹。

对我来说,这似乎是一种冗长的方法,但在我尝试这样做之前,我想我应该问一下这是否属实,这里是否有任何最佳实践以及我的假设是否错误?

其次 - htdocs 的适当权限是什么?

我仍处于早期阶段,最终可能会设置一些 FTP 访问,但我很高兴知道。

答案1

有很多方法可以给这只猫剥皮。以下是一些供您考虑的内容:

  1. 几乎可以肯定,这htdocs棵树不必归根所有。重要的是它是可读的由 Apache 用户。根据所讨论的 *ix 系统,可能是apachewww-data或其他内容。上面给出的默认文件模式 drwxr-xr-x (缩写为 755)非常适合此目的。

    所以,问题是,谁应该拥有这棵树,它应该属于哪个群体。这可能就足够了:

    $ sudo chown -R dan.apache /var/www
    

    这表示用户dan拥有/var/www其下的所有内容(-R递归),并且该组apache也对其具有一些权限。如果httpd作为 group 运行apache,它可能会获得足够的权限来读取树中的文件并更改其中的目录,这对于大多数站点来说已经足够了。

  2. 另一种方法是使用您拥有的任何权限,并简单地告诉scp模仿树的所有者/var/www/

    mybox$ scp ~/site-mirror/index.html [email protected]:/var/www/htdocs
    

    以用户身份登录,将根文件的本地副本复制index.html到适当的位置。您可以在此处使用所需的任何用户名和主机名。您只需要能够以树所有者的用户身份远程登录即可。如果您做不到这一点,请考虑使用选项#1,至少以允许您直接归档的方式进行设置。example.comwww/var/www/scp

    如果你设置预共享密钥对于 SSH,您甚至不需要提供密码。

    scp我建议您不要使用来rsync进行网站开发:

    mybox$ rsync -ave ssh --delete ~/site-mirror [email protected]:/var/www/htdocs
    

    ~/site-mirror这会将on mybox(您的本地工作计算机)的内容镜像到/var/www/htdocson中example.com,并以 user 身份登录www。与原始文件相比,使用rsync原始文件的优点scp是您不必复制和重新复制未更改的文件。 Rsync 算法计算更改并仅发送该更改。

答案2

乍一看,您的问题很可能出在第774章权限设置;您基本上已将目录设置为其所有者和组可读、可写和可执行,并且可读但不可执行为他人。

换句话说,非所有者或组的人员无法cd进入该目录或访问其中的文件。

我建议您在业余时间阅读一些有关文件权限的内容;现在尝试将权限设置为第755章看看是否能解决问题。

额外学分:调查同步斯波利...并记住,用户只需要能够从源头上,但必须有到达目的地。

相关内容