我正在开发一个服务器应用程序的Ubuntu服务器,客户端将连接到通过套接字连接。 目前处于testing阶段,正处于重大的发展阶段。 目前有很多人正在使用它,几乎每天都会更新。 因此,我认真考虑安全问题,同时不要过多地限制自己。 现在我有两个问题:
哪里是适当的地方来存储它的文件? 应用程序包含可执行文件,一些configuration文件和启动脚本。 但是我不想把它跨文件系统传播,只是为了方便存储在单个文件夹中,因为应用程序正在大量开发中。 我的猜测是在/var下创build新的目录。 现在我将它存储在我的主文件夹中。
我是否需要为它创build单独的用户? 我通过sudo -u me使用init.d脚本启动它。 为了安全起见,我想限制对系统的访问,但同时我希望能够通过FTP进行更新,而不是遇到访问问题(上传的用户与运行它的用户不同,有时需要写入访问一些文件)。 怎么做?
更新:我忘了提及这个应用程序不可再发行。 这是一个Web服务,将在我们的服务器上存在一个实例。
这些都是非常优先的,所以我会这样回答。
我build议使用/ opt / appname来保存你的文件。 我曾经工作过的一些项目将所有内容都放在那里,然后最终将其分离出来。 你也可以把init脚本符号链接回这个目录。
如果您正在使用专用用户来运行应用程序,则安装程序通常应该创build要使用的用户标识。然而,这是我的偏好问题。 我看过很多项目都是这样。
哪里是适当的地方来存储它的文件? 应用程序包含可执行文件,一些configuration文件和启动脚本。 但是我不想把它跨文件系统传播,只是为了方便存储在单个文件夹中,因为应用程序正在大量开发中。 我的猜测是在/ var下创build新的目录。 现在我将它存储在我的主文件夹中。
我强烈地认为,在重型发展的时候应该特别关注FHS ,你应该开发你的应用程序来遵循标准,以便在生产中使用。 configuration属于/ etc,通常位于/ usr / bin下的二进制文件,/ home中的每用户数据,/ var或/ srv中的共享数据。 如果您希望所有内容都显示在单个文件夹中,则使用符号链接将所有内容显示在一个位置。 在开始的时候就开始正确地开发它,当你意识到你做出了一些糟糕的决定时,你将不会遇到任何奇怪的问题,需要你付出很大努力才能做出正确的决定。
在最好的世界中,您的应用程序可以很容易地重新configuration,并且不需要path。可以轻松地将configuration,数据移动到适当的任何位置。
我是否需要为它创build单独的用户?
它完全取决于应用程序,但是应尽可能避免以root身份运行服务。 您还应该避免将其作为您的个人帐户运行。
如果是您的应用程序,您可以将其存储在/ opt下,因为它是第三方应用程序。 你可以在http://slashmedia.wordpress.com/2007/12/23/linux-directory-structure/find更多关于目录结构的信息。