আপনার নিজের ডিরেক্টরি ডিরেক্টরি থেকে কোনও ওয়েবসাইট চালানো উচিত নয় । কখনোই না। আপনাকে অন্যথায় ওয়েব সার্ভারটি অতিক্রম করার ক্ষমতা দিতে হবে- ওয়েব সার্ভারটি আপনার হোম ডিরেক্টরিটি সেই অবস্থানটিতে পৌঁছাতে সক্ষম হতে হবে যা সিমলিংকটিনির্দেশ করে, যা এখনও সেই সুরক্ষা ঝুঁকি তৈরি করে।/home/
ডিরেক্টরি কাঠামোটি দেখতে মধ্যেও /home/$USER/
(আপনার ব্যবহারকারীর হোম ডিরেক্টরি, যেখানে আমরা চেষ্টা করতে পারি এবং আপনার ব্যবহারকারীর ডিরেক্টরিতে কী রয়েছে তা দেখতে পাই) পাশাপাশি অন্য কোনও সাবফোল্ডারও দিতে হবে সেখানে. একটি দুর্বল-কনফিগার করা বা ভুল কনফিগার করা বা অপরিশোধিত ওয়েব সার্ভারের ফলে এইভাবে বিশাল ডেটা ফাঁস হতে পারে, বা শংসাপত্রগুলির ক্ষতি হতে পারে যা আপনার ব্যক্তিগত ডেটা এবং লগইনগুলিকে বিভিন্ন জিনিসে ঝুঁকির মধ্যে ফেলতে পারে। আপনি যে সিমলিংক পদ্ধতিটি ব্যবহার করছেন সেটি অ্যাপাচি পড়ার অনুমতি দেওয়ার চেষ্টা করার মতো কারণ হিসাবে কার্যকর হয় না/home/andre/www/moodle
/var/www/html
প্রথমত, ব্যবহার করুন sudo cp -r /home/andre/www/moodle/ /var/www/html/
। এটি আপনার ফাইলগুলিকে অনুলিপি করবে /var/www/html
এবং এটিকে আপনার নিজের হোম ডিরেক্টরি থেকে দূরে রাখবে। এরপরে আমরা অনুমতিগুলি আবারও করব যাতে আপনি এবং ওয়েব সার্ভার সেই ডিরেক্টরিতে থাকা সমস্ত কিছু অ্যাক্সেস করতে এবং আপনার ব্যবহারকারীকে সমস্ত ফাইল এবং ডিরেক্টরিতে সম্পূর্ণ পঠন / লেখার সুযোগ দিতে পারেন। তারপরে, আপনাকে কেবল /var/www/html
নিজের সাইটের জন্য কাজ করতে হবে ।
আপনি কার্যকরভাবে আপনার ডেটা অনুলিপি করার পরে, চারটি পদক্ষেপ কার্যকর হয় /var/www/html
:
- ফোল্ডার এবং ফাইলগুলিতে অ্যাপাচিকে অ্যাক্সেস দিন, যাতে এটি 403 ত্রুটি ছাড়াই সাইট পরিবেশন করতে পারে।
- আপনার ব্যবহারকারীকে ফাইল এবং ফোল্ডারগুলির উপরে 'মালিক' দিন এবং সমস্ত ফাইল এবং ফোল্ডারগুলিতে নিজেকে পড়তে / লেখার পাশাপাশি ডিরেক্টরিগুলি পেরিয়ে যাওয়ার ক্ষমতা দিন।
- (Butচ্ছিক তবে প্রস্তাবিত) এটি এমন সেট আপ করুন যে ডিরেক্টরি কাঠামোর সম্পূর্ণরূপে এখান থেকে তৈরি যে কোনও ফাইল বা ফোল্ডারগুলির গোষ্ঠী সেট করা আছে
www-data
।
- (Alচ্ছিক) চূড়ান্ত সুরক্ষা ক্লিনআপ, যেখানে আমরা অনুমতি সেট আপ করেছি যাতে আপনি এবং ওয়েব সার্ভার সাইটের ডেটা দেখতে পারেন তবে অন্যান্য ব্যবহারকারীরা সাইটের জন্য ফাইল বা ডিরেক্টরি কাঠামো অ্যাক্সেস করতে পারবেন না।
(1) ফোল্ডার এবং ফাইলগুলিতে অ্যাপাচি অ্যাক্সেসের অনুমতি দিন।
sudo chgrp -R www-data /var/www/html
sudo find /var/www/html -type d -exec chmod g+rx {} +
sudo find /var/www/html -type f -exec chmod g+r {} +
এটি পুনরাবৃত্তভাবে www-data
ফোল্ডার এবং ফাইলগুলির জন্য 'গ্রুপ' সেট করে । এটি তখন ওয়েব সার্ভারকে পুনরাবৃত্তি করতে এবং সাইট ডকুমেন্টের রুট ডিরেক্টরি কাঠামো ( +x
কেবল ডিরেক্টরিগুলির জন্য) অ্যাক্সেস পেতে অনুমতি দেয় । এরপরে এটিও নিশ্চিত করে যে ওয়েব সার্ভারে সমস্ত ফাইলের অনুমতি পড়তে হবে, যাতে সাইট ডেটা পাওয়া যায়।
কিছু ক্ষেত্রে থাকতে পারে যেখানে আপনাকে ওয়েব সার্ভারকে কোনও ফাইল বা ডিরেক্টরিতে লেখার অনুমতি দিতে হবে - এটি করার মাধ্যমে এটি অর্জন করা যেতে পারে sudo chmod g+w /var/www/html/PATH
( PATH
ডিরেক্টরি কাঠামোর ফাইল বা ফোল্ডারের পথ যেখানে আপনাকে প্রয়োগ করতে হবে ওয়েব সার্ভারের জন্য অনুমতি লিখুন)।
বিজ্ঞপ্তি : অনেকগুলি ক্ষেত্রেই এটি কোনও সাইটের কনফিগারেশন (যেমন ডাটাবেস অ্যাক্সেস শংসাপত্রাদি ইত্যাদি) সম্পর্কে 'সুরক্ষিত' তথ্য প্রকাশ করতে পারে এবং সেই পৃথক ফাইল বা ডিরেক্টরিতে সেই ডেটাতে 'অন্যান্য' অ্যাক্সেসের অনুমতিগুলি আপনাকে সরিয়ে ফেলতে হবে নিম্নলিখিত: sudo chmod o-rwx /var/www/html/FILEPATH
( ফাইলের ফোল্ডারের FILEPATH
সাথে সম্পর্কিত পাথের পরিবর্তে /var/www/html
))
এটিও নোট করুন যে ভবিষ্যতে 'নতুন ফাইলগুলি' ৪০৩ টি সমস্যা পেলে, ওয়েব সার্ভারকে তৈরি হওয়া বা অনুলিপি করা এবং অনুলিপি করা ফাইল এবং ফোল্ডারগুলিতে অ্যাক্সেস রাখতে সক্ষম করার জন্য সঠিক অনুমতি দেওয়ার জন্য আপনাকে ভবিষ্যতে এই কমান্ডগুলি আবার চালাতে হতে পারে may www-data
সঠিকভাবে গ্রুপ সেট করা হচ্ছে না ।
(২) আপনার মালিককে ফোল্ডার এবং ফাইলগুলিতে পড়ার / লেখার সুযোগ দিন এবং ডিরেক্টরি কাঠামোকে অতিক্রম করতে ফোল্ডারের অ্যাক্সেসের অনুমতি দিন।
sudo chown -R USER /var/www/html/
sudo find /var/www/html -type d -exec chmod u+rwx {} +
sudo find /var/www/html -type f -exec chmod u+rw {} +
USER
আপনার নিজস্ব ব্যবহারকারীর সাহায্যে প্রথম কমান্ডে প্রতিস্থাপন করুন !
আমরা এখানে তিনটি জিনিস করি। প্রথমত, আমরা আপনার ব্যবহারকারীকে সমস্ত ফাইল এবং ডিরেক্টরিগুলির "মালিক" হিসাবে সেট করেছি /var/www/html
। এরপরে, আমরা ফোল্ডারগুলিতে পড়ার এবং লেখার অনুমতি সেট করেছিলাম এবং ফোল্ডারগুলিতে সেগুলিতে প্রবেশ করার অনুমতি দিই ( +x
ডিরেক্টরিতে আইটেমটি)। তারপরে আমরা সমস্ত ফাইলের মালিকের জন্য পড়ার / লেখার অনুমতি রাখতে সেট করেছিলাম যা আমরা সবেমাত্র সেট করেছি।
(3) (alচ্ছিক) প্রতিটি নতুন ফাইল www-data
'অ্যাক্সেস' ব্যবহারকারী হিসাবে তৈরি হওয়ার পরে নিশ্চিত করুন ।
sudo find /var/www/html -type d -exec chmod g+s {} +
এটি ডিরেক্টরিগুলিতে গোষ্ঠীর জন্য "সেট গিড" বিট সেট করে। এই ডিরেক্টরিগুলির মধ্যে তৈরি ফাইল এবং ফোল্ডারগুলির www-data
ওয়েব সার্ভার অ্যাক্সেসের অনুমতি দিয়ে সর্বদা গ্রুপ হিসাবে থাকবে will
(4) (ptionচ্ছিক) চূড়ান্ত সুরক্ষা ক্লিনআপ, আপনি না চাইলে অন্যান্য ব্যবহারকারীরা ডেটা দেখতে সক্ষম হন
ডিরেক্টরি এবং ফাইলগুলি দেখতে আমাদের ব্যবহারকারীর দরকার। এটি করার জন্য আমাদের ওয়েব-সার্ভারও দরকার। আমরা অন্যান্য সিস্টেম ব্যবহারকারীদের (রুট ব্যতীত) ডেটা দেখতে চাই না। সুতরাং তাদের সেই অ্যাক্সেসটি দেয় না এবং এটি কেবল আপনার ব্যবহারকারী এবং ওয়েব সার্ভার ডেটা দেখতে পারে make
sudo chmod -R o-rwx /var/www/html/
দ্রষ্টব্য: আপনাকে পরবর্তী সময়ে এটি আবার চালাতে হবে না, বা এখানে 'অন্যান্য' বিভাগের অনুমতিগুলির জন্য অনুমতিগুলি সম্পাদনা করতে হবে না। যদি 'অন্যান্য' ব্যবহারকারীরা না পেতে পারেন /var/www/html/
(তাদের কাছে ফাইল স্ট্রাকচার এবং ডিরেক্টরি কাঠামোটি অতিক্রম করতে প্রয়োজনীয় +x
বিট /var/www/html
নেই, না +r
ফাইল তালিকাগুলি পড়ার বিট নেই ), তবে অন্য ব্যবহারকারীদের জন্য ডিরেক্টরিটির নীচে থাকা আইটেমগুলির অনুমতিগুলি রয়েছে বা গোষ্ঠীগুলি সত্যই খুব বেশি গুরুত্ব পাচ্ছে না।
এটির জন্য সামান্য কম আক্রমণাত্মক সমাধানও রয়েছে, যদিও এটি সমস্ত নতুন ফাইলের জন্য কাজ করার গ্যারান্টিযুক্ত নয়, বা ফাইল অ্যাক্সেস নিয়ন্ত্রণ তালিকাগুলি জড়িত সমস্ত ফাইল সিস্টেমে কাজ করার নিশ্চয়তাও দেওয়া হচ্ছে না । এটি আপনাকে www-data
জিনিসগুলির সাথে ফাইলগুলির মালিকানা ছেড়ে দিতে দেয়, তবে আপনাকে ব্যক্তিগতভাবে ফাইলগুলির মালিক না হলেও সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে আপনাকে কার্যকর মালিকের অধিকার দেয় purposes
এই সমাধানটি সামান্য কম আক্রমণাত্মক, এবং আপনাকে নিজস্ব ডিরেক্টরিতে www-data:www-data
বা root:www-data
নিজেরাই অ্যাক্সেস দিতে পারে এমন একটি ডিরেক্টরি এবং সমস্ত ফাইল রাখতে দেয়। এটি অ্যাক্সেস কন্ট্রোল তালিকাগুলি ব্যবহার করে , যা আপনাকে পৃথক গোষ্ঠী স্থাপন না করে একাধিক ব্যবহারকারীর অনুমতি পেতে দেয়। এটাও দেয় root
বা www-data
সিস্টেম ব্যবহারকারীগণ নিজস্ব ফাইল, কিন্তু আপনি একটি কেস-বাই-কেস ভিত্তিতে অতিরিক্ত অনুমতির যোগ করতে দেয়, এবং কিছু ব্যবহারকারীদের জন্য নিখুঁত টিউন অনুমতি তাই তারা কিছু কিন্তু সম্পাদনা, এবং এই ধরনের পড়তে পারেন।
ধরে নিই আমরা এখনও কাজ করছি /var/www/html/
, এবং আমরা আমাদের এবং সিস্টেম (এবং অবশ্যই মূলত) ব্যতীত স্নুপিং ব্যবহারকারীদের আমাদের ডেটা দেখতে চাই না, আমাদের নিম্নলিখিত বিষয়গুলি করতে হবে:
- ওয়েবসার্ভার সিস্টেম ব্যবহারকারীকে মালিকানা ফিরিয়ে দিন
www-data
।
sudo chown -R www-data: www-data / var / www / html
- অন্যান্য ব্যবহারকারীদের ( অবশ্যই বাদে
www-data
এবং root
অবশ্যই) ফাইলগুলিতে অ্যাক্সেস না দেওয়ার সময় পুনরাবৃত্তভাবে আপনাকে ফাইলগুলি পড়তে / লিখতে দিন ।
sudo / var / www / html -type f -exec setfacl -mu: YOURUSERNAME: rw -m other :: --- {} \;
- ডিরেক্টরিতে পুনরাবৃত্তভাবে নিজেকে পড়ুন / লিখুন / ট্রান্সভার দিন, অন্যান্য ব্যবহারকারীদের ফোল্ডারে অ্যাক্সেস সরিয়ে (বাদ দিয়ে
www-data
এবং root
) এবং ডিরেক্টরিগুলিতে নতুন ফাইলগুলির জন্য এটি 'ডিফল্ট' এসিএল হিসাবে সেট করুন।
sudo / var / www / html -type d -exec setfacl -d -mu: আপনার ব্যবহারকারী নাম: rwx -mo :: --- {} \;
- আমাদের
setgid
সমস্ত ডিরেক্টরিতেও বিট সেট করতে হবে, যাতে আপনি একটি ফাইল তৈরি করেন তবে www-data
গ্রুপটি অনুমতি অনুসারে ওয়েবসভারটি এটিকে অ্যাক্সেস করতে পারে ।
sudo / var / www / html -type d -exec chmod g + x {} \;
এবং এখন আপনি সমস্ত ডিরেক্টরিতে অ্যাক্সেস পেয়েছেন, এবং আপনাকে অ্যাক্সেস নিতে হবে না www-data
যা ওয়েবসারভার এখনও যেখানেই ফাইলগুলি তৈরি করতে পারে যেমন সাহায্য করে (যেমন পিএইচপি ভিত্তিক সীমানাগুলির নিজস্ব ক্যাশে ডিরেক্টরি রয়েছে এবং যেমন সঠিক ক্রিয়াকলাপের জন্য তৈরি এবং লিখিত হওয়া প্রয়োজন)।
একমাত্র সতর্কতামূলক: আপনি যদি ম্যানুয়ালি নতুন ফাইল তৈরি করেন তবে ওয়েবসভারটির মালিকানা দেওয়ার জন্য আপনাকে সেগুলি মেনে চলা দরকার। এটি একটি সহজ sudo chown www-data:www-data filename
, এবং অ্যাক্সেস নিয়ন্ত্রণ তালিকাগুলি আপনাকে এখনও ফাইলটিতে কার্যকর মালিকের অধিকার থাকতে দেয়।
এমন একাধিক কেস রয়েছে যেখানে প্রদত্ত ফাইলের মালিকদের পরিবর্তন না করে কিছু প্রকার মানহীন অ্যাক্সেসের জন্য আমাকে সিসাদমিন হিসাবে এটি করতে হয়েছিল। এটি কাজ করে তবে এর নিজস্ব মাথা ব্যাথা রয়েছে কারণ প্রতিটি ফাইল সিস্টেম ফাইল অ্যাক্সেস তালিকাকে সমর্থন করে না ।
+x
ফাইলগুলিতে এক্সিকিউটেবল অনুমতি দেবেন এবং আমরা পিএইচপি ফাইলগুলি কার্যকরভাবে পিএইচপি কমান্ড লাইনের মাধ্যমে বা সার্ভারে এক্সিকিউটেবল হিসাবে চাই না - আমরা ওয়েব সার্ভারে পিএইচপি পার্সার দ্বারা প্রক্রিয়া করতে চাই (এবং আমরা+x
পিএইচপি পার্সারগুলির পড়তে এবং তাদের প্রক্রিয়া করার জন্য পিএইচপি ফাইলগুলির দরকার নেই)। ডিরেক্টরিগুলির+x
মাধ্যমে ট্র্যাভারসালকে অনুমতি দেওয়ার জন্য ডিরেক্টরিগুলি প্রয়োজন - এটি হ'ল যদি কোনও ডিরেক্টরি না থাকে+x
এবং আমি রুট না হয় তবে আমি ডিরেক্টরিতে প্রবেশ করতে পারব না, এটিই হ'ল অ্যাপাচি আপনার সমস্যা এবং আপনার বাড়ির সাথে কাজ না করার বিষয়টি নিয়ে had ডিরেক্টরি।