我正在为 ubuntu 服务器开发一个服务器应用程序,客户端将通过套接字连接进行连接。它处于测试阶段,正在大力开发中。目前很多人都在使用它,而且它几乎每天都在更新。所以我开始认真考虑安全问题,同时不要过多地限制自己。现在我有两个问题:
哪里是存储其文件的合适位置?应用程序由可执行文件、一些配置文件和启动脚本组成。但我不想将其分散到整个文件系统中,而只是将其存储在单个文件夹中以方便使用,因为应用程序正在大量开发中。我猜是在下创建新目录
/var
。现在我将其存储在我的主文件夹中。我需要为它创建单独的用户吗?我通过 init.d 脚本启动它
sudo -u me
。出于安全目的,我想限制它对系统的访问,但同时我希望能够通过 FTP 更新它,并且不会遇到访问问题(上传它的用户与运行它的用户不同,有时它需要对某些文件的写访问权限)。如何做到这一点?
更新:我忘了说了,这个应用程序是不可重新分发的。它是一个 Web 服务,将以单个实例存在于我们的服务器上。
答案1
这些确实是个人喜好问题,所以我会这样回答。
我建议使用 /opt/appname 来保存文件。我过去参与的一些项目将所有内容都放到那里,然后最终将其从那里分离到子文件夹中。您也可以将 init 脚本符号链接回此目录。
如果您使用专用用户来运行应用程序,您的安装程序通常应该创建要使用的用户 ID。不过,这只是我个人的偏好问题。我见过很多项目都采用这两种方式。
答案2
哪里是存储其文件的合适位置?应用程序由可执行文件、一些配置文件和启动脚本组成。但我不想将其分散到整个文件系统中,而只是将其存储在单个文件夹中以方便使用,因为应用程序正在大力开发中。我猜是在 /var 下创建新目录。现在我将其存储在我的主文件夹中。
我坚信你应该遵循跳频尤其是在开发繁重时,您应该遵循标准来开发应用程序,以便可以在生产中使用。配置属于 /etc,二进制文件通常位于 /usr/bin 下,每个用户的数据位于 /home,共享数据位于 /var 或 /srv。如果您希望所有内容都出现在一个文件夹中,则使用符号链接使所有内容都出现在一个位置。从一开始就正确开发它,当您意识到自己做出了一些糟糕的决定而需要付出很多努力才能纠正时,您将来不会遇到任何奇怪的问题。
在最好的世界中,您的应用程序可以轻松重新配置,并且没有任何路径被嵌入。可以轻松地将配置、数据移动到任何合适的地方。
我需要为其创建单独的用户吗?
这完全取决于应用程序,但您应尽可能避免以 root 身份运行服务。您还应避免以个人帐户运行它。
答案3
如果这是您的应用程序,您可以将其存储在 /opt 下,因为它是第三方应用程序。您可以在以下位置找到有关目录结构的更多信息http://slashmedia.wordpress.com/2007/12/23/linux-directory-structure/