「ウェブアプリケーションパッケージガイドライン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎ディレクトリ構造: リンクを修正)
(accuracy の文章を微修正)
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
{{Translateme|飜訳が必要です。}}
 
 
[[Category:パッケージ開発]]
 
[[Category:パッケージ開発]]
 
[[en:Web application package guidelines]]
 
[[en:Web application package guidelines]]
 
[[pt:Web application package guidelines]]
 
[[pt:Web application package guidelines]]
  +
{{Accuracy| 以下のファイルシステムレイアウトは実際の複数のウェブアプリにおいて不十分です。}}
 
{{Package Guidelines}}
 
{{Package Guidelines}}
 
このページではウェブアプリケーションをパッケージ化する方法を説明します。
 
このページではウェブアプリケーションをパッケージ化する方法を説明します。
== Separate user ==
+
== ユーザの分離 ==
   
  +
セキュリティ上の理由により、すべてのウェブアプリケーションは別々の(非特権)ユーザ(つまり、{{ic|''$pkgname''}})として実行されるべきです。
For security reasons, every web application should be run as a separate (unprivileged) user (i.e. {{ic|''$pkgname''}}).
 
   
  +
{{Note|以前は多くのウェブアプリケーションが {{ic|http}} ユーザ/グループとして実行されていました。この場合、アプリケーションが互いのファイルを読むことができるので安全でないと考えられます。}}
{{Note| Traditionally, many web applications were run as the {{ic|http}} user/group, which can be considered unsafe, as in such a scenario applications can read each other's files.}}
 
   
Refer to the {{man|8|systemd-sysusers}}, {{man|5|sysusers.d}}, {{man|8|systemd-tmpfiles}} and {{man|5|tmpfiles.d}} man pages for details on how to create users and deal with ownership of files and folders for that user in a package.
+
ユーザの作成方法や、パッケージのユーザ用のファイルやフォルダーの所有権をどう扱うかについては、{{man|8|systemd-sysusers}} {{man|5|sysusers.d}}{{man|8|systemd-tmpfiles}}{{man|5|tmpfiles.d}} を参照してください。
   
 
==ディレクトリ構造==
 
==ディレクトリ構造==
   
  +
ディレクトリ構造は [[FHS]] に従います。
The layout follows the [[FHS]].
 
   
  +
* {{ic|/usr/share/''$pkgname''}}: アプリケーションの''データディレクトリ''にはウェブアプリケーションのファイルが格納されます。ファイルは {{ic|root}} が所有しており、ゆえに {{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループに対しては読み取り専用となります。
* {{ic|/usr/share/''$pkgname''}}: The application's ''data directory'' holds the files of the web application. Files are owned by {{ic|root}} and are therefore readonly to the application user and group {{ic|''$pkgname''}}.
 
* {{ic|/etc/''$pkgname''}}: The ''configuration directory'' of the application holds configuration files for the application (symlinked to the ''data directory''). Files located here have to go to the [[PKGBUILD#backup|backup]] array and are owned by the user and group {{ic|''$pkgname''}}.
 
   
  +
* {{ic|/etc/''$pkgname''}}: アプリケーションの''設定ディレクトリ''にはウェブアプリケーションの設定ファイルが格納されます(''データディレクトリ''へのシンボリックリンクとなります)。ここに位置するファイルは [[PKGBUILD#backup|backup 配列]] に含まれていなければならず、{{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています。
:{{Warning| Files potentially containing authentication information '''must be protected''' (i.e. not readable by any other user or group on the system, except {{ic|root}} and {{ic|''$pkgname''}})!}}
 
   
  +
:{{Warning| 認証情報を含んでいる可能性のあるファイルは''保護されていなければなりません''!(つまり、システム上のいかなるユーザやグループからも読み取り可能であってはなりません。ただし、{{ic|root}} と {{ic|''$pkgname''}} は例外です。)}}
* {{ic|/run/''$pkgname''}}: The ''runtime directory'' of the application (owned by the user and group {{ic|''$pkgname''}}). It can be used for sockets (e.g. in setups facilitating [[UWSGI#Socket_activation|socket activation]]).
 
:{{Note| According to the package guidelines on [[Arch_パッケージガイドライン#ディレクトリ|ディレクトリ]], {{ic|/run}} must not be contained in a package. Use [[tmpfiles]] to add the directory with matching permissions.}}
 
   
  +
* {{ic|/run/''$pkgname''}}: アプリケーションの''ランタイムディレクトリ''です({{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています)。ソケット用に利用可能です(例えば、[[UWSGI#Socket_activation|ソケットアクティベーション]]を容易にするセットアップで)。
* {{ic|/var/cache/''$pkgname''}}: The ''cache directory'' of the application (owned by the user and group {{ic|''$pkgname''}}). It (or subfolders in it) is symlinked to the ''data directory'' for applications requiring writable cache directories.
 
  +
* {{ic|/var/lib/''$pkgname''}}: The ''persistent storage'' of the application (owned by the user and group {{ic|''$pkgname''}}). It (or subfolders in it) is symlinked to the ''data directory'' for applications requiring persistent storage directories.
 
  +
:{{Note| [[Arch_パッケージガイドライン#ディレクトリ|ディレクトリ]]のパッケージガイドラインによれば、{{ic|/run}} はパッケージに含まれていてはいけません。[[tmpfiles]] を使って適切なパーミッションを持つディレクトリを作成してください。}}
  +
  +
* {{ic|/var/cache/''$pkgname''}}: アプリケーションの''キャッシュディレクトリ''です({{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、書き込み可能なキャッシュディレクトリを必要とするアプリケーション用に''データディレクトリ''へのシンボリックリンクとなります。.
  +
  +
* {{ic|/var/lib/''$pkgname''}}: アプリケーションの''永続的ストレージ''です({{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、永続的なストレージディレクトリを必要とするアプリケーション用に''データディレクトリ''へのシンボリックリンクとなります。

2022年4月11日 (月) 12:21時点における最新版

この記事またはセクションの正確性には問題があります。
理由: 以下のファイルシステムレイアウトは実際の複数のウェブアプリにおいて不十分です。 (議論: トーク:ウェブアプリケーションパッケージガイドライン#)

このページではウェブアプリケーションをパッケージ化する方法を説明します。

ユーザの分離

セキュリティ上の理由により、すべてのウェブアプリケーションは別々の(非特権)ユーザ(つまり、$pkgname)として実行されるべきです。

ノート: 以前は多くのウェブアプリケーションが http ユーザ/グループとして実行されていました。この場合、アプリケーションが互いのファイルを読むことができるので安全でないと考えられます。

ユーザの作成方法や、パッケージのユーザ用のファイルやフォルダーの所有権をどう扱うかについては、systemd-sysusers(8)sysusers.d(5)systemd-tmpfiles(8)tmpfiles.d(5) を参照してください。

ディレクトリ構造

ディレクトリ構造は FHS に従います。

  • /usr/share/$pkgname: アプリケーションのデータディレクトリにはウェブアプリケーションのファイルが格納されます。ファイルは root が所有しており、ゆえに $pkgname ユーザと $pkgname グループに対しては読み取り専用となります。
  • /etc/$pkgname: アプリケーションの設定ディレクトリにはウェブアプリケーションの設定ファイルが格納されます(データディレクトリへのシンボリックリンクとなります)。ここに位置するファイルは backup 配列 に含まれていなければならず、$pkgname ユーザと $pkgname グループが所有しています。
警告: 認証情報を含んでいる可能性のあるファイルは保護されていなければなりません!(つまり、システム上のいかなるユーザやグループからも読み取り可能であってはなりません。ただし、root$pkgname は例外です。)
  • /run/$pkgname: アプリケーションのランタイムディレクトリです($pkgname ユーザと $pkgname グループが所有しています)。ソケット用に利用可能です(例えば、ソケットアクティベーションを容易にするセットアップで)。
ノート: ディレクトリのパッケージガイドラインによれば、/run はパッケージに含まれていてはいけません。tmpfiles を使って適切なパーミッションを持つディレクトリを作成してください。
  • /var/cache/$pkgname: アプリケーションのキャッシュディレクトリです($pkgname ユーザと $pkgname グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、書き込み可能なキャッシュディレクトリを必要とするアプリケーション用にデータディレクトリへのシンボリックリンクとなります。.
  • /var/lib/$pkgname: アプリケーションの永続的ストレージです($pkgname ユーザと $pkgname グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、永続的なストレージディレクトリを必要とするアプリケーション用にデータディレクトリへのシンボリックリンクとなります。