web-dev-qa-db-ja.com

ユーザーがwww-dataにchgrpできるようにする安全な方法

私は個人のウェブサイトをホストするために何人かの友人によって使用される小さなウェブサーバーを持っています。場合によっては、Webサーバー(www-data)から書き込むことができるアップロード用のフォルダーを作成する必要があります。正規のユーザー(sudoersではない)がメンバーではない特定のグループを設定できるようにする安全な方法はありますか?

私にはこれは許可するのに危険なオプションのように思えますが、私が許可しなければならないかもしれません。だから私はそれを行う安全な方法に興味があります。独自のスクリプトを作成し、ユーザーにSudoを許可することは、安全ではない可能性があります。本当に安全でない限り、Sudo chgrpを許可するだけでなく、ベストプラクティスを使用してみたいと思います。

一部の要件*サーバーの特定の領域のファイルのみを変更できます*特定のグループからの2つのみを変更できます*特権の昇格やその他のセキュリティ問題を許可するためにハッキングすることはできません。

PHP FastCGIを特定のユーザーとして実行することは良い解決策かもしれませんが、それが安全かつ安全にセットアップされていることをどのように確認しますか?

1
Rob

ユーザーのウェブサイトが仮想ホストで分離されている場合、ほとんどの場合、簡単で安全な方法は、Apache2-mpm-itkを使用することです。これにより、個々の仮想ホストを特定のシステムユーザー/グループに制限できます。

Apache2-mpm-itkをインストールした後、Apache構成の一部に次の行を追加します。

 <virtualhostfoobar.com:80>
...
<IfModulempm_itk_module> 
 AssignUserId USERID GROUPID 
 </ IfModule> 
 </ virtualhost> 

このようにして、vhostsのphp/Perl/pythonスクリプトも、通常のユーザーと権限で実行されます。

2
simon

あなたができることの1つ、そして私がやっていることは、 suexec を使用して、各人のPHPスクリプトは、独自のユーザーまたはグループアカウントで実行されます。

これを行うには、FastCGIモジュールとしてPHPを実行し、Apacheでmod_fcgidを実行する必要があります(ヒント:ApacheのワーカーMPMを使用することもできます)。インストールは少し注意が必要です。ラッパースクリプトが必要です(suphpを使用してこれを回避できる場合がありますが、私は試していません)。

PHP(およびすべてのCGIプロセス)がwww-data:<username>として実行されるようにします。次に、ユーザーが自分のフォルダーにPHPをアップロードできるようにしたい場合は、グループ書き込みフラグを自分で設定するだけです。

または、PHPを<username>:<username>として実行するだけで、実行する必要はありません。

1
thomasrutter