ゲームサーバーを構成するためのスクリプトセットを作成しています。
各ゲームサーバーを別々のユーザーとしてインストールし、すべてを分離して互いのファイルにアクセスできないようにしました。
構成を処理するデーモン/サーバーは、ユーザーを作成するためのsudo権限を持つ権限のないユーザーとして実行されます。
現在、デーモンがユーザーに代わってファイルを編集できるようにする機能を開発しています。後ろにサーバーが構成されました。
「admin」などのグループにデーモンを追加し、デーモンがファイルを読み書きできるように、すべてのユーザーファイルのグループをグループ権限を持つ「admin」に設定しようとしています。ただし、単一のユーザーを追加することは除外されます。 「admin」グループを削除して、お互いのファイルを読み取れないようにします。
これは、新しいファイルとフォルダが "admin"グループを継承するようにsetgidビットを設定できる最初のインストールで機能します。ただし、ユーザーは自分のグループに「chgrp」でき、システムが破損する可能性があります。デーモンはこれらのファイルにアクセスできなくなり、ユーザーもそのグループに属していないため、グループを「管理者」に戻すことはできません。
次の方法はありますか?
- ゲームサーバーのユーザーがファイルグループを「admin」以外のグループに変更できないようにするには、上記の方法が機能します。
- ここで達成したい目標を達成するためのより良い方法はありますか?
答え1
所有権アクセスには、グループID、権限ビット、およびACL設定へのアクセスが含まれるため、ファイル所有者がそれらを設定するのを防ぐことはできません。
もちろん、この文章には2つのアプローチの種子が隠されています。
- 最初から所有権アクセス権を付与しないでください。 ユーザーアカウントをファイルの所有者にしないでください。代わりに、ACLを使用して
setfacl
個々のユーザーアカウント(または他のアカウント)にアクセス権を付与してください。rwx
他のアカウントが所有し、アカウントが属していないグループに割り当てられ、グローバルにアクセスできなくなります。ここでの欠点はディスククォータと同じです。 - 所有者がリセットできるアクセス制御形式を使用してください。単一のユーザーアカウントを所有者にしますが、それを使用してACLの
setfacl
デーモンアカウント(または他のアカウント)へのアクセスを許可します。rw-
ここでの欠点は、ユーザーアカウントが最初にアクセスを無効にできることです。
必要に応じて長所と短所を評価します。生成されたすべてのファイルにこれらのACLを自動的に設定するには、親ディレクトリのデフォルトのACLを使用します。