suPHP چیه؟
خوب تو یکی از پست های قبلی در مورد suexec گفتم و خوب یه عیب داشت اونم مشکل در http authentication بود. برای همین اومدم سراغ suphp. خیلی ساده و خوب کار می کنه . من که ازش خوشم اومد 😉 . در تعریف suphp چیز جدید نیست همان تعریف suexec را می یارم .
یکی از موضوعات مهم در میزبانی اشتراکی (این هم ترجمه ای از share hosting 😉 ) موضوع دسترسی پوشه هاست. در صورتی که شما یک پوشه برای بارگذاری فایل در وبلاگتون در نظر گرفته باشید ، اولین کاری که به ذهنتون می رسه این هست که دسترسی ها را به 777 تغییر بدید. این موضوع باعث می شه که کاربرای دیگه هم به پوشه شما دسترسی داشته باشند و خوب مشکلاتی که ممکنه پیش بیاد.
از جمله راه حل های موجود SuExec, suPHP , Openbasedir, apache2-mpm-itk و چند تای دیگه است که الان به ذهنم نمی رسه. همه اینها کارشون بر اساس یک اصل هست: اجرای اسکریپتهای کاربر با مجوز دسترسی خود کاربر، نه کابر آپاچی. که در اینجا به توضیح suphp می پردازیم.
بسته های مورد نیاز
aptitude install
apache2-mpm-worker php5-cgi
libapache2-mod-suphp
ماژول های مورد نیاز
برای شروع از غیر فعال بودن ماژول هایی که با suphp تداخل دارند مطمئن شوید
a2dismod suexec php5 actions
و بعد ماژول suphp را فعال کنید
a2enmod suphp
برای اطمینان از اعمال تغییرات آپاچی را مجددا راه اندازی کنید
/etc/init.d/apache2 restart
پیکربندی یک virtual host
نیاز به تغییر خواستی نیستید. با تعریف یک virtual host ساده کل کار حله. در حقیقت نیازی به پیکربندی خاصی ندارید. با فعال کردن ماژول پیکربندی ها اعمال می شه. این فایل پیکربندی منه:
<VirtualHost *:80>
ServerAdmin webmaster@linuxmotto.local
ServerName linuxmotto.local
DocumentRoot /home/behrad/public_html/
DirectoryIndex index.php index.html
ErrorLog /home/behrad/log/error.log
CustomLog /home/behrad/log/access.log combined<Directory /home/behrad/public_html/>
Options -Indexes FollowSymLinks -MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory></VirtualHost>
تست صحت عملکرد تنظیمات انجام شده
برای این منظور کافیه فایل var/log/suphp/suphp.log/ را با tail زیر نظر بگیرید. خوب بهتون نشون می ده که درخواست ها با چه uid اجرا میشه. در ضمن در صورتی که مشکل داشتید فایل پیکربندی etc/suphp/suphp.conf/ را ببینید. من نیازی به تغییر پیدا نکردم ولی اگه مشکل داشتید بهش یه نگاهی بندازید. در عین حال با دیدن فایل کانفیگ می فهمید داره بر چه اساسی کار می کنه.
معایب
مشکلی با هاش داشتم این بود که نتونستم با zend نصبش کنم.
نکته: با راه اندازی suphp دیگه پارامترهای php مانند php_flag و php_value در فایل htaccess. خوانده نمی شه و شما باید یک فایل php.ini بسازید و تغییرات مورد نظرتون را اونجا بنویسید.
منابع
http://blog.stuartherbert.com/php/2008/01/18/using-suphp-to-secure-a-shared-server/
http://forums.debian.net/viewtopic.php?f=16&t=50780