এখানে বেশিরভাগ উত্তর সুরক্ষা মাথায় রেখে লেখা হয় না। এটি অনুভূতি পাওয়া ভাল যে sudoপ্রতিবার চালানো খুব বুদ্ধিমানের নয়। আপনি যদি টাইপো করেন (উদাহরণস্বরূপ কোনও ভুল জায়গায় একা সাদা জায়গা: sudo rm -rf / var/www/dir চালাবেন না! ), আপনি আপনার সিস্টেমে ট্র্যাশ করতে পারেন।
দ্রষ্টব্য: অ্যাপাচি ২.৪..7 / উবুন্টু ১৪.০৪ দিয়ে শুরু করে, উত্তরের সাথে এই উত্তরটিতে সামঞ্জস্য করতে /var/wwwসরানো হয়েছে /var/www/html।
দেখা:
খারাপ ধারণা:
chmod 777(সাগরচালাইসেস) - এটি আপনার সিস্টেমে অ্যাক্সেস সহ যে কেউ ডিরেক্টরিতে এবং ফাইলগুলিতে লিখতে অনুমতি দেয় এবং এর মাধ্যমে অনুপ্রবেশকারীকে www-dataব্যবহারকারীর অধীনে যে কোনও কোড কার্যকর করতে দেয় allows
chgrp -R www-data $HOME(cob) - www-dataএটি হোম ডিরেক্টরিতে কোনও ফাইল পড়তে বা লিখতে দেয় । এটি সর্বনিম্ন অধিকারের নিয়মটি মাথায় রাখছে না
chown -R $USER:$USER /var/www(kv1dr) - যতক্ষণ না পৃথিবী অনুমতিগুলি পড়তে থাকে /var/www, ততক্ষণে চলমান ওয়েবসার্ভার www-dataফাইলগুলি পড়তে (পরিবেশন করতে) সক্ষম হবে না। যদি ফাইলটি সর্বজনীন অ্যাক্সেসযোগ্য সরল এইচটিএমএল ডকুমেন্ট হয়, বিশ্ব যদি ফাইলটি পড়তে পারে তবে সমস্যা হতে পারে না। তবে ফাইলটি যদি কোনও পিএইচপি ফাইল থাকে তবে এটি পাসওয়ার্ড থাকে।
দ্রষ্টব্য : নীচের সমাধানগুলিতে, আমি www-dataলেখার সুযোগ দিয়েছি । তবে, /usr/share/doc/base-passwd/users-and-groups.txt.gzবলেছেন:
WWW-ডেটা
কিছু ওয়েব সার্ভার www-ডেটা হিসাবে চালিত হয়। ওয়েব সামগ্রীটি এই ব্যবহারকারীর মালিকানাযুক্ত হওয়া উচিত নয়, বা কোনও আপোষযুক্ত ওয়েব সার্ভার কোনও ওয়েব সাইট পুনরায় লিখতে সক্ষম হবে। ওয়েব সার্ভারের দ্বারা লিখিত ডেটা www-ডেটা দ্বারা মালিকানা পাবে।
যেখানে সম্ভব, গ্রুপটিতে লেখার অনুমতি প্রদান করবেন নাwww-data । www-dataকেবলমাত্র ফাইলগুলি পড়তে সক্ষম হওয়া দরকার যাতে ওয়েব সার্ভার এটি পরিবেশন করতে পারে। একমাত্র ক্ষেত্রে যেখানে www-dataঅনুমতিগুলি লেখার দরকার হয় তা হ'ল ডিরেক্টরিগুলি আপলোডগুলি সংরক্ষণ এবং অন্যান্য স্থানের জন্য যা লিখতে হবে for
সমাধান 1
নিজেকে www-dataগোষ্ঠীতে যুক্ত করুন এবং /var/wwwডিরেক্টরিটিতে সেটগিড বিট সেট করুন যাতে নতুন তৈরি হওয়া সমস্ত ফাইলও এই গ্রুপের উত্তরাধিকারী হয়।
sudo gpasswd -a "$USER" www-data
পূর্বে তৈরি ফাইলগুলি (আপনার একমাত্র ব্যবহারকারী হিসাবে ধরে নিলে /var/www) সঠিক করুন:
sudo chown -R "$USER":www-data /var/www
find /var/www -type f -exec chmod 0660 {} \;
sudo find /var/www -type d -exec chmod 2770 {} \;
(এমনকি নিরাপদ: ওয়েবসার্ভার দ্বারা লিখিত হতে হবে যা ব্যবহার 640বা 2750ম্যানুয়ালি chmod g+w file-or-dir)
সমাধান 2
আপনার হোম ডিরেক্টরিতে প্রতিটি প্রকল্পের জন্য একটি সিমিলিংক তৈরি করুন। বলুন আপনার প্রকল্পটি অবস্থিত ~/projects/fooএবং আপনি এটি /var/www/fooচালাতে চান:
sudo ln -sT ~/projects/foo /var/www/foo
যদি আপনার হোম ডিরেক্টরিতে other(সুরক্ষার কারণে) কোনও এক্সিকিউটিভ বিট (অবতরণ) সেট না থাকে তবে এর গোষ্ঠীটি পরিবর্তন করুন www-data, তবে কেবলমাত্র এক্সিকিউট বিট সেট করুন (পড়ুন / লেখেন না)। ~/projectsWww হিসাবে অন্যান্য প্রকল্প থাকতে পারে ফোল্ডারের জন্য একই করুন । (আপনি sudoযদি পূর্বে আপনার ব্যবহারকারীকে দলে যোগ করেন তবে আপনার প্রয়োজন হবে না www-data))
sudo chgrp www-data ~ ~/projects
chmod 710 ~ ~/projects
এতে গ্রুপটি সেট www-dataকরুন ~/projects/fooএবং ওয়েবসার্ভার ফাইল এবং ফাইল + ডিরেক্টরিতে পড়তে এবং লিখতে এবং ডিরেক্টরিতে প্রবেশের অনুমতি দিন:
sudo chgrp www-data ~/projects/foo
find ~/projects/foo -type f -exec chmod 660 {} \;
find ~/projects/foo -type d -exec chmod 2770 {} \;
এমনকি নিরাপদ: ডিফল্টরূপে 640 এবং 2750 ব্যবহার করুন এবং ম্যানুয়ালি chmod ফাইল এবং ডিরেক্টরি যা ওয়েব সার্ভার ব্যবহারকারীর দ্বারা লিখিত হতে হবে। সেটগ্রিড বিটটি কেবল তখনই যুক্ত করা উচিত যখন আপনি প্রতিটি নতুন তৈরি করা ফাইলটি ~/projects/fooগ্রুপ দ্বারা অ্যাক্সেসযোগ্য হতে চান।
এখন থেকে, আপনি নিজের সাইটে অ্যাক্সেস করতে http://localhost/fooএবং আপনার প্রকল্প ফাইলগুলিতে সম্পাদনা করতে পারবেন ~/projects/foo।
আরো দেখুন