欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Linux:如何使用 Apache 用户进行 SSH 连接? 有大用

作为一名 Web 开发人员,我在从 SSH 客户端更新 PHP(和其他)文件时总是遇到问题,因为我是以用户身份登录的,或者只是 root 用户登录的。 在那次更新之后,我总是必须从终端“chown -R apache:apache *”手动运行以使文件可访问。

我尝试创建一个用户 ID 并将其添加到组 'apache' 并将 apache 用户添加到我的用户 ID 的组中。这仅适用于服务器文件系统上的现有文件,因为新创建的文件具有权限 rwxr--r-- 不允许我的用户写入,即使它位于“apache”组中。

我想为 Apache 用户进行登录(不需要 shell),所以我可以使用基于 SSH 的文件浏览器(如 Forklift)以 Apache 身份登录或使用 sshfs 以 Apache 用户身份挂载。

另一种方法是使 umask 我的用户 id 始终设置来自 sshfs 挂载或文件浏览器(使用我的用户 id,而不是 root 挂载)的新创建文件的属性,它们默认具有权限 rwxrwxr--(即 0775)。

有没有办法可以将文件上传到服务器(更新现有的操作创建新的)而不必担心 Apache 的权限?

【问题讨论】:

  • 在专业环境中,您将无法使用服务帐户(即软件用来运行的用户)连接或登录服务器。 setgid 是最简单的。在目录下添加setgid,把你的用户放到组里,设置你的umask,使用sftp传输文件。如果需要图形界面,可以使用WinSCP或者Filezilla客户端做sftp

标签: linux apache ubuntu permissions centos


【解决方案1】:

你必须设置setgid

例如,执行以下步骤:

adduser hugo
addgroup apache
usermod -a -G apache hugo

mkdir /tmp/example
chown hugo:apache /tmp/example
chmod g+s /tmp/example

su hugo
cd /tmp/example
touch my_file
ls -l

【讨论】:

  • 这部分回答了我的问题。您的示例有效(Centos 7),但后来我对 Apache 的 webroot 文件夹(/var/www/html)做了同样的事情,您的技巧也有效:文件得到了 rw-rw-r-- 参数。但是当我使用 sshfs 连接到该服务器时
  • 这部分回答了我的问题。您的示例有效(Centos 7),但后来我对 Apache 的 webroot 文件夹(/var/www/html)做了同样的事情,您的技巧也有效:文件得到了 rw-rw-r-- 参数。但是当我使用 sshfs 连接到该服务器并将文件拖到同一个文件夹中时,它会再次获得 rw--r--r-- 参数。因此,我正在认真考虑在我的常规登录用户下运行 Apache 以防止此类问题。奇怪的是没有其他解决方案。
  • sshfs? - 好的,那你得看一下sshfs的文档digitalocean.com/community/tutorials/…
  • 我已经这样做了,但没有解决以 'Apache' 用户身份挂载 sshfs 的问题。当我尝试这样做时,它会要求输入密码,即使我为之前创建的 Apache 用户提供了公钥。


来自 https://www.likecs.com/ask-2439753.html



普通分类: