PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : open_basedir ایجاد امنیت با استفاده از فایل .user.ini



alimosavi
September 4th, 2015, 18:07
با سلام

من یک اسکریپت برای سی پنل نوشتم که با ایجاد اکانت جدید یک فایل .user.ini داخل پوشه public_html با نام user.ini می سازه و مقدار زیر رو در اون ست می کنه :



open_basedir = /home/username/:/tmp:/usr/local/lib/

همه چه عالی هست . اما یک مشکل هست مجبورم پریمش رو 644 ست کنم تا اجرا بشه . با این وجود که صاحب فایل root هست ولی کاربر می تونه اونو با فایل منجر سی پنل باز و ویرایش کنه . در هر حال بالاتر از /home نمی تونه ست بشه ولی خب بازم از لحاض امنیتی مشکلزاست .

راهکار چیست ؟

OnlineServer
September 5th, 2015, 02:08
دلیل اینکه شما میخواهید برای هر کاربر یک open_basedir جدا تعریف کنید چیست ؟

alimosavi
September 5th, 2015, 13:10
دلیل اینکه شما میخواهید برای هر کاربر یک open_basedir جدا تعریف کنید چیست ؟

خب ایطوری کدهای php فقط به داخل پوشه همون یوزر دسترسی داره .
مثلا این فایل رو نگاه کنید : http://sys.science/new/index.php

Yas-Host
September 5th, 2015, 15:05
سلام.

شما می توانید open_basedir مقدار زیر را در php.ini اصلی سرور تعریف کنید :

/home/:/usr/lib/php:/usr/local/lib/php:/tmp

alimosavi
September 5th, 2015, 15:24
سلام.

شما می توانید open_basedir مقدار زیر را در php.ini اصلی سرور تعریف کنید :

/home/:/usr/lib/php:/usr/local/lib/php:/tmp

ممنون همینکارو کردم قبلا. حالا با این روش بازم دسترسی رو محدود می شه کرد به داخل خود اکانت . با فعال بودن suphp
مثلا برای اکانت ali
open_basedir = /home/ali/:/tmp:/usr/local/lib/

من جواب گرفتم و فعالیت کدهای به داخل پوشه /home/ali محدود شده ( البته با تعیین پریمشن هم می شه اینکارو کرد) . الان می خوام با پریمشن کاری کنم که یوزر نتونه فایل user.ini داخل public_html خودش رو به هیچ صورتی ویرایش کنه .
الان روی 644 (با owner root ) ست کردم . اگر سطحشو پایینتر بیارم این گزینه اعمال نمی شه . خودتون یک تستی کنید ببینید کاراییشو ..

nginxweb
September 5th, 2015, 15:28
ممنون همینکارو کردم قبلا. حالا با این روش بازم دسترسی رو محدود می شه کرد به داخل خود اکانت . با فعال بودن suphp
مثلا برای اکانت ali
open_basedir = /home/ali/:/tmp:/usr/local/lib/

من جواب گرفتم و فعالیت کدهای به داخل پوشه /home/ali محدود شده ( البته با تعیین پریمشن هم می شه اینکارو کرد) . الان می خوام با پریمشن کاری کنم که یوزر نتونه فایل user.ini داخل public_html خودش رو به هیچ صورتی ویرایش کنه .
الان روی 644 (با owner root ) ست کردم . اگر سطحشو پایینتر بیارم این گزینه اعمال نمی شه . خودتون یک تستی کنید ببینید کاراییشو ..


درود

دوست عزیز جدا از ownership میتوانید Read only کنید فایل فوق را که یوزر نتواند تغییر دهد و همینطور میتوان از chattr freez استفاده کرد و فایل فوق را فریز نمود.

alimosavi
September 5th, 2015, 15:51
درود

دوست عزیز جدا از ownership میتوانید Read only کنید فایل فوق را که یوزر نتواند تغییر دهد و همینطور میتوان از chattr freez استفاده کرد و فایل فوق را فریز نمود.

ممنون از شما. حالا در کل شیوه خوبی هست اینکار ؟ یعنی همین تعیین open_basedir داخل این فایل ؟