এখানে বেশিরভাগ উত্তর সুরক্ষা মাথায় রেখে লেখা হয় না। এটি অনুভূতি পাওয়া ভাল যে 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
, তবে কেবলমাত্র এক্সিকিউট বিট সেট করুন (পড়ুন / লেখেন না)। ~/projects
Www হিসাবে অন্যান্য প্রকল্প থাকতে পারে ফোল্ডারের জন্য একই করুন । (আপনি 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
।
আরো দেখুন