「ウェブアプリケーションパッケージガイドライン」の版間の差分
ナビゲーションに移動
検索に移動
Kusanaginoturugi (トーク | 投稿記録) |
細 (accuracy の文章を微修正) |
||
(2人の利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
− | {{Translateme|記事の追加と飜訳が必要です。}} |
||
[[Category:パッケージ開発]] |
[[Category:パッケージ開発]] |
||
[[en:Web application package guidelines]] |
[[en:Web application package guidelines]] |
||
+ | [[pt:Web application package guidelines]] |
||
+ | {{Accuracy| 以下のファイルシステムレイアウトは実際の複数のウェブアプリにおいて不十分です。}} |
||
{{Package Guidelines}} |
{{Package Guidelines}} |
||
− | |||
このページではウェブアプリケーションをパッケージ化する方法を説明します。 |
このページではウェブアプリケーションをパッケージ化する方法を説明します。 |
||
+ | == ユーザの分離 == |
||
+ | |||
+ | セキュリティ上の理由により、すべてのウェブアプリケーションは別々の(非特権)ユーザ(つまり、{{ic|''$pkgname''}})として実行されるべきです。 |
||
+ | |||
+ | {{Note|以前は多くのウェブアプリケーションが {{ic|http}} ユーザ/グループとして実行されていました。この場合、アプリケーションが互いのファイルを読むことができるので安全でないと考えられます。}} |
||
+ | |||
+ | ユーザの作成方法や、パッケージのユーザ用のファイルやフォルダーの所有権をどう扱うかについては、{{man|8|systemd-sysusers}} や {{man|5|sysusers.d}}、{{man|8|systemd-tmpfiles}}、{{man|5|tmpfiles.d}} を参照してください。 |
||
==ディレクトリ構造== |
==ディレクトリ構造== |
||
− | レイアウトの例: |
||
+ | ディレクトリ構造は [[FHS]] に従います。 |
||
− | * {{Ic|/etc/webapps/''$pkgname''}} |
||
+ | |||
− | * {{Ic|/usr/share/webapps/''$pkgname''}} |
||
+ | * {{ic|/usr/share/''$pkgname''}}: アプリケーションの''データディレクトリ''にはウェブアプリケーションのファイルが格納されます。ファイルは {{ic|root}} が所有しており、ゆえに {{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループに対しては読み取り専用となります。 |
||
+ | |||
+ | * {{ic|/etc/''$pkgname''}}: アプリケーションの''設定ディレクトリ''にはウェブアプリケーションの設定ファイルが格納されます(''データディレクトリ''へのシンボリックリンクとなります)。ここに位置するファイルは [[PKGBUILD#backup|backup 配列]] に含まれていなければならず、{{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています。 |
||
+ | |||
+ | :{{Warning| 認証情報を含んでいる可能性のあるファイルは''保護されていなければなりません''!(つまり、システム上のいかなるユーザやグループからも読み取り可能であってはなりません。ただし、{{ic|root}} と {{ic|''$pkgname''}} は例外です。)}} |
||
+ | |||
+ | * {{ic|/run/''$pkgname''}}: アプリケーションの''ランタイムディレクトリ''です({{ic|''$pkgname''}} ユーザと {{ic|''$pkgname''}} グループが所有しています)。ソケット用に利用可能です(例えば、[[UWSGI#Socket_activation|ソケットアクティベーション]]を容易にするセットアップで)。 |
||
+ | |||
+ | :{{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時点における最新版
パッケージ作成ガイドライン
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このページではウェブアプリケーションをパッケージ化する方法を説明します。
ユーザの分離
セキュリティ上の理由により、すべてのウェブアプリケーションは別々の(非特権)ユーザ(つまり、$pkgname
)として実行されるべきです。
ユーザの作成方法や、パッケージのユーザ用のファイルやフォルダーの所有権をどう扱うかについては、systemd-sysusers(8) や sysusers.d(5)、systemd-tmpfiles(8)、tmpfiles.d(5) を参照してください。
ディレクトリ構造
ディレクトリ構造は FHS に従います。
/usr/share/$pkgname
: アプリケーションのデータディレクトリにはウェブアプリケーションのファイルが格納されます。ファイルはroot
が所有しており、ゆえに$pkgname
ユーザと$pkgname
グループに対しては読み取り専用となります。
/etc/$pkgname
: アプリケーションの設定ディレクトリにはウェブアプリケーションの設定ファイルが格納されます(データディレクトリへのシンボリックリンクとなります)。ここに位置するファイルは backup 配列 に含まれていなければならず、$pkgname
ユーザと$pkgname
グループが所有しています。
/run/$pkgname
: アプリケーションのランタイムディレクトリです($pkgname
ユーザと$pkgname
グループが所有しています)。ソケット用に利用可能です(例えば、ソケットアクティベーションを容易にするセットアップで)。
/var/cache/$pkgname
: アプリケーションのキャッシュディレクトリです($pkgname
ユーザと$pkgname
グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、書き込み可能なキャッシュディレクトリを必要とするアプリケーション用にデータディレクトリへのシンボリックリンクとなります。.
/var/lib/$pkgname
: アプリケーションの永続的ストレージです($pkgname
ユーザと$pkgname
グループが所有しています)。このフォルダ(あるいは、この中のサブフォルダ)は、永続的なストレージディレクトリを必要とするアプリケーション用にデータディレクトリへのシンボリックリンクとなります。