Www-ডেটা মালিকানাধীন / var / www- এ কোনও ব্যবহারকারীর অনুমতি প্রদান করুন


36

কিছু ওয়েবসাইটের জন্য আমার একটি সাধারণ ওয়েব সার্ভার সেটআপ রয়েছে, যার একটি লেআউট রয়েছে:

site1: /var/www/site1/public_html/

site2: /var/www/site2/public_html/

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

আমি অন্য ব্যবহারকারী তৈরি করার উপায় খুঁজতে চাইছি (যাকে এটিকে ব্যবহারকারী 1 বলুন) যা সাইট 1 এ ফাইলগুলি সম্পাদনা করার অনুমতি পেয়েছে তবে সাইট 2 নয় এবং ফাইলগুলি মালিকানাধীন হওয়া বন্ধ করে না www-data। আমার এই কাজ করার কোন উপায় আছে?

উত্তর:


70

যদি আমরা সাইট 1 এর মালিকানা পরীক্ষা করে দেখি তবে আমরা এরকম কিছু খুঁজে পাব,

ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/

এর অর্থ ডিরেক্টরিটি ব্যবহারকারী রুট, গোষ্ঠী মূলের মালিকানাধীন। ব্যবহারকারীর রুট ডিরেক্টরিতে লেখার অনুমতি রয়েছে (আরও পড়ুন এবং অনুমতিগুলি প্রয়োগ করুন), গোষ্ঠী রুটে কেবল অনুমতি পড়তে এবং চালিত করে।

আমরা গ্রুপের মালিকানা অন্য (নতুন) গ্রুপে পরিবর্তন করতে এবং সেই নির্দিষ্ট গোষ্ঠীতে ব্যবহারকারী 1 যুক্ত করতে চাই। আমরা সেই নির্দিষ্ট গ্রুপকেও লেখার অনুমতি দেব।

একটি নতুন গ্রুপ তৈরি করুন,

sudo addgroup site1

নতুন তৈরি করা গোষ্ঠীতে ইউজার 1 যুক্ত করুন,

sudo adduser user1 site1

পরীক্ষা করুন যে ব্যবহারকারী 1 সত্যিই সেই গোষ্ঠীতে রয়েছে,

groups user1

আউটপুট এমন একটি তালিকা হওয়া উচিত,

user1 : <other-groups> site1

এখন আমরা আপনার উদ্দেশ্যে করা ডিরেক্টরিটির গোষ্ঠী মালিকানা পরিবর্তন করতে পারি।

sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1

এই নতুন গ্রুপের মালিককে লেখার অনুমতি প্রদান করুন,

sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)

সমস্ত পরিবর্তনগুলি সত্যই সেখানে রয়েছে তা পরীক্ষা করুন

ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/

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

এখন ব্যবহারকারী 1 হিসাবে লগইন করুন, সাইট 1 ডিরেক্টরিতে যান এবং সেই ডিরেক্টরিতে একটি ফাইল তৈরি করার চেষ্টা করুন,

echo "My User1 Site" > index.html 
bash: index.html: Permission denied

এটি ব্যর্থ হয়েছে যেহেতু সম্ভবত ব্যবহারকারী 1 এর প্রাথমিক গোষ্ঠী সাইট 1 নয়। সুতরাং, যে দলে পরিবর্তন।

newgrp - site1

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

সম্পাদনা

এছাড়াও, মন্তব্যে ডান 08 দ্বারা চিহ্নিত হিসাবে , আপনাকে সাইটের1 গ্রুপে www-ডেটা যুক্ত করতে হবে।

sudo adduser www-data site1

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

আপনি যদি দেখতে চান যে কীভাবে অ্যাপাচি ওয়েব সার্ভার চলছে, কমান্ডটি জারি করুন,

ps aux | grep apache2 | less

1
আপনার সাইটের 1 গ্রুপে www-ডেটা যুক্ত করতে হবে। ওয়ার্ডপ্রেস ওয়েব ইন্টারফেসে ফাইলগুলি আপলোড এবং পরিবর্তন করার সময়। পরিবর্তনগুলি অ্যাপাচি www-ডেটা ব্যবহারকারীর সাহায্যে করেছেন। সুতরাং পড়ার সুযোগগুলি বেশিরভাগ সময় পর্যাপ্ত হয় না।
ড্যান

3
Permission deniedবার্তা "প্রাথমিক গ্রুপ" কারণে নয়, বরং ব্যবহারকারী না এখনো আসলে যে গ্রুপ হচ্ছে (যতদূর ওএস সংশ্লিষ্ট হয়)। যদি আপনি লগ আউট করে এবং পিছনে প্রবেশ করেন তবে এটি প্রত্যাশিত হিসাবে কাজ করবে (চালানো ছাড়াই newgrp - site1)।
বি 10011

কিভাবে ঠিক এই দান থেকে আলাদা হতে হবে www-dataযদি আপনি শেষ পর্যন্ত যোগ করার জন্য থাকার গ্রুপ লেখার অনুমতি www-dataকাছে site1কোন পথে?
ম্যাট

@ ম্যাটবোর্জা আপনার প্রশ্নটি খুব পরিষ্কার নয়। আপনি কি জিজ্ঞাসা করছেন যে www-data' write permissions? If that is the question, www-ডেটা নামের গ্রুপটিকে দেওয়া কোনও গ্রুপ নয়, এটি একজন ব্যবহারকারী আমি যদি আপনার প্রশ্নের ভুল বোঝে তবে দয়া করে আমাকে জানান।
মাসুরুর

আমি মনে করি, এটি নিরাপদ কনফিগারেশন নয় কারণ ব্যবহারকারীরা পিএইচপি স্ক্রিপ্টের মাধ্যমে একে অপরের সাইটগুলিতে অ্যাক্সেস করতে পারে, উদাহরণস্বরূপ, পিএইচপি ফাইল ম্যানেজার।
কিদিনার

7

দুটি গ্রুপ তৈরি করুন: site1grpএবংsite2grp

sudo groupadd site1grp && sudo groupadd site2grp

যোগ www-dataউভয় গোষ্ঠীতে।

sudo adduser www-data site1grp && sudo adduser www-data site2grp

ইউজার 1 এবং ইউজার 2 উপযুক্ত গ্রুপে যুক্ত করুন

sudo adduser user1 site1grp && sudo adduser user2 site2grp

আপনার সাইটের ফোল্ডারগুলির অনুমতি পরিবর্তন করুন যাতে ব্যবহারকারীর মালিক www-ডেটা এবং গ্রুপের মালিক উপযুক্ত গ্রুপ group

sudo chown -R www-data:site1grp /var/www/site1  && sudo chown -R www-data:site2grp /var/www/site2

এখন www-dataউভয় সাইটে ব্যবহারকারী এবং গোষ্ঠী অনুমতি রয়েছে এবং প্রতিটি ব্যবহারকারীর নিজ নিজ সাইটের জন্য গ্রুপ অনুমতি রয়েছে।


4

তাদের হোম ফোল্ডারের নীচে যাদের ওয়ার্ডপ্রেস মূল ফোল্ডার রয়েছে তাদের জন্য:

উবুন্টু / Apache

  1. আপনার ব্যবহারকারীকে www-ডেটা গ্রুপে যুক্ত করুন:

    ক্রেডিট www-ডেটা গ্রুপে লেখার অনুমতি প্রদান করা

    আপনি usermodআপনার ব্যবহারকারীকে কল করতে চান সুতরাং যে হবে:

    sudo usermod -aG www-data yourUserName
    

    ধরে নিচ্ছি www-dataগ্রুপ বিদ্যমান

  2. আপনার ব্যবহারকারী www-dataগ্রুপে আছে তা পরীক্ষা করুন :

    groups yourUserName
    

    আপনার মতো কিছু পাওয়া উচিত:

    yourUserName : yourUserGroupName www-data
    

    আপনার ব্যবহারকারী গ্রুপটি সাধারণত আপনার ব্যবহারকারীর নামের সাথে মিল থাকে

  3. আপনার ব্যবহারকারীর মালিকানা রেখে ফোল্ডারের পুনরাবৃত্তভাবে গোষ্ঠী মালিকানা পরিবর্তন করুন

    chown yourUserName:www-data -R yourWebSiteFolder/*
    
  4. ডিরেক্টরিটি আপনার ওয়েবসাইট ফোল্ডারে পরিবর্তন করুন

    cd yourWebSiteFolder
    
  5. লেখার অনুমতি সক্ষম করতে ফোল্ডার এবং সাব-ফোল্ডারগুলির গ্রুপ প্রমেশনগুলি বারবার পরিবর্তন করুন:

    find . -type d -exec chmod -R 775 {} \;
    

    মোড /home/yourUserName/yourWebSiteFolder/'থেকে পরিবর্তিত 0755 (rwxr-xr-x)করা0775 (rwxrwxr-x)

  6. লেখার অনুমতিগুলি সক্ষম করার জন্য ফাইল এবং উপ-ফাইলগুলির গোষ্ঠী প্রবর্তনগুলি পুনরাবৃত্তভাবে পরিবর্তন করুন:

    find . -type f -exec chmod -R 664 {} \;
    

    ফলাফলটি দেখতে এমন কিছু হওয়া উচিত:

    WAS:
    -rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
    CHANGED TO:
    -rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
    

    সমতুল্য:

    chmod -R ug+rw foldername
    

    অনুমতিগুলি 664 বা 775 এর মতো হবে।


3

তথাকথিত, "নতুন ব্যবহারকারী" এর জন্য আপনাকে একটি নতুন গোষ্ঠী তৈরি করতে হবে এবং তারপরে সেই গোষ্ঠীতে www-ডেটা এবং "নতুন ব্যবহারকারী" যুক্ত করতে হবে:

sudo gpasswd -a new_user new_group

তারপরে আপনি মালিককে new_userএবং গ্রুপ এ এতে পরিবর্তন করতে পারেন new_group:

sudo chown -R new_user:new_group /var/www/site1

তারপরে আপনাকে সাইট 1 এ গ্রুপ স্তরের অ্যাক্সেস দিতে হবে। www-ডেটা সাইটটি এখনও অ্যাক্সেস করতে সক্ষম হবে, কারণ এটি নতুন_গোষ্ঠীর অন্তর্গত, যখন নতুন_ ব্যবহারকারী ব্যবহারকারী সাইট 2 অ্যাক্সেস করতে সক্ষম হবেনা, কারণ তিনি সাইট -2-এর মালিকানাধীন www-ডেটা গ্রুপের নয়।


আপনার উত্তরটি বিভ্রান্তিকর, "সাইট 1 তে গ্রুপ স্তরের অ্যাক্সেস দিয়ে" আপনার অর্থ কি "সাইট 1 এর গোষ্ঠীকে নতুন_গোষ্ঠীতে পরিবর্তন করা" বা মোড ( chmod) পরিবর্তন করা উচিত ? আপনার উত্তরটিতে কোথাও মোডটি উল্লেখ করা হয়নি যা সুরক্ষিত হওয়ার (বা জিনিস ভাঙ্গা) পার্থক্য তৈরি করতে পারে।
লেকেনস্টেইন

আমি chmodঅন্যদের জন্য সমস্ত অনুমতি বাতিল করে মোড ( ) পরিবর্তন করতে চাইছিলাম।
এরিকোস

1

সমস্ত ফাইল ইতিমধ্যে www-dataব্যবহারকারীর অন্তর্ভুক্ত (আপনি ls -slahকমান্ড দিয়ে এটি পরীক্ষা করতে পারেন ) যারা www-dataগ্রুপের অন্তর্ভুক্ত (ফাইলের তালিকায় ব্যবহারকারীর পরে পরবর্তী কলাম) আপনি কেবলমাত্র www-dataএই ফাইলগুলিকে সম্পাদনা করার জন্য আপনাকে একই গ্রুপে যুক্ত করতে পারেন

# usermod -aG www-data username

বিদ্যমান ব্যবহারকারীর জন্য, বা

# adduser username www-data

সদ্য নির্মিত একটি জন্য

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