প্রশ্ন লিনাক্স ওয়েব সার্ভারে আমার ওয়েবসাইট ফাইল / ফোল্ডারগুলির কোন অনুমতিগুলি থাকা উচিত?


এটা একটা ক্যানোনিকাল প্রশ্ন একটি লিনাক্স ওয়েব সার্ভারে ফাইল অনুমতি সম্পর্কে।

আমার একটি লিনাক্স ওয়েব সার্ভার রয়েছে যা Apache2 চালাচ্ছে যা বেশ কয়েকটি ওয়েবসাইট হোস্ট করে। প্রতিটি ওয়েবসাইট তার নিজস্ব ফোল্ডার / var / www / আছে।

/var/www/contoso.com/
/var/www/contoso.net/
/var/www/fabrikam.com/

বুট ডিরেক্টরি / var / www / root দ্বারা মালিকানাধীন: root। Apache www-data হিসাবে চলছে: www-data। ফ্যাব্রিকাম ওয়েবসাইট দুটি ডেভেলপার, এলিস এবং বব দ্বারা পরিচালিত হয়। উভয় Contoso ওয়েবসাইট এক বিকাশকারী দ্বারা পরিচালিত হয়, ইভ। সমস্ত ওয়েবসাইট ব্যবহারকারীদের ছবি আপলোড করার অনুমতি দেয়। একটি ওয়েবসাইট আপোস করা হয়, প্রভাব যতটা সম্ভব সীমাবদ্ধ হওয়া উচিত।

আমি অনুমতিগুলি সেট আপ করার সেরা উপায় জানতে চাই যাতে আপ্যাচি সামগ্রী সরবরাহ করতে পারে, ওয়েবসাইট আক্রমণ থেকে নিরাপদ, এবং ডেভেলপাররা এখনও পরিবর্তন করতে পারে। ওয়েবসাইটগুলির মধ্যে একটি এটির মতো গঠন করা হয়েছে:

/var/www/fabrikam.com
    /cache
    /modules
    /styles
    /uploads
    /index.php

কিভাবে এই ডিরেক্টরি এবং ফাইল উপর অনুমতি করা উচিত? আমি কোথাও পড়ি যে আপনি কোনও ওয়েবসাইটে 777 অনুমতিগুলি ব্যবহার করতে পারবেন না, তবে আমি বুঝতে পারছি না যে কোন সমস্যাগুলি হতে পারে। ব্যস্ত সময়ের মধ্যে, ওয়েবসাইটটি স্বয়ংক্রিয়ভাবে কিছু পৃষ্ঠা ক্যাশে করে এবং ফলাফলগুলি ক্যাশ ফোল্ডারে সংরক্ষণ করে। ওয়েবসাইট দর্শকদের দ্বারা জমা কন্টেন্ট সব আপলোড ফোল্ডারে সংরক্ষিত হয়।


284
2018-02-06 01:50


উত্স


এই একটি হতে উদ্দেশ্যে করা হয় আনুশাসনিক আমরা ওয়েবসাইট অনুমতি সম্পর্কে পেতে সব প্রশ্নের উত্তর। - Nic
"আমি কোথাও পড়ি যে আপনি কোনও ওয়েবসাইটে 777 অনুমতিগুলি ব্যবহার করতে পারবেন না, কিন্তু আমি বুঝতে পারছি না ..." - তাহলে পাঠক বুঝতে পারবেন নাকি অন্তত এখানে উত্তরগুলির যোগ্যতার তুলনা করতে পারবেন? কোন সমাধান নির্দিষ্ট প্রয়োজনীয়তা উপর ভিত্তি করে করা উচিত - এখানে প্রয়োজনীয়তা যথেষ্ট নির্দিষ্ট নয় (হুমকি মডেল কি) - symcbean
আমি আপনাকে Apache সম্পর্কে জিজ্ঞাসা করছি যে ভালোবাসি, কিন্তু মাইক্রোসফ্ট সাধারণত উদাহরণ হিসাবে ব্যবহার করে ডোমেন ব্যবহার করছেন। - gWaldo
এছাড়াও দেখুন Apache2 এর ব্যবহারকারী www-data / var / www এর জন্য অনুমতিগুলি পরিচালনা করার সেরা উপায় কী? - Gareth
লিনাক্সে ওয়েবসাইট ফাইল এবং ফোল্ডারগুলিতে থাকা অনুমতিগুলি সম্পর্কে সম্পূর্ণ বিবরণের জন্য আপনি এখানে উল্লেখ করতে পারেন serverfault.com/questions/124800/...


উত্তর:


কোন অনুমতিগুলি ব্যবহার করতে হবে তা নির্ধারণ করার সময়, আপনার ব্যবহারকারীরা কী এবং তাদের কী প্রয়োজন তা ঠিক করতে হবে। একটি ওয়েবসার্ভার দুটি ধরনের ব্যবহারকারীর সাথে যোগাযোগ করে।

প্রমাণীকৃত ব্যবহারকারীদের সার্ভারে একটি ব্যবহারকারী অ্যাকাউন্ট আছে এবং নির্দিষ্ট বিশেষাধিকার দিয়ে প্রদান করা যেতে পারে। এটি সাধারণত সিস্টেম অ্যাডমিনিস্ট্রেটর, ডেভেলপার এবং পরিষেবা অ্যাকাউন্ট অন্তর্ভুক্ত করে। তারা সাধারণত এসএসএইচ বা এসএফটিপি ব্যবহার করে সিস্টেম পরিবর্তন করে।

নামবিহীন ব্যবহারকারীদের আপনার ওয়েবসাইটে দর্শক হয়। যদিও তাদের কাছে সরাসরি ফাইল অ্যাক্সেস করার অনুমতি নেই তবে তারা তাদের পক্ষে ওয়েব পৃষ্ঠা এবং ওয়েব সার্ভারের জন্য অনুরোধ করতে পারে। আপনি ওয়েব সার্ভার প্রক্রিয়া কি অনুমতি সম্পর্কে সতর্ক থাকার দ্বারা বেনামী ব্যবহারকারীদের অ্যাক্সেস সীমাবদ্ধ করতে পারেন। অনেকেই লিনাক্সের ডিস্ট্রিবিউশনে অপাচে রান করেছেন www-data ব্যবহারকারী কিন্তু এটি বিভিন্ন হতে পারে। ব্যবহার ps aux | grep httpd অথবা ps aux | grep apache আপনার সিস্টেমে অ্যাপাচার ব্যবহারকারী কোন ব্যবহারকারী ব্যবহার করছে তা দেখতে।


লিনাক্স অনুমতি উপর নোট

লিনাক্স এবং অন্যান্য POSIX-compliant সিস্টেমগুলি ঐতিহ্যগত ইউনিক্স অনুমতিগুলি ব্যবহার করে। উইকিপিডিয়া উপর একটি চমৎকার নিবন্ধ আছে ফাইল সিস্টেম অনুমতি তাই আমি এখানে সবকিছু পুনরাবৃত্তি হবে না। কিন্তু আপনি কিছু সচেতন হওয়া উচিত কয়েক জিনিস আছে।

চালানো বিট
ব্যাখ্যা করা স্ক্রিপ্ট (যেমন রুবি, পিএইচপি) কার্যকর অনুমতি ছাড়া ঠিক সূক্ষ্ম কাজ। শুধুমাত্র বাইনারি এবং শেল স্ক্রিপ্ট নির্বাহ বিট প্রয়োজন। একটি ডিরেক্টরি ট্রান্সমিশন (প্রবেশ) করার জন্য, আপনি যে ডিরেক্টরির মধ্যে চালানোর অনুমতি প্রয়োজন। কোনও ডিরেক্টরি তালিকাবদ্ধ করতে বা এর ভিতরে কোনও ফাইল সরবরাহ করার জন্য ওয়েবসার্ভারের এই অনুমতির প্রয়োজন।

ডিফল্ট নতুন ফাইল অনুমতি
যখন একটি ফাইল তৈরি হয়, এটি সাধারণত এটি তৈরি করেছেন এমন গোষ্ঠী আইডিটি উত্তরাধিকারী করে। কিন্তু কখনও কখনও আপনি নতুন ফাইলগুলিকে ফোল্ডার তৈরির জন্য ফোল্ডার আইডি উত্তরাধিকার করতে চান, যাতে আপনি মূল ফোল্ডারে SGID বিট সক্ষম করতে পারেন।

ডিফল্ট অনুমতি মান আপনার umask উপর নির্ভর করে। Umask নতুন তৈরি করা ফাইলগুলি থেকে অনুমতিগুলিকে সাবট্রাক্ট করে, তাই 022 এর সাধারণ মান ফাইলগুলির সাথে 755 তৈরি করা হয়। একটি গ্রুপের সাথে সহযোগিতা করার সময়, আপনার উমাস 002 এ পরিবর্তন করা আপনার পক্ষে উপযোগী, যাতে আপনার তৈরি করা ফাইলগুলি গ্রুপ সদস্যদের দ্বারা সংশোধন করা যেতে পারে। এবং যদি আপনি আপলোড করা ফাইলগুলির অনুমতিগুলি কাস্টমাইজ করতে চান তবে ফাইলটি আপলোড হওয়ার পরে আপনাকে ইউপাস পরিবর্তন করতে হবে অথবা chmod চালাতে হবে।


সমস্যা 777 সঙ্গে

যখন তুমি chmod 777 আপনার ওয়েবসাইট, আপনার কোন নিরাপত্তা আছে। সিস্টেমে যে কোনও ব্যবহারকারী আপনার ওয়েবসাইটের কোনও ফাইল পরিবর্তন বা মুছে ফেলতে পারে। কিন্তু আরো গুরুত্ব সহকারে, মনে রাখবেন যে ওয়েব সার্ভারটি আপনার ওয়েবসাইটে দর্শকদের পক্ষ থেকে কাজ করে এবং এখন ওয়েব সার্ভারটি একই ফাইলগুলিকে সম্পাদন করতে সক্ষম। আপনার ওয়েবসাইটের কোনও প্রোগ্রামিং দুর্বলতা থাকলে, আপনার ওয়েবসাইটকে ক্ষতিগ্রস্ত করার জন্য, ফিশিং আক্রমণগুলি ঢোকাতে বা আপনার সার্ভার থেকে তথ্য চুরি করার জন্য তাদের শোষণ করা যেতে পারে।

উপরন্তু, যদি আপনার সার্ভার রান করে সুপরিচিত বন্দর (যা অ-রুট ব্যবহারকারীদের বিশ্বব্যাপী অ্যাক্সেসযোগ্য শোনাচ্ছে এমন পরিষেবাগুলিকে শোধন করা থেকে বিরত রাখতে হবে), এর অর্থ হল আপনার সার্ভারটিকে অবশ্যই রুট দিয়ে শুরু করা উচিত (যদিও কোনও শেন সার্ভার অবিলম্বে পোর্ট আবদ্ধ হওয়ার পরেই কম সুবিধাজনক অ্যাকাউন্টে নামবে) । অন্য কথায়, যদি আপনি কোনও ওয়েব সার্ভার চালাচ্ছেন যেখানে প্রধান এক্সিকিউটেবলটি সংস্করণ নিয়ন্ত্রণের অংশ (যেমন একটি সিজিআই অ্যাপ্লিকেশন), এটির অনুমতিগুলি ছাড়াই (অথবা, সেই ক্ষেত্রে, ধারণকারী ডিরেক্টরির এর অনুমতিগুলি, যেহেতু ব্যবহারকারী নাম পরিবর্তন করতে পারে) এক্সিকিউটেবল) 777 এ অনুমতি দেয় কোন চালানোর জন্য ব্যবহারকারী কোন রুট হিসাবে এক্সিকিউটেবল।


প্রয়োজনীয়তা নির্ধারণ করুন

  • বিকাশকারীদের ফাইলগুলিতে অ্যাক্সেস / লেখার অ্যাক্সেস প্রয়োজন যাতে তারা ওয়েবসাইট আপডেট করতে পারে
  • বিকাশকারীদের ডিরেক্টরিগুলিতে পড়তে / লিখতে / চালানোর প্রয়োজন যাতে তারা চারপাশে ব্রাউজ করতে পারে
  • আপ্যাচি ফাইল এবং ব্যাখ্যা স্ক্রিপ্ট অ্যাক্সেস পড়তে প্রয়োজন
  • Apache প্রয়োজন / পরিবেশনযোগ্য ডিরেক্টরি অ্যাক্সেস চালানো প্রয়োজন
  • Apache আপলোড বিষয়বস্তু জন্য ডিরেক্টরি পড়া / লিখুন / অ্যাক্সেস চালানোর প্রয়োজন

একটি একক ব্যবহারকারী দ্বারা রক্ষণাবেক্ষণ

সাইটটি বজায় রাখার জন্য শুধুমাত্র একজন ব্যবহারকারী দায়ী হলে, ওয়েবসাইটের ডিরেক্টরিতে ব্যবহারকারীর মালিক হিসাবে সেট করুন এবং ব্যবহারকারীকে সম্পূর্ণ rwx অনুমতি দিন। Apache এখনও অ্যাক্সেস প্রয়োজন যাতে এটি ফাইল পরিবেশন করতে পারে, তাই গ্রুপের মালিক হিসাবে www- তথ্য সেট করুন এবং গ্রুপ R-x অনুমতি দেয়।

আপনার ক্ষেত্রে, ইভ, যার ব্যবহারকারীর নাম হতে পারে eve, একমাত্র ব্যবহারকারী যিনি বজায় রাখে contoso.com :

chown -R eve contoso.com/
chgrp -R www-data contoso.com/
chmod -R 750 contoso.com/
chmod g+s contoso.com/
ls -l
drwxr-s--- 2 eve      www-data   4096 Feb  5 22:52 contoso.com

যদি আপনার কাছে এমন ফোল্ডার থাকে যা Apache দ্বারা লেখার প্রয়োজন হয়, তবে আপনি কেবলমাত্র গোষ্ঠীর মালিকের জন্য অনুমতি মানগুলি সংশোধন করতে পারেন যাতে www-data এর লেখার অ্যাক্সেস থাকে।

chmod g+w uploads
ls -l
drwxrws--- 2 eve      www-data   4096 Feb  5 22:52 uploads

এই কনফিগারেশনটির সুবিধাটি যে সিস্টেমটি ব্যবহারকারীদের এবং গোষ্ঠীর মালিকরা আপনার ওয়েবসাইট ডিরেক্টরি ব্রাউজ করতে পারে তার জন্য ব্যবহারকারীদের কাছে এটি কঠিন (কিন্তু অসম্ভব নয়) * হয়ে যায়। আপনার কনফিগারেশন ফাইলগুলিতে গোপন তথ্য থাকলে এটি কার্যকর। আপনার umask সম্পর্কে সতর্ক থাকুন! যদি আপনি এখানে একটি নতুন ফাইল তৈরি করেন তবে অনুমতি মান সম্ভবত 755 এ ডিফল্ট হবে। আপনি চালাতে পারেন umask 027যাতে নতুন ফাইল ডিফল্ট 640 (rw- r-- ---)।


ব্যবহারকারীদের একটি গ্রুপ দ্বারা বজায় রাখা

সাইটটি বজায় রাখার জন্য একাধিক ব্যবহারকারী দায়ী হলে, অনুমতিগুলি বরাদ্দ করার জন্য আপনাকে একটি গ্রুপ তৈরি করতে হবে। প্রতিটি ওয়েবসাইটের জন্য একটি পৃথক গোষ্ঠী তৈরি করা এবং সেই ওয়েবসাইটটির পরে গোষ্ঠীটির নামকরণ করা ভাল।

groupadd dev-fabrikam
usermod -a -G dev-fabrikam alice
usermod -a -G dev-fabrikam bob

পূর্ববর্তী উদাহরণে, আমরা অপেরাকে বিশেষাধিকার দেওয়ার জন্য গ্রুপের মালিককে ব্যবহার করেছি, কিন্তু এখন এটি ডেভেলপার গোষ্ঠীর জন্য ব্যবহৃত হয়। যেহেতু ব্যবহারকারীর মালিক আমাদের জন্য আর দরকারী নয়, তাই এটি রুট হিসাবে সেট করা একটি সুবিধাজনক উপায় যা কোনও বিশেষ সুবিধাগুলি লিক করা হয় না। Apache এখনও অ্যাক্সেস প্রয়োজন, তাই আমরা বাকি বিশ্বের পড়ার অ্যাক্সেস দিতে।

chown -R root fabrikam.com
chgrp -R dev-fabrikam fabrikam.com
chmod -R 775 fabrikam.com
chmod g+s fabrikam.com
ls -l
drwxrwxr-x 2 root     dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

যদি আপনার কাছে এমন ফোল্ডার থাকে যা Apache দ্বারা লিখনযোগ্য হতে হয় তবে আপনি অপেরাকে ব্যবহারকারীর মালিক বা গোষ্ঠীর মালিক বানান করতে পারেন। উভয় উপায়ে, এটি প্রয়োজন সমস্ত এক্সেস থাকবে। ব্যক্তিগতভাবে, আমি এটি ব্যবহারকারীর মালিক তৈরি করতে পছন্দ করি যাতে ডেভেলপাররা এখনও আপলোড ফোল্ডারগুলির সামগ্রী ব্রাউজ এবং সংশোধন করতে পারে।

chown -R www-data uploads
ls -l
drwxrwxr-x 2 www-data     dev-fabrikam   4096 Feb  5 22:52 uploads

যদিও এটি একটি সাধারণ পদ্ধতি, তেমনি একটি নেতিবাচক দিকও রয়েছে। যেহেতু অপাচারে আপনার ওয়েবসাইটটিতে সিস্টেমের অন্যান্য ব্যবহারকারীর একই সুবিধা রয়েছে তাই অন্যান্য ব্যবহারকারীদের জন্য আপনার সাইট ব্রাউজ করা এবং ফাইলগুলিকে গোপন তথ্য থাকতে পারে, যেমন আপনার কনফিগারেশন ফাইলগুলি।

আপনি আপনার কেক থাকতে পারে এবং এটি খুব খাওয়া

এই futher উপর উন্নত হতে পারে। মালিকের পক্ষে গোষ্ঠীর চেয়ে কম সুযোগ সুবিধা থাকা সত্ত্বেও এটি সম্পূর্ণ বৈধ, তাই এটি ব্যবহারকারীর মালিককে রুট হিসাবে বরখাস্ত করার পরিবর্তে, আমরা আপনার ওয়েবসাইটের ডিরেক্টরি এবং ফাইলগুলিতে ব্যবহারকারীর মালিক আপ Apache তৈরি করতে পারি। এটি একক রক্ষণশীল দৃশ্যকল্পের বিপরীত, কিন্তু এটি সমানভাবে ভালভাবে কাজ করে।

chown -R www-data fabrikam.com
chgrp -R dev-fabrikam fabrikam.com
chmod -R 570 fabrikam.com
chmod g+s fabrikam.com
ls -l
dr-xrwx--- 2 www-data  dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

যদি আপনার কাছে এমন ফোল্ডার থাকে যা Apache দ্বারা লিখনযোগ্য হতে হয় তবে আপনি ব্যবহারকারীর মালিকের জন্য অনুমতি মানগুলি সংশোধন করতে পারেন যাতে www-data এর লেখার অ্যাক্সেস থাকে।

chmod u+w uploads
ls -l
drwxrwx--- 2 www-data  dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

এই সমাধানটি নিয়ে সতর্ক হওয়ার জন্য একটি বিষয় হল যে নতুন ফাইল ব্যবহারকারীর মালিক www-data- এ সেট করার পরিবর্তে নির্মাতার সাথে মেলে। তাই আপনি যেকোন নতুন ফাইল তৈরি করবেন যা আপা দ্বারা তাদের চেনা না হওয়া পর্যন্ত পাঠযোগ্য হবে না।


* Apache বিশেষাধিকার বিচ্ছেদ

আমি আগে উল্লেখ করেছি যে অন্য ব্যবহারকারীদের কাছে আপনার ওয়েবসাইটটি ঘুরে বেড়ানোর পক্ষে এটি আসলেই সম্ভব নয়, আপনি কোন ধরণের সুবিধা ব্যবহার করছেন। ডিফল্টরূপে, সমস্ত Apache প্রক্রিয়া একই www-data ব্যবহারকারী হিসাবে চালিত হয়, তাই কোনও আপ্যাচ প্রক্রিয়া একই সার্ভারে কনফিগার করা অন্যান্য সমস্ত ওয়েবসাইট থেকে ফাইলগুলি পড়তে পারে এবং কখনও কখনও পরিবর্তনও করতে পারে। কোনও ব্যবহারকারী যিনি স্ক্রিপ্ট চালানোর জন্য আপাচি পেতে পারেন সেটি একই অ্যাপাকে নিজের কাছে অ্যাক্সেস করতে পারে।

এই সমস্যা মোকাবেলা, বিভিন্ন পদ্ধতি আছে বিশেষাধিকার বিচ্ছেদ Apache মধ্যে। যাইহোক, প্রতিটি পদ্ধতি বিভিন্ন কর্মক্ষমতা এবং নিরাপত্তা ত্রুটি সঙ্গে আসে। আমার মতে, উচ্চ সুরক্ষা প্রয়োজনীয়তা সহ যে কোনও সাইট একটি ভাগ করা সার্ভারে ভার্চুয়াল হোস্ট ব্যবহার করার পরিবর্তে ডেডিকেটেড সার্ভারে চালানো উচিত।


অতিরিক্ত বিবেচ্য বিষয়

আমি আগে এটি উল্লেখ করে নি, কিন্তু সাধারণত এটি ডেভেলপারদের ওয়েবসাইটে সরাসরি সম্পাদনা করার জন্য একটি খারাপ অভ্যাস। বৃহত্তর সাইটগুলির জন্য, আপনি কোন ধরণের রিলিজ সিস্টেম থাকার চেয়ে অনেক ভাল যা সংস্করণ নিয়ন্ত্রণ সিস্টেমের বিষয়বস্তু থেকে ওয়েবসার্ভার আপডেট করে। একক রক্ষণশীল পদ্ধতি সম্ভবত আদর্শ, তবে একজন ব্যক্তির পরিবর্তে আপনার কাছে স্বয়ংক্রিয় সফ্টওয়্যার রয়েছে।

যদি আপনার ওয়েবসাইট আপলোড করার অনুমতি দেয় তবে আপলোডগুলি ওয়েব রুটের বাইরে কোথাও সংরক্ষণ করা উচিত। অন্যথা, আপনি হয়তো খুঁজে পেতে পারেন যে লোকেরা গোপন হওয়ার উদ্দেশ্যে ফাইল ডাউনলোড করছে। উদাহরণস্বরূপ, যদি আপনি শিক্ষার্থীদের নিয়োগ দেওয়ার জন্য অনুমতি দেন, তবে তারা Apache দ্বারা পরিবেশিত নয় এমন একটি ডিরেক্টরিতে সংরক্ষণ করা উচিত। এই গোপন ধারণার কনফিগারেশন ফাইলের জন্যও একটি ভাল পদ্ধতি।

আরো জটিল প্রয়োজনীয়তার সাথে একটি ওয়েবসাইটের জন্য, আপনি এর ব্যবহার দেখতে চাইতে পারেন অ্যাক্সেস কন্ট্রোল তালিকা। এই সুযোগ সুবিধা আরো পরিশীলিত নিয়ন্ত্রণ সক্রিয়।

আপনার ওয়েবসাইটটির জটিল প্রয়োজনীয়তা থাকলে, আপনি সমস্ত স্ক্রিপ্ট সেট আপ করে এমন একটি স্ক্রিপ্ট লিখতে চাইতে পারেন। পুঙ্খানুপুঙ্খভাবে এটি পরীক্ষা করুন, তারপর এটি নিরাপদ রাখা। আপনি কখনও কখনও কিছু কারণে আপনার ওয়েবসাইট পুনর্নির্মাণ প্রয়োজন যদি এটি স্বর্ণ তার ওজন মূল্য হতে পারে।


318
2018-02-06 01:50



"chmod-r 775 fabrikam.com"। বেশিরভাগ ওয়েবসাইটের মধ্যে খুব কম ফাইল এক্সিকিউটেবল হতে হবে; উদাহরণস্বরূপ পিএইচপি স্ক্রিপ্ট হতে পারে 0640 যতক্ষণ ওয়েব সার্ভার তাদের পড়তে পারে। chmod -R একটি + X fabrikam.com শুধুমাত্র ডিরেক্টরিগুলিতে প্রত্যেককে এক্সিকিউটেবল অধিকার দেবে।
চমৎকার বিবরণ! - RNA
ভাল হিসাবে উল্লেখ্য যে Apache ব্যবহারকারী হিসাবে রান apache Red Hat প্রাপ্ত সিস্টেমের উপর। - Michael Hampton♦
এটি চমৎকার, কিন্তু আমি বুঝতে পারিনি এমন একটি জিনিস ছিল: ফাইলের ডিরেক্টরিের ব্যবহারকারী / মালিকের আপাচারের ফাইলটির মালিকানা থাকলে তার লক্ষ্য বা সুবিধাটি আমি বুঝতে পারছি না। - idiotprogrammer
এটি একটি চমৎকার পোস্ট. এখানে আমার অবদান: www-data হিসাবে মালিক এবং dev-fabrikam হিসাবে গ্রুপ ব্যবহার করে নেতিবাচক দল (উল্লেখ আপনি আপনার কেক থাকতে পারে এবং এটি খুব খাওয়া এছাড়াও দেওয়া দৃশ্যকল্প (বিপরীত) প্রযোজ্য একটি একক ব্যবহারকারী দ্বারা রক্ষণাবেক্ষণ। এই পরিস্থিতিতে, যখনই অ্যাপাচি কোনও ফোল্ডার বা ফাইল তৈরি করে, তখন ব্যবহারকারীর কাছে এটি অ্যাক্সেস থাকবে না যাতে ফাইলগুলি আসল ব্যবহারকারীতে ফিরিয়ে আনা দরকার। আমি উত্তরটি আপডেট করিনি কারণ আমার বিবৃতি সম্পর্কে আমি 100% নিশ্চিত নই। আমি বরং উত্তর patching আগে এটি নিশ্চিত করতে চাই।


আমি ভাবছি কেন অনেকে (Apache (এবং / অথবা পিএইচপি) কী করতে পারে তা নিয়ন্ত্রণের জন্য লিনাক্সের "অন্যান্য" (ও) অংশটি ব্যবহার করে (কেননা) অনেক লোক ব্যবহার করেন (বা সুপারিশ করেন)। "0" এর চেয়ে অন্য কিছুতে এই সঠিক অংশটি সেট করে, আপনি পুরো বিশ্বের ফাইল / ডিরেক্টরিতে কিছু করার অনুমতি দিন।

আমার পদ্ধতি অনুসরণ করা হয়:

  • আমি দুটি পৃথক ব্যবহারকারী তৈরি। SSH / SFTP অ্যাক্সেসের জন্য (যদি প্রয়োজন হয়), যা সমস্ত ফাইলের মালিক এবং পিএইচপি FastCGI ব্যবহারকারীর জন্য একটি (ব্যবহারকারী হিসাবে ওয়েবসাইট চালানো হবে)। এর যথাক্রমে এই ব্যবহারকারী কল দোলক এবং বব-WWW
  • দোলক পূর্ণ অধিকার থাকবেrwx ফোল্ডারে, rw- ফাইলগুলিতে), যাতে সে পুরো ওয়েবসাইটটি পড়তে এবং সম্পাদনা করতে পারে।
  • পিএইচপি FastCGI প্রক্রিয়া প্রয়োজন R-এক্স ফোল্ডার এবং অধিকার r-- ফাইলগুলিতে অধিকার, যেমন খুব নির্দিষ্ট ফোল্ডার ছাড়া cache/ অথবা uploads/, যেখানে "লিখুন" অনুমতি প্রয়োজন হয়। পিএইচপি FastCGI এই ক্ষমতা দিতে, এটি হিসাবে চালানো হবে বব-WWW, এবং বব-WWW স্বয়ংক্রিয়ভাবে তৈরি করা হবে দোলক গ্রুপ।
  • আমরা এখন নিশ্চিত যে সমস্ত ডিরেক্টরি এবং ফাইল মালিক এবং গ্রুপ বব bob
  • কিছু অনুপস্থিত: এমনকি আমরা FastCGI ব্যবহার করি, তবে আপ্যাচি এখনও স্ট্যাটিক কন্টেন্ট, বা .htaccess ফাইলগুলির জন্য অ্যাক্সেস পড়ার দরকার, যা এটি পড়ার চেষ্টা করবে AllowOverride আর অন্য কিছু সেট করা হয় None। ব্যবহার করা এড়াতে  অধিকার অংশ, আমি যোগ করুন WWW-ডেটা ব্যবহারকারী যাও দোলক গ্রুপ।

এখন:

  • বিকাশকারী কী করতে পারে তা নিয়ন্ত্রণ করতে, আমরা এর সাথে খেলতে পারি তোমার দর্শন লগ করা অধিকার অংশ (কিন্তু নীচের এই নোট)।
  • আপাচি এবং পিএইচপি কি করতে পারে তা নিয়ন্ত্রণ করতে আমরা খেলতে পারি  অধিকার অংশ।
  • দ্য  অংশ সবসময় 0 সেট করা হয়, তাই সার্ভারে অন্য কেউ ওয়েবসাইট পড়তে বা সম্পাদনা করতে পারেন।
  • যখন কোন সমস্যা নেই দোলক ব্যবহারকারী নতুন ফাইল তৈরি করে, কারণ এটি স্বয়ংক্রিয়ভাবে তার প্রধান গোষ্ঠীর অন্তর্গত হবে (দোলক)।

এটি একটি পুনরাবৃত্তি, কিন্তু এই অবস্থায়, দোলক SSH অনুমোদিত হয়। যদি কোনও ওয়েবসাইট ব্যবহারকারীকে ওয়েবসাইট সংশোধন করার অনুমতি দেয় না (উদাহরণস্বরূপ, গ্রাহক শুধুমাত্র সিএমএস অ্যাডমিন প্যানেলের মাধ্যমে ওয়েবসাইটটি সংশোধন করে এবং লিনাক্সের জ্ঞান নেই), তবে দুই ব্যবহারকারী তৈরি করুন তবে /bin/falseশেল হিসাবে দোলক পাশাপাশি, এবং তার লগইন নিষ্ক্রিয়।

    adduser --home /var/www/bobwebsite --shell /bin/bash bob
    adduser --no-create-home --shell /bin/false --disabled-login --ingroup bob bob-www
    adduser www-data bob
    cd /var/www/bobwebsite
    chown -R bob:bob .
    find -type d -exec chmod 750 {} \;
    find -type f -exec chmod 640 {} \;

বিঃদ্রঃ : মানুষ যে সীমাবদ্ধ ভুলবেন না ঝোঁক তোমার দর্শন লগ করা (মালিক) অধিকার বেশিরভাগ সময় নিরর্থক এবং অনিরাপদ, কারণ ফাইলের মালিক রান করতে পারেন chmod আদেশ, এমনকি অধিকার 000 হয়।

আমার পদ্ধতির কিছু নিরাপত্তা সমস্যা থাকলে আমাকে বলুন, কারণ আমি 100% নিশ্চিত নই, তবে এটি আমি ব্যবহার করছি।

আমি মনে করি এই কনফিগারটির একটি সমস্যা আছে: যখন পিএইচপি / অ্যাপাচি একটি নতুন ফাইল তৈরি করে (উদাহরণস্বরূপ আপলোড), তখন এটি অন্তর্গত হবে বব-WWW: বব, এবং দোলক শুধুমাত্র এটি পড়তে সক্ষম হবে। হয়তো ডিরেক্টরি উপর setuid সমস্যা সমাধান করতে পারেন।


13
2017-07-19 21:42



লিনাক্স উপেক্ষা করে setuid। নতুন ফাইল সর্বদা নির্মাতার মালিকানাধীন। - Paul
আমি কিছু বুঝতে পারছি না। এটি যখন একাধিক বিকাশকারী ওয়েবসাইটটিতে একযোগে কাজ করে তখন পরিস্থিতিটি একত্রিত করে বলে মনে হচ্ছে না, কারণ এটি শুধুমাত্র ব্যবহারকারী bob। আপনি কিভাবে মোকাবেলা করবেন? যেমন। ssh এর মাধ্যমে, উভয় ব্যবহারকারী bob হিসাবে লগ ইন করুন। বব (1) মনে করেন যে সে পাসওয়ার্ডটি মনে রাখতে পারে না এবং অন্যকে এটি পরিবর্তন করতে পারে তবে এখনও নিরাপদ। bob (2) পরের বার লগ ইন করার চেষ্টা করে, এবং সে / সে পারে না। - n611x007
@ নকক্স যে কোনও অর্থে ভাল সিস্টেমটি সরাসরি কোনও ডেভেলপারদের ওয়েবসাইটে সরাসরি সংশোধন করা উচিত নয়। আদর্শভাবে, ওয়েবসাইটটি সংস্করণ নিয়ন্ত্রণের অধীনে রয়েছে যেমন ব্যবহারকারীর অ্যাকাউন্ট 'বব' স্বয়ংক্রিয়ভাবে মুক্তি (প্রতিটি) স্থিতিশীল করে এবং স্থাপন করে। সুতরাং, বিকাশকারীরা ডেভেলপমেন্ট অফসাইট করে এবং স্থাপনার সার্ভারে push করার পরে পরিবর্তনগুলি স্থাপন করা হয়। 'বোব' একটি সিস্টেম ব্যবহারকারী যার খুব সীমিত নেটওয়ার্ক অনুমতি থাকা উচিত, যা দূরবর্তী লগইন অন্তর্ভুক্ত করে না; iptables আসলে আপনি এই মত স্টাফ জন্য UID দ্বারা ফিল্টার করতে পারবেন। - Parthian Shot
"আমি ভাবছি কেন এত লোক" অন্যান্য "(ও) অংশটি ব্যবহার করে (বা সুপারিশ করে)" - তারপরে আপনাকে উত্তর দেওয়ার পরিবর্তে এটি একটি প্রশ্ন হিসাবে পোস্ট করেছেন। সমর্থন, বিকাশ, প্রশাসক অ্যাকাউন্টগুলিও বিভিন্ন অ্যাক্সেসের প্রয়োজন হলে সর্বনিম্ন স্তরের বিশেষাধিকার সহ ইচ্ছাকৃতভাবে ওয়েব সার্ভার (সিস্টেমের সবচেয়ে উন্মুক্ত অংশ হিসাবে) চালানো অসাধারণ নয়। - symcbean


উপরোক্ত চমৎকার উত্তরটিতে গুগল র্যাঙ্ক দেওয়া, আমি মনে করি এক জিনিস যা উল্লেখ করা উচিত, এবং উত্তর দেওয়ার পরে আমি একটি নোট ছেড়ে যেতে পারছি না।

উদাহরণস্বরূপ, যদি আপনি ডিরেক্টরী (অথবা ফাইল) -এ 570 অনুমতিগুলির সাহায্যে www-data হিসাবে মালিক এবং dev-fabrikam গ্রুপ হিসাবে ব্যবহার করার পরিকল্পনা করেন তবে এটি উল্লেখ করা গুরুত্বপূর্ণ লিনাক্স উপেক্ষা করে  setuid, তাই নতুন ফাইলগুলি ব্যবহারকারীর মালিকানাধীন হবে যা তাদের তৈরি করেছে। এর অর্থ হল যে নতুন ডিরেক্টরি এবং ফাইল তৈরি করার পরে আপনাকে অনুরূপ কিছু ব্যবহার করতে হবে:

chown -R www-data /newdirectory/
chmod -R 570 /newdirectory/

র্যাকস্পেস ওপেন স্ট্যাকের জন্য উবুন্টু 12.04-এ আমার একটি বিরাট সমস্যা ছিল, যেখানে আমি সার্ভারটি পুনরায় বুট না হওয়া পর্যন্ত 570 টি অনুমতি পাওয়ার অনুমতি পাচ্ছি না, যা জাগ্রতভাবে সমস্যাটির সমাধান করে। আপাতদৃষ্টিতে সহজ সমস্যা উপর একটি বৃদ্ধি হারে চুল হারানো ছিল ....


9
2018-01-13 22:03



দয়া করে এটি গুগলেড করা যাক: রাস্পবিয়ানতে (রাশিবেরি পিআইএতে উকুন, যদি আপনি lighttpd (বা অন্য ওয়েব ব্রাউজার) এর অধীনে / var / www এর মালিকানা পরিবর্তন করতে চান তবে আপনাকে অবশ্যই পুনরায় বুট করতে হবে। - gbronner
@gbronner যদি রেজোলিউশনটি খুঁজে পেতে এটি একটি কঠিন সমস্যা হয় তবে আপনি এটি একটি প্রশ্ন হিসাবে পোস্ট করতে এবং প্রশ্নটির উত্তর দিতে বিবেচনা করতে পারেন। তবে, এটি সম্ভবত একটি ভিন্ন SE Q & A সাইটে বেশি উপযুক্ত। আমার অনুমান ইউনিক্স এবং লিনাক্স যে করতে একটি ভাল জায়গা হতে পারে। - Paul
এছাড়াও raspberrypi.stackexchange.com আছে; মনে হচ্ছে এসই সাইটগুলো একটু বুদ্ধিমান। - gbronner
@ গব্রননার লোল। আমি যে এক সম্পর্কে জানি না! U & L এ রাস্পিয়ান ট্যাগটিতে 120 টি প্রশ্ন রয়েছে। - Paul


আমি এই কনফিগারেশন দিয়ে যাচ্ছে:

  1. মালিকদের এক সেট আপলোড ছাড়া সমস্ত ডিরেক্টরি root এবং গ্রুপ root, অনুমতি 0755
  2. সমস্ত ফাইল মালিক সেট root এবং গ্রুপ root, অনুমতি 0644
  3. মালিক সেট ডিরেক্টরি সেট আপ root, গ্রুপ www-data, অনুমতি 1770। চটচটে বিট গ্রুপ মালিককে ডিরেক্টরি এবং ফাইলগুলি সরিয়ে ফেলতে বা পুনঃনামকরণ করতে দেয় না।
  4. আপলোড ফোল্ডারের সাথে একটি নতুন ডিরেক্টরি ভিতরে www-data মালিক ব্যবহারকারী এবং গ্রুপ, এবং 0700 প্রতিটি জন্য অনুমতি www-data ফাইল আপলোডকারী ব্যবহারকারী।
  5. Apache কনফিগারেশন:

অস্বীকার করা AllowOverride এবং Index আপলোড ডিরেক্টরির মধ্যে, যাতে অপাচ পড়া না .htaccess ফাইল, এবং আপাচি ব্যবহারকারী আপলোড ফোল্ডারের সামগ্রী সূচী করতে পারে না:

<Directory /siteDir>
   Options -Indexes
</Directory>

<Directory /siteDir/uploadDir>
   AllowOverride none
</Directory>

6। php.ini কনফিগারেশন:

open_basedir = /siteDir:/tmp:/usr/share/phpmyadmin
post_max_size = 5M
file_uploads = On
upload_max_filesize = 3M
max_file_uploads = 20

এই কনফিগারেশন সঙ্গে, দী www-data ব্যবহারকারী ছাড়া অন্য ডিরেক্টরি ভিতরে পেতে সক্ষম হবে না siteDir/  /tmp এবং /usr/share/phpmyadmin। এছাড়াও আপনি একই অনুরোধে আপলোড করতে সর্বাধিক ফাইলের আকার, সর্বোচ্চ পোস্টের আকার এবং সর্বাধিক ফাইলগুলি নিয়ন্ত্রণ করতে পারেন।


3
2017-10-23 09:54





যখন আপনার "লিও" নামক একটি FTP ব্যবহারকারীর উদাহরণ example.com ওয়েব ডিরেক্টরিতে ফাইল আপলোড করার প্রয়োজন হয় এবং আপনার "apache" ব্যবহারকারীকে ক্যাশ ডিরেক্টরিতে আপলো-ফাইল / সেশন / ক্যাশে ফাইল তৈরি করতে সক্ষম হওয়ার প্রয়োজন হয় তবে নিম্নরূপ:

এই কমান্ডটি মালিক এবং গোষ্ঠী হিসাবে exampleo এ apache হিসাবে লিওকে নিয়োগ করে, apache ব্যবহারকারী গ্রুপ apache এর একটি অংশ তাই এটি apache গ্রুপের অনুমতিগুলি উত্তরাধিকারী হবে

chown -R leo: apache example.com

আরেকটি কমান্ড যা সঠিক অনুমতি দেয় এবং নিরাপত্তা উদ্বেগও পূরণ করে।

chmod-R 2774 example.com

এখানে প্রথম সংখ্যা 2 ডিরেক্টরি জন্য এবং বীমা তৈরি করা প্রতিটি নতুন ফাইল একই গ্রুপ এবং মালিক অনুমতি থাকবে। 77 মালিক এবং দলের মানে তাদের পূর্ণ অ্যাক্সেস আছে। 4 অন্যদের জন্য মানে তারা শুধুমাত্র ট্রাফ পড়তে পারেন।

নিম্নলিখিত অনুমতি সংখ্যা বুঝতে সাহায্যকারী

Number  Octal Permission Representation
0   No permission
1   Execute permission
2   Write permission
3   Execute and write permission: 1 (execute) + 2 (write) = 3
4   Read permission
5   Read and execute permission: 4 (read) + 1 (execute) = 5
6   Read and write permission: 4 (read) + 2 (write) = 6
7   All permissions: 4 (read) + 2 (write) + 1 (execute) = 7

3
2017-08-09 07:15