ফাইল এবং ফোল্ডারে লেখার জন্য পিএইচপি অনুমতি দেওয়া


13

আরও স্বচ্ছতার জন্য আপডেট করা:

Http://expressionengine.com/user_guide/installation/installation.html এর মতে এটি বলে:

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

এর মানে কি নিশ্চিত না. আমি নির্দিষ্ট ফাইল এবং ফোল্ডারগুলিকে যথাক্রমে 6 666 এবং 7 777 এ পরিবর্তন করতে পারি যেখানে আমি chown'er, তবে উপরের শব্দগুলির মতো আমার কি পিএইচপিটিকে এটি করার অনুমতি দেওয়া দরকার?

মূল প্রশ্ন:

আমার নিশ্চিত করতে হবে যে পিএইচপি নির্দিষ্ট ফাইলগুলিতে (6 666) এবং ফোল্ডারগুলিতে (7 777) লিখতে পারে।

আমি এটা কিভাবে করবো?


2
আমি নিশ্চিত নই আপনি কোন সমস্যার সমাধানের চেষ্টা করছেন? আপনি যদি ফাইলটি যেখানে অবস্থিত সেই ডিরেক্টরিটিতে অ্যাক্সেস করতে এবং এতে অনুমতি কার্যকর করতে পারলে আপনি সেই অনুমতিগুলি দিয়ে ফাইল এবং ডিরেক্টরিতে লিখতে পারেন।
কার্লসন

উপরে আরও বিশদ যুক্ত করা হয়েছে।
oshirowanen

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

আমি ডকুমেন্টেশন থেকে কেবল একটি অনুলিপি এবং পেস্ট করেছি। এছাড়াও, এ কারণেই আমি কেন এই প্রশ্নটি পোস্ট করেছি কারণ আমি বুঝতে পারি না যে এই
উক্তির

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

উত্তর:


18

আমি রাহমুর এবং এমভির উত্তরগুলি একটি প্রযুক্তিগত সমাধান দিয়ে সম্পূর্ণ করব। নীচের সমস্ত কিছু কেবল ইউনিক্স-মতো সিস্টেমের জন্য বৈধ।

ACL গুলি ব্যবহার করে উদাহরণস্বরূপ chmod / chown বিভাগটি পেরিয়ে যান - ইউনিক্স ফাইলের মোডের চেয়ে আরও শক্তিশালী একটি সরঞ্জাম।

আপনার ওয়েব সার্ভারের ব্যবহারকারীর নাম সন্ধান করা

প্রথমত, আপনাকে নিজের ব্যবহারকারীর নামটি জানতে হবে যার অধীনে আপনার ওয়েব সার্ভারটি চলমান। আপনি Apache ব্যবহার করে থাকেন, এটা হতে পারে apacheঅথবা httpd, www-data, সবচেয়ে ডেবিয়ান মত সিস্টেম, অ্যাপাচি হয় ইত্যাদি www-data। Nginx জন্য, সাধারণত, এটি হয় www-data

এটি পরীক্ষা করে দেখতে, চেষ্টা করুন:

ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1

নিশ্চিত হয়ে নিন যে এই কমান্ডটি যে ব্যবহারকারীর নামটি ফেরত দিয়েছে তা সুসংগত (উদাহরণস্বরূপ, আমি 99% সময় এনজিনেক্স ব্যবহার করি, তবে এই কমান্ডটি ফিরে আসে tomcat7, আমি একবার ইনস্টল করা একটি জাভা ওয়েব সার্ভার)


ওয়েব সার্ভারে অনুমতি প্রদান করা: ব্যবহার করে chmodএবংchown

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

আরও সুনির্দিষ্ট হওয়া এবং কেবল আপনার এবং আপাচে অনুমতি দেওয়া ভাল। ওয়েব সার্ভারে আপনার ফাইলে সম্পূর্ণ নিয়ন্ত্রণ দেওয়ার জন্য আপনার ফাইলগুলির গ্রুপ পরিবর্তন করুন। এটি করতে, মালিককে পুনরাবৃত্তভাবে পরিবর্তন করুন:

chown -R www-data:www-data your/folder/

তবে সম্ভবত, আপনি কেবল গ্রুপ পরিবর্তন করে আপনার ফাইলগুলিতে সম্পূর্ণ অ্যাক্সেস রাখতে চান:

chown -R yourusername:www-data your/folder/

তারপরে, chmodগোষ্ঠীকে www-dataআপনার মতো একই অনুমতি দেওয়ার জন্য উপযুক্ত করুন । উদাহরণস্বরূপ, যদি বর্তমান মোডটি 640 হয় (আপনার জন্য 6, www- ডেটার জন্য 4, অন্যের জন্য 0, -rw-r ----- তে অনুবাদ করে) এটি 660 (আপনার জন্য 6, www- এর জন্য 6 ) এ সেট করুন ডেটা, 0 অন্যের জন্য, -আর-আরডব্লিউ ---- তে অনুবাদ করে । ফাইল মোড সম্পর্কে আরও জানার জন্য রাহমুর উত্তর দেখুন, এটি একটি পুরানো, তবে মার্জিত মেকানিজম।

এর সাহায্যে আরকেন সংখ্যাগুলি এড়ানোর জন্য chmod, আপনি এই বাক্য গঠনটিও ব্যবহার করতে পারেন:

chmod -R g+rw your/folder/

এর অর্থ "গোষ্ঠীতে ( g), ফোল্ডারে ( +) পড়ুন এবং লিখুন ( rw) অনুমতিগুলি your/folder/পুনরাবৃত্তি করুন ( -R)"।

90% ক্ষেত্রে, এটি যথেষ্ট হওয়া উচিত।


আমার পছন্দসই পদ্ধতি: এসিএল ব্যবহার করে (অ্যাক্সেস নিয়ন্ত্রণের তালিকা)

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

এবং chmod/ chownপদ্ধতিটি পর্যাপ্ত হতে পারে না, যখন আপনি সিএলআই-তে আমার ব্যবহারকারী সমান্তরালভাবে (আমার ব্যবহারকারীর অ্যাকাউন্টের অধীনে) এবং ওয়েব (ওয়েব সার্ভার ব্যবহারকারী) ব্যবহার করেন। এটি প্রচুর সমস্যা সৃষ্টি করে কারণ সিমফনি ক্রমাগত অনুমতিগুলি পরিবর্তন করে চলেছে।

এই ক্ষেত্রে, আমরা এসিএল (অ্যাক্সেস কন্ট্রোল লিস্ট) ব্যবহার করব, যা অনেক ইউএনআইএক্স সিস্টেমে অনুমতি পরিচালনা করার জন্য আরও উন্নত উপায়।

এখানে অফিসিয়াল সিমফনি ডকুমেন্টেশন দ্বারা প্রদত্ত আদেশগুলি ( দয়া করে পরিবর্তন করুন app/cacheএবং app/logsআপনার প্রয়োজন হিসাবে ):

এমন একটি সিস্টেমে যা সমর্থন করে chmod +a(যেমন: দেবিয়ান / উবুন্টু নয়)

sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

এমন সিস্টেমে যা সমর্থন করে না chmod +a(সর্বাধিক সাধারণ)

আপনি setfaclসরঞ্জাম প্রয়োজন হবে ; এটি ডিফল্টরূপে এটি আপনার সিস্টেমে ইনস্টল করা আছে, সুতরাং setfacl -vকমান্ডটি উপলব্ধ কিনা তা দেখার চেষ্টা করুন ।

যদি কমান্ডটি উপলভ্য না থাকে এবং আপনি উবুন্টু 14.04+ ব্যবহার করছেন তবে আপনাকে কেবলমাত্র সরঞ্জামটি ইনস্টল করতে হবে:

sudo apt install acl

অন্যথায়, আপনার ওএস ডকুমেন্টেশন অনুসরণ করুন, কারণ আপনার পার্টিশনটি কীভাবে মাউন্ট হয় তা আপনার পরিবর্তনের প্রয়োজন হতে পারে ( উবুন্টু ডকুমেন্টেশন এখানে )।

এবং আমরা এখানে রয়েছি:

sudo setfacl  -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs

এই পদ্ধতি, সন্তুষ্ট বা আপনার টাকা ফেরত নিয়ে আমার কোনও সমস্যা হয়নি।


1
'পিএস অক্সের জন্য +1 গ্রেপ-ই '[এ] প্যাচ | [এইচ] টিটিপিডি | [_] www | [ডাব্লু] ডাব্লুডাব্লু-ডেটা | [এন] জিন্স' | grep -v মূল | মাথা -1 | কাট-ডি f -f1 '
আমার প্রতাপ

4

ফাইলগুলির মালিক কে তা নয়, 6 permission6 অনুমতি এবং 77 77 enough যথেষ্ট হবে: শেষ সংখ্যাটি নিশ্চিত করে যে সিস্টেমের প্রতিটি ব্যবহারকারীর অ্যাক্সেস রয়েছে। এটি এটি করার সবচেয়ে সহজ উপায় যদিও এটি সঠিক কারণে এটি অবশ্যই নিরাপদ নয়।

এটি করার একটি আরও ভাল উপায়

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

  • 0: ---
  • 1: --x
  • 2: -w-
  • 3: -wx
  • 4: r--
  • 5: r-x
  • 6: rw-
  • 7: rwx

chmod 666এর পরে অনুমতি পরিবর্তন করার সমতুল্য rw-rw-rw

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

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


0

এক্সপ্রেশন ইঞ্জিন ঠিক অন্যান্য অনেক পিএইচপি ওয়েব অ্যাপ্লিকেশনগুলির মতো যা কিছু ফাইল এবং ডিরেক্টরিতে পঠন + লেখার অ্যাক্সেসের প্রয়োজন। উদাহরণস্বরূপ, EE এর কনফিগার.এফপি এবং ডাটাবেস.এফপি ফাইলগুলিতে লেখার অ্যাক্সেস এবং তার ফাইল আপলোড ডিরেক্টরিগুলিতে লেখার অ্যাক্সেসের প্রয়োজন।

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

এটি নিরাপদতম উপায় নয়, তবে অবশ্যই এটি সবচেয়ে সহজ, বিশেষত যদি আপনি কোনও হোস্টিং পরিষেবা ব্যবহার করছেন।

তবে, EE নির্দেশাবলী হিসাবে আপনার হোস্টিং সরবরাহকারীকে জিজ্ঞাসা করুন, কারণ কিছু মোড_এফপি ব্যবহার করে না তবে একটি ফাস্টসি, এসএফপিপি বা বিভিন্ন সংস্করণ ব্যবহার করে। এই সার্ভারগুলি পিএইচপি আপনার নিজের ব্যবহারকারী হিসাবে চালায়, সুতরাং আপনার আপলোড করা সমস্ত ফাইল ইতোমধ্যে পিএইচপি এবং ইই স্ক্রিপ্টগুলির দ্বারা নির্মিত যে কোনও ফাইলের দ্বারা পঠনযোগ্য এবং লিখনযোগ্য। সেক্ষেত্রে পিএইচপি দ্বারা অ্যাক্সেস করা ফাইল এবং ডিরেক্টরিগুলিকে 600 এবং 700 অ্যাক্সেস দেওয়া দরকার। ওয়েব সার্ভার দ্বারা সরাসরি অ্যাক্সেস করার জন্য অন্যান্য ফাইলগুলিতে (পিএইচপি রানটাইম নয়) এখনও 666 এবং 777 অ্যাক্সেসের প্রয়োজন হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.