বগলস দ্বারা পোস্ট করা সমাধানটি সঠিকভাবে অনুমতিগুলি সেট করার ক্ষেত্রে প্রাথমিকভাবে আমার কাছে নজরদারি রয়েছে (আমি দ্বিতীয় পদ্ধতিটি ব্যবহার করি) তবে লারাভেলের ক্ষেত্রে এটির এখনও সম্ভাব্য সমস্যা রয়েছে।
ডিফল্টরূপে, অ্যাপাচি 644 অনুমতি নিয়ে ফাইল তৈরি করবে। সুতরাং এটি স্টোরেজ /। সুতরাং, আপনি যদি স্টোরেজ / ফ্রেমওয়ার্ক / দর্শনগুলির বিষয়বস্তু মুছেন, তবে অ্যাপাচি এর মাধ্যমে একটি পৃষ্ঠা অ্যাক্সেস করুন আপনি দেখতে পাবেন ক্যাশেড ভিউটি তৈরি করা হয়েছে যেমন:
-rw-r--r-- 1 www-data www-data 1005 Dec 6 09:40 969370d7664df9c5206b90cd7c2c79c2
আপনি যদি "কারিগর পরিবেশন" চালান এবং কোনও ভিন্ন পৃষ্ঠাতে অ্যাক্সেস করেন তবে আপনি আলাদা অনুমতি পাবেন কারণ CLI পিএইচপি অ্যাপাচি থেকে আলাদা আচরণ করে:
-rw-rw-r-- 1 user www-data 16191 Dec 6 09:48 2a1683fac0674d6f8b0b54cbc8579f8e
নিজেই এটি কোনও বড় বিষয় নয় কারণ আপনি উত্পাদনে এর কোনও কাজই করবেন না। তবে যদি আপাচি কোনও ফাইল তৈরি করে যা পরে ব্যবহারকারী দ্বারা লেখার প্রয়োজন হয়, তবে এটি ব্যর্থ হবে। এবং এটি লগ-ইন থাকা ব্যবহারকারী এবং কারিগর ব্যবহার করে ডিফলি করার সময় ক্যাশে ফাইল, ক্যাশেড ভিউ এবং লগগুলিতে প্রয়োগ হতে পারে। "কারিগর ক্যাশে: পরিষ্কার" হওয়া একটি সহজ উদাহরণ যা www-ডেটা: www-ডেটা 4৪৪ যে কোনও ক্যাশে ফাইল মুছতে ব্যর্থ হবে।
এইটি www-ডেটা হিসাবে কারিগর কমান্ডগুলি চালিয়ে আংশিকভাবে প্রশমিত করা যেতে পারে, সুতরাং আপনি সমস্ত কিছু / স্ক্রিপ্টিং এর মতো করে যাবেন:
sudo -u www-data php artisan cache:clear
অথবা আপনি এর ক্লান্তি এড়াতে পারবেন এবং এটি আপনার .বাশ_আলিয়াসগুলিতে যুক্ত করুন:
alias art='sudo -u www-data php artisan'
এটি যথেষ্ট ভাল এবং কোনওভাবেই সুরক্ষা প্রভাবিত করছে না। তবে ডেভলপমেন্ট মেশিনে, পরীক্ষা চালানো এবং স্যানিটেশন স্ক্রিপ্টগুলি এটিকে অযৌক্তিক করে তোলে, যদি না আপনি phpunit চালানোর জন্য 'sudo -u www-data' ব্যবহারের জন্য উপকরণ স্থাপন করতে চান এবং এর সাথে আপনার বিল্ডগুলি যাবতীয় যাচাই করে যা ফাইলগুলি তৈরি হতে পারে।
সমাধানটি হ'ল বগলস পরামর্শের দ্বিতীয় অংশটি অনুসরণ করা এবং নিম্নলিখিতগুলিকে / ইত্যাদি / অ্যাপাচি 2 / এনভ্যাওয়ারগুলিতে যুক্ত করুন এবং অ্যাপাচি পুনরায় চালু করুন (পুনরায় লোড করবেন না):
umask 002
এটি অ্যাপাচি ডিফল্টরূপে 664 হিসাবে ফাইলগুলি তৈরি করতে বাধ্য করবে। নিজেই, এটি একটি সুরক্ষা ঝুঁকি উপস্থাপন করতে পারে। তবে লারাভেল পরিবেশ সম্পর্কে এখানে বেশিরভাগ আলোচিত হচ্ছে (হোমস্টেড, ভ্যাগ্রান্ট, উবুন্টু) ওয়েব সার্ভারটি গ্রুপ www-ডেটা-এর আওতায় ইউজার www-ডেটা হিসাবে কাজ করে। সুতরাং আপনি যদি ইচ্ছামত ব্যবহারকারীদের www-ডেটা গ্রুপে যোগদানের অনুমতি না দেন তবে কোনও অতিরিক্ত ঝুঁকি থাকা উচিত নয়। যদি কেউ ওয়েবসার্ভারটি ছিন্ন করতে পরিচালিত হন তবে তাদের কাছে www-ডেটা অ্যাক্সেসের স্তর রয়েছে তাই কোনও কিছুই হ্রাস পায় না (যদিও এটি সুরক্ষার সাথে সম্পর্কিত হওয়ার পক্ষে সর্বোত্তম মনোভাব নয়)। সুতরাং উত্পাদনের ক্ষেত্রে এটি তুলনামূলকভাবে নিরাপদ এবং একক ব্যবহারকারীর বিকাশ মেশিনে এটি কোনও সমস্যা নয়।
আপনার ব্যবহারকারী যেহেতু www-ডেটা গ্রুপে রয়েছে এবং এই ফাইলগুলি সমেত সমস্ত ডিরেক্টরি g + s (ফাইলটি সর্বদা পিতামাতার ডিরেক্টরিতে তৈরি করা হয়), ব্যবহারকারীর দ্বারা বা www-ডেটা দ্বারা তৈরি যে কোনও কিছু হবে r / অন্যের জন্য ড।
এবং এটি এখানে লক্ষ্য।
সম্পাদন করা
অনুমতিগুলি আরও সেট করার বিষয়ে উপরের পদ্ধতির তদন্ত করার পরে, এটি এখনও যথেষ্ট ভাল দেখাচ্ছে তবে কয়েকটি টুইটগুলি সহায়তা করতে পারে:
ডিফল্টরূপে, ডিরেক্টরিগুলি 775 এবং ফাইলগুলি 664 হয় এবং সমস্ত ফাইলে কেবলমাত্র ফ্রেমওয়ার্কটি ইনস্টল করা ব্যবহারকারীর মালিক এবং গ্রুপ থাকে। সুতরাং ধরে নেওয়া যাক আমরা যে বিন্দু থেকে শুরু।
cd /var/www/projectroot
sudo chmod 750 ./
sudo chgrp www-data ./
প্রথমটি আমরা যা করি তা হ'ল অন্য সবার অ্যাক্সেসকে ব্লক করা এবং গ্রুপটিকে www-ডেটা হিসাবে তৈরি করা। কেবলমাত্র www-ডেটার মালিক এবং সদস্যরা ডিরেক্টরিটি অ্যাক্সেস করতে পারবেন।
sudo chmod 2775 bootstrap/cache
sudo chgrp -R www-data bootstrap/cache
অফিসিয়াল লারাভেল ইনস্টলেশন গাইডের পরামর্শ অনুসারে, ওয়েবসভারকে পরিষেবাদি.জসন এবং সংকলিত.এফপি তৈরির অনুমতি দেওয়ার জন্য। গোষ্ঠীটিকে স্টিকি বিট সেট করার অর্থ এইগুলি www-ডেটার একটি গ্রুপ সহ স্রষ্টার মালিকানাধীন।
find storage -type d -exec sudo chmod 2775 {} \;
find storage -type f -exec sudo chmod 664 {} \;
sudo chgrp -R www-data storage
ক্যাশে, লগ, সেশন এবং ফাইলগুলি দেখার অনুমতি দেওয়ার জন্য আমরা স্টোরেজ ফোল্ডারে একই কাজ করি। আমরা ডিরেক্টরি এবং ফাইলগুলির জন্য ডিরেক্টরি অনুমতিগুলি স্পষ্টভাবে সেট করতে ব্যবহার করি। বুটস্ট্র্যাপ / ক্যাশে এটি করার দরকার নেই কারণ সেখানে কোনও সাধারণ ডিরেক্টরি নেই (সাধারণত)।
আপনার কোনও এক্সিকিউটেবল ফ্ল্যাগ পুনরায় প্রয়োগ করতে হবে এবং বিক্রেতার / * মুছতে হবে এবং পিপুনিট এবং আল এর লিঙ্কগুলি পুনরায় তৈরি করতে সুরকার নির্ভরতা পুনরায় ইনস্টল করতে হবে, যেমন:
chmod +x .git/hooks/*
rm vendor/*
composer install -o
এটাই. উপরে বর্ণিত অ্যাপাচি এর জন্য উমাস্ক ব্যতীত, www-ডেটা দ্বারা সম্পূর্ণ প্রজেক্ট্রুটটি লেখার যোগ্য না করে এগুলিই দরকার, যা অন্যান্য সমাধানগুলির সাথে ঘটে। সুতরাং এটি এইভাবে প্রান্তিকভাবে নিরাপদ যে www-ডেটা হিসাবে চালিত কোনও অনুপ্রবেশকারীটির আরও সীমিত লেখার অ্যাক্সেস রয়েছে।
শেষ সম্পাদনা
সিস্টেমডের জন্য পরিবর্তনসমূহ
এটি পিএইচপি-এফএমপি ব্যবহারের ক্ষেত্রে প্রযোজ্য, তবে অন্যরাও হতে পারে।
স্ট্যান্ডার্ড সিস্টেমেড সার্ভিসটি ওভাররাইড করা দরকার, ওমরাইড.conf ফাইলে উমাস্ক সেট করা হয়েছে এবং পরিষেবাটি পুনরায় চালু করা দরকার:
sudo systemctl edit php7.0-fpm.service
Use:
[Service]
UMask=0002
Then:
sudo systemctl daemon-reload
sudo systemctl restart php7.0-fpm.service
777
খুব বেশি স্বাধীনতা, কারণ এতে প্রত্যেকের জন্য সমস্ত অনুমতি রয়েছে।