複数の人がアクセスでき、CGIまたはPHPスクリプト)を実行している可能性のある共有ウェブスペースを部門のウェブサーバーに設定するように依頼されました。ウェブスペースを管理している人は、それを使用することを決定する可能性がありますファイル送信の場合、スクリプトによって作成されたすべてのファイルにアクセスする必要があることを意味します。ScientificLinux6でApacheを実行しています。
複数のユーザーがWebスペースへの書き込みアクセス権を必要とするため、標準的なアプローチは、関連するすべてのユーザーが属するグループを作成し、Webスペース内のディレクトリのアクセス許可をg+ws
に設定することです。 suexecは、ファイルがグループ書き込み可能であることに不満を持っており、それらの実行を拒否します。
これを設定して、メインのApacheアカウントとは異なるアカウントでスクリプトが実行されるようにするにはどうすればよいですか(そして、notにいるユーザーとは異なります。ウェブスペースのグループ)?説明責任(およびその他の)の理由から、このWebスペースを維持するためにさまざまな人々が使用しなければならない共有アカウントを作成する必要はありません。
もう少し詳しく説明すると、現在の設定は次のとおりです。ホームディレクトリがNFS上にあり、必要に応じて自動マウントされるユーザーがいます。ほとんどの人は、mod_userdirを介してアクセスする個人のWebスペースを使用するだけです。過去に、特定のアカウントに関連付けられていないが、複数のアカウントによるアクセスを容易にするためにグループ所有権が設定されている追加の自動マウントディレクトリをNFSサーバーに作成することにより、共有Webスペースに対するいくつかの要求に対応しました。これまで、これらの共有スペースには静的コンテンツしか含まれていなかったため(関係者がスクリプトを実行しないことを信頼していました)、この種のスペースのsuexec関連の問題に対処する必要はありませんでした。
編集:ユーザーはスクリプトによって作成されたファイルにアクセスする必要がある場合があることに注意してください。
このコンテキストでの説明責任を確保し、公開されたコンテンツの正しい所有権と権限を提供するために、 this の記事で説明されているワークフローのわずかに変更されたバージョンを使用します。
これが私が実装した方法です。ほとんどの部分は交換可能であることに注意してください。
#!/bin/sh
Sudo /usr/local/sbin/publisher-hub2live
exit 0
許可されていないユーザーがスクリプトに直接アクセスすることはできません。
# ls -lrt /usr/local/sbin/publisher-hub2live
-rwx------. 1 root root 400 Oct 12 2012 /usr/local/sbin/publisher-hub2live
したがって、sudorule:
Defaults:git !requiretty
git Host_Alias = (root) NOPASSWD: /usr/local/sbin/publisher-hub2live
git
をリポジトリの実際の所有者に置き換えます。
パブリッシャースクリプトの内容は、ここで「魔法」として機能します(簡略版)。
#!/bin/sh
echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo
cd /path/to/live/repo || exit
umask 0022
unset GIT_DIR
git pull hub master
chown -R root:root /path/to/live/repo
find /path/to/live/repo/ -type d | xargs chmod u=rwx,go+rx
find /path/to/live/repo/ -type f | xargs chmod u=rw,go+r
restorecon -v -R /path/to/live/repo
exec git update-server-info
exit 0
所有者、グループ、DAC、およびMACのアクセス許可に関してニーズが異なる場合がありますが、ワークフローは同じです。