আপাচি ২ এর ব্যবহারকারী / ডাব্লু / ডাব্লু-র ওয়েব-ডেটা ব্যবহারের জন্য অনুমতিগুলি হ্যান্ডেল করার সর্বোত্তম উপায় কী?


214

ফাইলগুলি হ্যান্ডল করার জন্য কি কারও দুর্দান্ত সমাধান পাওয়া গেছে /var/www? আমরা নেম ভিত্তিক ভার্চুয়াল হোস্ট চালাচ্ছি এবং অ্যাপাচি 2 ব্যবহারকারী www-ডেটা

আমরা দুটি নিয়মিত ব্যবহারকারী এবং মূল পেয়েছি। সুতরাং ফাইলগুলির সাথে ঝামেলা করার /var/wwwপরিবর্তে, ...

chown -R www-data:www-data

... সারাক্ষণ, এটি পরিচালনা করার ভাল উপায় কী?

পরিপূরক প্রশ্ন: তারপরে আপনি কতটা কঠোরভাবে অনুমতি নেবেন?

সহযোগী উন্নয়ন পরিবেশে এটি সর্বদা একটি সমস্যা হয়ে দাঁড়িয়েছে।


উত্তর:


206

@ জোরেডাচের উত্তরটি সম্প্রসারণের চেষ্টা করা হচ্ছে , আমি নিজেই এটিকে যাচ্ছি:

  • একটি নতুন গোষ্ঠী (www-pub) তৈরি করুন এবং সেই গোষ্ঠীতে ব্যবহারকারীদের যুক্ত করুন

    groupadd www-pub

    usermod -a -G www-pub usera ## অবশ্যই বিদ্যমান গ্রুপগুলিতে সংযোজন করতে একটি ব্যবহার করতে হবে

    usermod -a -G www-pub userb

    groups usera ## ব্যবহারকারীর জন্য প্রদর্শন গোষ্ঠী

  • / Var / www এর অধীন সমস্ত কিছুর মালিকানা রুট: www-pub এ পরিবর্তন করুন

    chown -R root:www-pub /var/www পুনরাবৃত্তির জন্য ## -আর

  • সমস্ত ফোল্ডারের অনুমতিগুলি 2775 এ পরিবর্তন করুন

    chmod 2775 /var/www ## 2 = গ্রুপ আইডি সেট করুন, মালিকের (রুট) জন্য 7 = rwx, গ্রুপের জন্য 7 = আরডাব্লু (www-পাব), বিশ্বের জন্য 5 = আরএক্স (অ্যাপাচি www-ডেটা ব্যবহারকারী সহ)

    গোষ্ঠী আইডি ( SETGID ) বিট (2) সেট করে সেই গোষ্ঠী ( www- পাব) that ফোল্ডারে তৈরি হওয়া সমস্ত নতুন ফাইল / ফোল্ডারে অনুলিপি করা। অন্যান্য বিকল্পগুলি হ'ল ব্যবহারকারীর আইডি অনুলিপি করতে SETUID (4), এবং স্টিক (1) যা আমি মনে করি কেবল মালিককে ফাইল মুছতে দেয়।

    একটি -Rপুনরাবৃত্তির বিকল্প রয়েছে, তবে এটি ফাইল এবং ফোল্ডারগুলির মধ্যে কোনও বৈষম্য দেখাবে না, সুতরাং আপনাকে খুঁজে পেতে যেমন ব্যবহার করতে হবে :

    find /var/www -type d -exec chmod 2775 {} +

  • সমস্ত ফাইল 0664 এ পরিবর্তন করুন

    find /var/www -type f -exec chmod 0664 {} +

  • আপনার ব্যবহারকারীদের জন্য ওমাস্কটি 0002 এ পরিবর্তন করুন

    উমাস্ক ডিফল্ট ফাইল নির্মাণের অনুমতিগুলি নিয়ন্ত্রণ করে, 0002 এর মানে ফাইলগুলি 664 এবং ডিরেক্টরি 775 থাকবে this এটি সেট করা ( আমার ক্ষেত্রে umaskনীচের অংশে লাইনটি সম্পাদনা করে /etc/profile) এর অর্থ একটি ব্যবহারকারীর দ্বারা নির্মিত ফাইলগুলি www- এ অন্য ব্যবহারকারীদের দ্বারা লিখিত হতে পারে chmodতাদের প্রয়োজন ছাড়া গ্রুপ ।

একটি ফাইল এবং ডিরেক্টরি তৈরি করে এবং এর সাথে মালিক, গোষ্ঠী এবং অনুমতিগুলি যাচাই করে এগুলি পরীক্ষা করুন ls -l

দ্রষ্টব্য: আপনার গ্রুপগুলিতে পরিবর্তনগুলি কার্যকর করতে আপনাকে লগআউট / ইন করতে হবে!


6
@ টম দুর্দান্ত আপনি এটির findজন্য কমান্ডটি ব্যবহার করার পরামর্শ দিচ্ছেন তা দেখতে দুর্দান্ত । একটি ছোট পারফরম্যান্স টিপ দিচ্ছি যদি আপনার কাছে প্রচুর ফাইল / ডিরেক্টরি থাকে এবং আপনি জিএনইউ সন্ধান করেন তবে এর +পরিবর্তে ব্যবহার করতে হবে \;যাতে কমান্ডটি একাধিক ফাইলের উপর কাজ করবে কারণ "যতটা সম্ভব ফাইলের উপর একটি কমান্ড চালানো দ্রুততর একবারে প্রতি ফাইলের পরিবর্তে একবারে। এটি করা প্রতিটি সময় কমান্ড শুরু করার সময় সাশ্রয় করে। " এছাড়াও, এটি টাইপ করা সহজ কারণ এটি ব্যাকস্ল্যাশ প্রয়োজন হয় না।
অ্যাকুলিচ

2
@ অ্যাকুলিচ + ব্যবহার না করার পরামর্শ দিয়ে আপডেট হয়েছে;
টম

1
@SunnyJ। এটি চেষ্টা করে (বাহ্যিক উদ্ধৃতি ব্যতীত): "সন্ধান করুন / var / www -type f -exec chmod 0664 '{}' \ +" চেষ্টা করুন। '{}' এবং \ + এর মধ্যে একটি স্থান রয়েছে।
বাটল বুটকস

1
@ টম-উপায় এটি ভেঙে দেওয়ার জন্য, ধন্যবাদ। কেবলমাত্র একটি নোট- আমি মনে করি আপনার উত্তর অন্তর্ভুক্ত হিসাবে "ব্যবহারকারীর আইডি অনুলিপি করতে SETUID (4) ভুল" - লিনাক্স / ইউনিক্সের ডিরেক্টরিতে প্রয়োগ করার সময় SETUID এড়ানো হবে - রেফ
ইয়ারিন

1
ঠিক আছে, তাই দ্বারা useraএবং userbআপনি কি মানে www-dataএবং ftpuser? আমি www-dataএটির মূল প্রশ্নের মধ্যে যে কোনও উল্লেখের সাথে খুব বিভ্রান্তি পেয়েছি । এছাড়াও, মালিককে সেট করার পয়েন্ট / সুবিধা rootকী? আমরা এটা সেট করা উচিত ftpuser?
gskema

60

আপনি কীভাবে অনুমতিগুলি কনফিগার করতে চান তা সম্পর্কে আমি পুরোপুরি নিশ্চিত নই, তবে এটি আপনাকে একটি সূচনা পয়েন্ট দিতে পারে। সম্ভবত আরও ভাল উপায় আছে। আমি ধরে নিচ্ছি আপনি উভয় ব্যবহারকারীই / var / www / এর অধীনে যে কোনও কিছু পরিবর্তন করতে সক্ষম হতে চান

  • একটি নতুন গোষ্ঠী তৈরি করুন (www-pub) এবং সেই গোষ্ঠীতে ব্যবহারকারীদের যুক্ত করুন।
  • / Var / www এর অধীন সমস্ত কিছুর মালিকানা রুট: www-pub এ পরিবর্তন করুন।
  • সমস্ত ফোল্ডারের অনুমতিগুলি 2775 এ পরিবর্তন করুন
  • সমস্ত ফাইল 0664 এ পরিবর্তন করুন।
  • আপনার ব্যবহারকারীদের জন্য ওমাস্কটি 0002 এ পরিবর্তন করুন

এর অর্থ আপনার ব্যবহারকারীর দ্বারা তৈরি করা যে কোনও নতুন ফাইলের নাম ব্যবহারকারীর নাম হওয়া উচিত: www-পাব 0664 এবং যে ডিরেক্টরি তৈরি হবে তা ব্যবহারকারীর নাম হবে: www-pub 2775. অ্যাপাচি 'অন্যান্য ব্যবহারকারীর' উপাদানটির মাধ্যমে সমস্ত কিছুতে পঠনের অ্যাক্সেস পাবে। ডিরেক্টরিগুলিতে SETGID বিট ফোল্ডারটির মালিকানাধীন সমস্ত ফাইল সেই গ্রুপের মালিকানাধীন তৈরি করতে বাধ্য করবে। লেখার বিট সেট হয়েছে তা নিশ্চিত করার জন্য উমাস্ক সামঞ্জস্য করা দরকার যাতে গ্রুপের যে কেউ ফাইল সম্পাদনা করতে সক্ষম হয়।

আমি কতটা কঠোরভাবে অনুমতি নিয়ে যাই। এটি সম্পূর্ণরূপে সাইট / সার্ভারের উপর নির্ভর করে। যদি এখানে কেবল 1-2 জন সম্পাদক থাকে এবং আমার কেবল তাদের খুব খারাপভাবে জিনিস ভাঙা থেকে বিরত রাখা দরকার তবে আমি সহজ হয়ে যাব। যদি ব্যবসায়ের আরও জটিল কিছু প্রয়োজন হয় তবে আমি আরও জটিল কিছু সেট আপ করব।


1
সম্ভাব্য সংযোজন - ওয়েব-সার্ভারের দ্বারা
www-

এটি 'অন্যান্য' অনুমতিগুলির উপর নির্ভর না করে অ্যাপাচি গ্রুপে ব্যবহারকারীদের যুক্ত করার পাশাপাশি কাজ করবে? আপনি যদি যা করছেন তার সবগুলিই যদি ফাইল আপলোড করা হয় এবং ap ফাইলগুলি অ্যাপাচি দ্বারা পঠনযোগ্য হওয়া দরকার তবে those ফাইলগুলি সম্পাদনা করার প্রয়োজন হলে কেবল দরকারী মনে হয়।
সিমুর

1
আপনি কি এই সামান্য @ জোরেদাকে প্রসারিত করতে চান? আমি rwx বিট, chmod, chown, adduser, usermod এর বেসিক ব্যবহারটি ছুঁড়েছি, তবে আপনি আমাকে অষ্টাল অনুমতিগুলি, উমাস্কগুলি এবং সমস্ত কিছুতে অতিরিক্ত প্রথম সংখ্যাটি দিয়ে হারিয়েছেন। আপনার রূপরেখার পদ্ধতির চিত্রিত করে কিছু নমুনা কমান্ড প্রশংসিত হবে।
টম

1
এভাবে প্রতিটি ব্যবহারকারী প্রতিটি অন্যান্য ব্যবহারকারীর ফাইল অ্যাক্সেস করতে পারে! এর অর্থ ইউজারএর ব্যবহারকারীর কনফিগারেশন.পি.পি. পড়তে পারে ... এর মাইএসকিএল শংসাপত্রটি স্টল করে, উদাহরণস্বরূপ
drAlberT


39

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

উদাহরণস্বরূপ, আপনি প্রতিটি ব্যবহারকারীর অনুমতিগুলি স্পষ্টভাবে নির্দিষ্ট করতে পারেন:

setfacl -Rm d:u:userA:rwX,u:userA:rwX /var/www
setfacl -Rm d:u:userB:rwX,u:userB:rwX /var/www

অথবা আপনি কিছু ভাগ করা গোষ্ঠীর উপর ভিত্তি করে এটি করতে পারেন:

setfacl -Rm d:g:groupA:rwX,u:groupA:rwX /var/www

এবং সম্ভবত আপনি আপনার অ্যাপাচি ব্যবহারকারীকে কেবল পঠনযোগ্য হিসাবে রাখতে চান

setfacl -Rm d:u:www-data:rX,u:www-data:rX /var/www

ম্যান পেজ:

অভিভাবকসংবঁধীয়


2
এটা উপায় ! +1
drAlberT

জয়ের জন্য এসিএল +1 ... আরও তথ্যের জন্য সার্ভারফল্ট
360120/

1
আমি ভাবছি এসিএল বনাম বেসিক অনুমতিগুলির জন্য কোনও পারফরম্যান্স খারাপ রয়েছে কিনা।
বাটাল বুট্কাস

2
দুর্ভাগ্যক্রমে, এসিএল প্রায়শই স্ট্যান্ডার্ড ইনস্টলেশন / বিতরণে অনুপস্থিত। আমি পরিচালনা করি এমন প্রতিটি সার্ভারগুলিতে কার্নেল সংকলন করা বা তার চেয়ে খারাপ, কখনও কখনও ফাইল সিস্টেম পরিবর্তন করার জন্য এটি একটি বেদনা। এছাড়াও ফাইলগুলি ব্যাকআপ নেওয়ার সময় আপনাকে অবশ্যই খুব সতর্কতা অবলম্বন করতে হবে, বিশেষত যদি আপনি সার্ভারগুলি স্যুইচ করছেন। এসিএল দুর্দান্ত তবে এর বর্তমান সমর্থনটি এত কম যে আমি সার্ভার এবং আশেপাশের সমস্ত কিছুর উপর যার সম্পূর্ণ নিয়ন্ত্রণ না রাখে তার জন্য আমি এর বিরুদ্ধে সুপারিশ করব। তবে ACL নির্দেশ করার জন্য +1 এটি সত্যিকার অর্থে তৈরি করে!
নিনজ

ভাল উত্তর +1; www-dataঅ্যাপাচি প্রক্রিয়া পরিবর্তনের বিষয়ে একটি নোট পুরো সাইটের জন্য পড়ার / লেখার অনুমতিগুলি ( উদাহরণস্বরূপ) কেবলমাত্র পড়ার জন্য (সেটফ্যাকেল বা chmod - বা উভয়) -> এটি স্পষ্টতই সমস্ত লেখাকে (প্লাগইন / মডিউল আপলোড / ব্রাউজারের পক্ষ থেকে আপডেট করা) ব্লক করবে উদাহরণস্বরূপ বেশিরভাগ সিএমএস)। আমি বিশ্বাস করি যে অনেক জনপ্রিয় ব্যক্তিরা কেবল গ্রুপ স্তর নয় ব্যবহারকারী প্যারাম স্তরে লেখার অ্যাক্সেসের জন্য পরীক্ষা করে থাকেন। আপনি এখনও আপডেট করতে পারেন, তবে আপডেটগুলি ম্যানুয়ালি প্রয়োগ করতে হবে এবং লিখিত ফোল্ডারগুলির জন্য (লগ / টেম্প / আপলোড / ইত্যাদি) কোনও কাস্টম অনুমতি থাকতে হবে। কেবলমাত্র পঠন হ'ল দুর্দান্ত সুরক্ষা যদি আপনার সাইটটি এটির সাথে কাজ করে .. তবে এবং বেশিরভাগ ক্ষেত্রে না হয় don't
bshea

10

এই প্রশ্নটি আবার জিজ্ঞাসা করা হয়েছিল , এবং মেটাতে আলোচিত হিসাবে , বর্তমান সেরা অনুশীলনগুলি 2009 সালে যখন এটি জিজ্ঞাসা করা হয়েছিল, তার চেয়ে বেশি ভাল পদ্ধতির উপলব্ধ করে। এই উত্তরটি সহযোগিতামূলক ওয়েব বিকাশ পরিবেশ নিরাপদে পরিচালনার জন্য কিছু বর্তমান সমাধান দেওয়ার চেষ্টা করে ।


সুরক্ষিত ওয়েব সার্ভার ও সহযোগী বিকাশের জন্য কেবল ফাইল অনুমতি ছাড়াও অনেক কিছু রয়েছে:

  • প্রতিটি সাইটের জন্য পৃথক ব্যবহারকারীর অর্থাত্ ব্যবহার করে সমস্ত সাইট পরিবেশন করবেন না www-data। এটি গুরুত্বপূর্ণ, আজকাল অ্যাপাচি খুব কমই কেবল স্থির বিষয়বস্তু ফাইল সরবরাহ করে তবে গতিশীল ওয়েব সাইটগুলি চালাচ্ছে । এটি সবচেয়ে সাধারণ সার্ভার-সাইট ভাষা হিসাবে এই উত্তরটি পিএইচপিতে মনোনিবেশ করে তবে একই নীতিগুলি অন্যদের ক্ষেত্রেও প্রযোজ্য।

    আপনার যদি কোনও একক সাইটে সুরক্ষা সমস্যা থাকে তবে এটি একই ব্যবহারকারী হিসাবে চলমান প্রতিটি সাইটে ছড়িয়ে যেতে পারে। একজন আক্রমণকারী ডাটাবেস লগইন তথ্য সহ ব্যবহারকারী যা কিছু দেখেন তা দেখতে এবং ব্যবহারকারীর লেখার অনুমতি প্রাপ্ত প্রতিটি সাইটে পরিবর্তন করতে পারে।

  • ব্যবহার করুন , SSH ফাইল ট্রান্সফার প্রোটোকল (এসএফটিপি)। সুরক্ষার জন্য এফটিপি ব্যবহার করার সময় (এটি উভয় পাসওয়ার্ড এবং সামগ্রী সরল পাঠ্যে প্রেরণ করা হয়) ত্যাগ করা উচিত, এটি নিরাপদ বিকল্প এসএফটিপিতে এমন একটি বৈশিষ্ট্যও রয়েছে যা সহযোগী ওয়েব বিকাশের জন্য নিখুঁত সমাধান।

    একবার আপনি সাইটগুলি এবং এক সাইটে প্রতিটি ব্যবহারকারীকে বিচ্ছিন্ন করার পরে, আপনার ওয়েব বিকাশকারীদের এই প্রশ্নটি কী তা বোঝার দরকার রয়েছে access এই সাইটের ব্যবহারকারীর জন্য তাদের পাসওয়ার্ড দেওয়ার পরিবর্তে - বা তাদের ব্যক্তিগত ব্যবহারকারীর অ্যাকাউন্টগুলি মূলত প্রস্তাবিত হিসাবে ব্যবহার করে সাইট ফাইলগুলিতে অ্যাক্সেস করা - আপনি লগইনের জন্য এসএসএইচ কী ব্যবহার করতে পারেন ।

    প্রতিটি বিকাশকারী কী-পেয়ার তৈরি করতে এবং ব্যক্তিগত কী গোপন রাখতে পারেন। তারপরে, ~/.ssh/authorized_keysপ্রতিটি ওয়েবসাইট ব্যবহারকারী অ্যাকাউন্টে বিকাশকারী কাজ করছেন তার জন্য ফাইলটিতে সর্বজনীন কী যুক্ত করা হয়। পাসওয়ার্ড এবং লগইন পরিচালনার জন্য এর অনেক সুবিধা রয়েছে:

    • প্রতিটি বিকাশকারী ব্যবহারকারী-প্রতি সাইটের ব্যবস্থাপনার সাথে জড়িত সমস্ত পাসওয়ার্ড মনে রাখতে বা সঞ্চয় করতে বোঝা ছাড়াই যে কোনও সংখ্যক ওয়েব সাইটে অ্যাক্সেস পেতে পারে।

    • প্রতিবার কেউ সংস্থা ছেড়ে চলে গেলে পাসওয়ার্ডগুলি পরিবর্তন এবং ভাগ করার দরকার নেই।

    • আপনি খুব শক্ত পাসওয়ার্ড ব্যবহার করতে বা পাসওয়ার্ড ভিত্তিক লগইন পুরোপুরি অক্ষম করতে পারেন।

  • পিএইচপি-এফপিএম ব্যবহার করুন । এটি ব্যবহারকারী হিসাবে পিএইচপি চালানোর জন্য বর্তমান পন্থা। প্রতিটি ব্যবহারকারীর জন্য একটি নতুন পুল অর্থাৎ প্রতিটি সাইটের জন্য একটি পুল তৈরি করুন । এটি সুরক্ষা এবং কার্য সম্পাদন উভয়ের জন্যই সেরা, কারণ কোনও একক সাইট কত সংস্থান গ্রহণ করতে পারে তাও আপনি নির্দিষ্ট করতে পারেন।

    উদাহরণস্বরূপ নেভারএন্ডিংসিকিউরিটির রান পিএইচপি-এফপিএম দেখুন পৃথক ব্যবহারকারী / ইউআইডি এবং লিনাক্সে গ্রুপ । হুটোফর্জের উবুন্টু ১ache.০৪-এ অ্যাপাচি সহ পিএইচপি-এফপিএম ব্যবহারের মতো টিউটোরিয়াল রয়েছে যা সার্ভার জুড়ে একক এফপিএম সকেট ব্যবহারের জন্য গাইড করে ব্যবহারকারী পৃথককরণের মাধ্যমে সুরক্ষা বাড়ানোর জন্য পিএইচপি-এফপিএম ব্যবহার করে না guiding

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