• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مفهوم ownership در مبحث file permission چیست؟
#1
سلام
دارم یه آموزش درباره file permissions میبینم که به یجاش رسیدم که میگه باید اول ownership اون فایلو عوض کنیم که میگه یا باید www باشه یا apache..
منظورش چیه؟ درواقع این همون فانکشن chown هستش دیگه..
مثلا توی یه سیستم عامل owner یه فایل کیه؟
یا توی فایلای سایتمون زمانی که آپلود شدن اون موقع owner کیه؟
واینکه زمانی که داریم با (xampp(apache کار میکنیم owner کیه؟

باتشکر فراوانBig Grin
  پاسخ
تشکر شده توسط :
#2
خب owner تاجاییکه یادمه کاربری هست که پراسسی که فایل رو ایجاد میکنه تحت اون کاربر اجرا میشه.
مثلا این پراسس اگر آپاچی باشه، کاربر آپاچی، معمولا apache یا www خلاصه یه کوفتی هست دیگه!
وقتی با FTP فایل آپلود میکنید اونوقت کاربری که ftp تحتش اجرا میشه.

این قضایا بعضی وقتا باعث مشکلاتی میشه که کسانی که وارد نباشن رو سرگیجه میکنه، چون برنامه اونطوری که پیشبینی میشه و مثلا روی سیستم خودشون هم تست کردن مشکلی نداشته کار نمیکنه.
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۵ آذر ۰۴, ۰۵:۵۴ ب.ظ)vahid1993 نوشته: سلام
دارم یه آموزش درباره file permissions میبینم که به یجاش رسیدم که میگه باید اول ownership اون فایلو عوض کنیم که میگه یا باید www باشه یا apache..
منظورش چیه؟ درواقع این همون فانکشن chown هستش دیگه..
مثلا توی یه سیستم عامل owner یه فایل کیه؟
یا توی فایلای سایتمون زمانی که آپلود شدن اون موقع owner کیه؟
واینکه زمانی که داریم با (xampp(apache کار میکنیم owner کیه؟

باتشکر فراوانBig Grin

سلام دوست عزیز،

حتماً میدانید که در سیتم عامل‌‌های یونیکس و شبه یونیکس از جمله لینوکس، هر پروسه (Process) و فایل یک مالک دارد. هیچ فایل یا پروسه‌ای در لینوکس وجود ندارد که مالکی نداشته باشد.
مالک اصلی (یا کاربر اصلی) root است. root می‌تواند تمام فایل‌ها و پروسه‌ها را ایجاد، ویرایش و حذف کند.

بنابراین؛ زمانی که یک وب سرور، مثل آپاچی، راه اندازی میشه باید پروسهٔ ایجاد شده یک مالک داشته باشد. در اکثر سیستم‌های لینوکسی، کاربری به نام www-data وجود دارد (با UID و GID شمارهٔ 33) که کمترین دسترسی‌ها به سیستم را داراست. چون دسترسی‌های آن محدود است برای سرویس‌های عمومی مثل وب سرور مناسب است.

راه‌اندازی وب سرور با کاربر‌های دیگر، بخصوص با root اگر در محیط کنترل شده نباشد مثل خودکشی است...

خوب به همین ترتیب FTP، mail ... هم کاربرهای خود را دارند. اما ....
اما فراموش نکنید که PHP یا PERL‌ یا PYTHON و ... که با وب سرور، سر و کار دارند ارتباطی به کاربر Apache ندارند. آنها هم هر کدام باید پروسه و مالک خود را داشته باشند. در PHP با استفاده از FPM در nginx‌ یا suPHP و Mode_PHP در آپاچی، مالک پروسه PHP مشخص میشود و کسی که صاحب پروسه است مالک فایل آپلود شده میشود. وب سرور در حقیقت یک پل ارتباطی است.

مالک Apache در فایل httpd.conf در پوشه آپاچی قابل تغیر است.

مالکیت در لینوکس گاهی بسیار پیچیده است و صد البته که نقش کلیدی در امنیت دارد.

امیدوارم توضیحات من به شما کمک کرده باشد.

شاد باشید.
  پاسخ
تشکر شده توسط : qoruti
#4
(۱۳۹۵ آذر ۲۱, ۰۷:۳۴ ب.ظ)alibakhtiar نوشته: راه‌اندازی وب سرور با کاربر‌های دیگر، بخصوص با root اگر در محیط کنترل شده نباشد مثل خودکشی است...
بعضی سرورهای وب مثل آپاچی رو اصلا نمیشه با root اجرا کرد. یعنی برنامه نویسانش در کد منبعش کدی گذاشتن که این رو چک میکنه و اجازه نمیده.
ضمنا نه تنها root، بلکه هر کاربری که آیدی عددی 0 رو داشته باشه اجازه نمیده، چون دسترسی هر کاربر با آیدی صفر مساوی root است.
البته آدم اگر بخواد و بره دنبالش طبیعتا میتونه این کد رو غیرفعال کنه.

نقل قول:اما فراموش نکنید که PHP یا PERL‌ یا PYTHON و ... که با وب سرور، سر و کار دارند ارتباطی به کاربر Apache ندارند. آنها هم هر کدام باید پروسه و مالک خود را داشته باشند. در PHP با استفاده از FPM در nginx‌ یا suPHP و Mode_PHP در آپاچی، مالک پروسه PHP مشخص میشود و کسی که صاحب پروسه است مالک فایل آپلود شده میشود. وب سرور در حقیقت یک پل ارتباطی است.
اینا که گفتید برای موقعی هست که PHP به شکل CGI/FastCGI اجرا میشه، و اگر PHP بصورت ماجول آپاچی اجرا بشه (mod_php) اونوقت PHP هم بعنوان جزیی از پراسس آپاچی اجرا میشه و بنابراین همون کاربری رو خواهد داشت که آپاچی داره.
درمورد بقیهء زبانها مثل پایتون هم قاعدتا باید همینطور باشه.
  پاسخ
تشکر شده توسط : Alaa
#5
نقل قول:بعضی سرورهای وب مثل آپاچی رو اصلا نمیشه با root اجرا کرد. یعنی برنامه نویسانش در کد منبعش کدی گذاشتن که این رو چک میکنه و اجازه نمیده.
ضمنا نه تنها root، بلکه هر کاربری که آیدی عددی 0 رو داشته باشه اجازه نمیده، چون دسترسی هر کاربر با آیدی صفر مساوی root است.
بله صد در صد درست می‌فرمایید. بسیاری از برنامه‌های با root اجرا نمیشن و بسیاری فقط با root اجرا می‌شوند.

نقل قول:البته آدم اگر بخواد و بره دنبالش طبیعتا میتونه این کد رو غیرفعال کنه.
بله درسته. ربطی به این موضوع نداره اما من پیشنهاد میکتم Apache را همیشه از سورس نصب کنید.

نقل قول:اینا که گفتید برای موقعی هست که PHP به شکل CGI/FastCGI اجرا میشه، و اگر PHP بصورت ماجول آپاچی اجرا بشه (mod_php) اونوقت PHP هم بعنوان جزیی از پراسس آپاچی اجرا میشه و بنابراین همون کاربری رو خواهد داشت که آپاچی داره.
بله، من به طور کلی عرض کردم و جزییات را بیان نکردم.

نقل قول:درمورد بقیهء زبانها مثل پایتون هم قاعدتا باید همینطور باشه.
بله همینطوره، تازه Python و Perl و ... که میتونن وب سرور خود را داشته باشن و دیگه نیازی به ماژول و CGI و FastCGI ندارند.
البته با PHP هم میشه وب سرور نوشت من امتحان کردم... فقط برای تست خوبه.

ممنون.
زبان فقط C. سیستم عامل فقط Linux.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان