对于我创建的应用程序,我试图找到最佳的文件夹位置。按照文档的建议,我在/usr/share/company_name/product_name中安装了应用程序,将config.ini文件保存在用户主目录中的隐藏文件夹中,并在用户主目录中创建文档。
应用程序需要其他资源:
资源数据库(内容可以通过代码修改,尽管建议用户没有外部访问权限)
资源数据库必须是通用的,对所有用户都是可访问的,因此它不能在用户主目录中。它不能在隐藏目录中,因为程序可以使用浏览器窗口来定位并更改其位置。
我本想把它放在像/var或/opt这样的“知名”文件夹中,但是当我试图通过代码打开它时,会出现错误,命令如下
FILE *resource = fopen(path, "r+");什么是一个资源的好位置,预装的,非只读的,所有用户都可以访问并且可以通过代码修改,而不是隐藏(应该能够浏览到它)?
更新:由于下面的答案中提供的链接,我能够将我的资源放在/srv/MyCompany/MyProduct中。
我希望这是个好地方?
发布于 2014-10-01 23:20:57
配置文件的处理在XDG基础目录规范中进行了描述。
它定义了一组相关的路径环境变量(如XDG_CONFIG_HOME和XDG_CONFIG_DIRS ),这些变量定义了(例如,默认情况下.config目录)的位置,以及如何以其他各种受控制的方式处理它。
很明显,表单~/.config/product_name是非常常见的,当它仅仅是公司的一个产品时,~/.config/company_name并没有什么不同。
但假设有多种产品-我认为这个结构
~/.config/company_name/product1,~/.config/company_name/product2.
很有道理;
我不知道这是在这些或相关的标准中描述的。但是,XDG标准可以将其视为正常的产品目录,只是将公司的整套软件视为用于此目的的一种产品。
现场系统层次结构的一般标准用法在Linux文件系统层次结构中进行了描述。
作为应用程序本身的位置,请查看/opt目录;您可以在/opt/company_name/product1等或/opt/product1等中安装应用程序,根据标准,两者都是正确的。
您发现/srv目录可能是一个很好的选择。
我同意这是正确的解决办法--因此,我在这里描述它的答案:
目录/srv类似于/opt --标准并没有过多地描述子目录结构,您可以使用与上面相同的分隔。
虽然/opt明确地用于只读应用程序代码,如可执行文件、静态数据文件和文档,但/srv并不限制数据的可变性;它甚至允许混合具有不同访问权限和可变性的文件。
例如,可以接受在那里部署可由系统用户更改的文件。
来自Linux文件系统层次结构: 1.19:
This main purpose of specifying this is so that users may find
the location of the data files for particular service, and so that
services which require a single tree for readonly data, writable data
and scripts (such as cgi scripts) can be reasonably placed. Data that
is only of interest to a specific user should go in that users'
home directory.
The methodology used to name subdirectories of /srv is unspecified as there
is currently no consensus on how this should be done.若要管理对需要对软件的所有用户可写的数据的访问权限,应使用分配给包含所有用户的组的权限。
即使“该计算机的所有用户”都在这个组中,也是如此--许多系统用户不应该能够写入数据;攻击者可能会访问其中一个系统用户帐户。
https://askubuntu.com/questions/531219
复制相似问题