How to enable user directory for Apache in SELinux


  • در صورتی که SELinux فعال باشد ، صفحات مربوط به کاربران با پیغام خطا (forbidden) مواجه می‌شوند.
  • راه‌کار ساده خاموش کردن SELinux است.
  • راه‌کار درست اعمال تنظیمات صحیح است.
  • علت به وجود آمدن این مشکل یا علت جلوگیری کردن SELinux از نمایش صفحات کاربران درون وب سرور Apache این است که پوشه‌ی public_html یا پرونده‌های درون آن حاوی Context صحیح نیستند.
  • به صورت معمول به ساختن یک پرونده یا پوشه درون Home Directory ، به صورت پیش‌فرض برای بخش Type یک Context با نام user_home_t در نظر گرفته می‌شود که کارکتر t به منظور Type می‌باشد.
  • حال در صورتی که پوشه‌ی public_html یا پرونده‌های درون آن دارای این Context باشند ، وب سرور Apache اجازه‌ی دسترسی به آن‌ها را نخواهد داشت.
  • برای حل این مشکل نیاز است تا Context بخش Type از حالت پیش‌فرض که user_home_t می‌باشد به httpd_sys_content_t تغییر یابد.
  • برای این منظور به صورت زیر عمل نمایید.
# chcon -R -t httpd_sys_content_t /home/user/public_html/
  • نکته : با فعال بودن SELinux و اعمال تغییرات بالا ، زمانی که کاربر پرونده‌های دیگری درون public_html ایجاد نماید ، Context بخش Type آن پرونده‌ها به صورت خودکار بر روی httpd_sys_content_t تنظیم خواهد شد.
  • برای مشاهده‌ی تغییرات به صورت زیر عمل نمایید.
$ ls -dZ public_html/
drwxrwxr-x user user user_u:object_r:httpd_sys_content_t public_html/


$ ls -Z public_html/
-rw-rw-r-- user user user_u:object_r:httpd_sys_content_t index.html
-rw-rw-r-- user user root:object_r:httpd_sys_content_t page.html
-rw-rw-r-- user user root:object_r:httpd_sys_content_t sample.html

  • تشت شده بر روی CentOS 5.8

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *