Web 应用程序软件包指南

出自 ArchWiki

此文章或章节的事实准确性存在争议。

原因: 文件系统布局不足以支持多个 Web 应用程序实例。(在Talk:Web application package guidelines中讨论)
Arch 软件包指南

32 位CLRCMake交叉编译DKMSEclipse 插件Electron字体Free PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.js非自由软件OCamlPerlPHPPythonRRubyRust - 安全ShellVCSWebWine

此页面描述了如何打包 Web 应用程序。

独立的用户

出于安全原因,每个 Web 应用程序都应以单独的(非特权)用户(即 $pkgname)身份运行。

注意: 传统上,许多 Web 应用程序都以 http 用户/组身份运行,这可能被认为是不安全的,因为在这种情况下,应用程序可以读取彼此的文件。

有关如何在软件包中创建用户以及处理该用户的文件的所有权的详细信息,请参阅 systemd-sysusers(8)sysusers.d(5)systemd-tmpfiles(8)tmpfiles.d(5) 手册页。

目录结构

布局遵循 FHS

  • /usr/share/$pkgname:应用程序的数据目录保存 Web 应用程序的文件。文件归 root 所有,因此对于应用程序用户和组 $pkgname 是只读的。
  • /etc/$pkgname:应用程序的配置目录保存应用程序的配置文件(符号链接到数据目录)。位于此处的文件必须转到 backup 数组,并且归用户和组 $pkgname 所有。
警告: 可能包含身份验证信息的文件必须受到保护(即,系统上任何其他用户或组都不可读取,除了 root$pkgname)!
  • /run/$pkgname:应用程序的运行时目录(归用户和组 $pkgname 所有)。它可用于套接字(例如,在方便 套接字激活 的设置中)。
注意: 根据关于目录的软件包指南,/run 不得包含在软件包中。使用 tmpfiles 添加具有匹配权限的目录。
  • /var/cache/$pkgname:应用程序的缓存目录(归用户和组 $pkgname 所有)。它(或其中的子文件夹)符号链接到数据目录,用于需要可写缓存目录的应用程序。
  • /var/lib/$pkgname:应用程序的持久存储(归用户和组 $pkgname 所有)。它(或其中的子文件夹)符号链接到数据目录,用于需要持久存储目录的应用程序。