সাধারণ ওয়েব প্রকল্প ডিরেক্টরিগুলির জন্য নিখুঁত ইউনিক্স অনুমতিগুলি কী?


12

লিখিত ওয়েব অ্যাপ্লিকেশনটিতে অনুসরণের জন্য অষ্টাল বিন্যাসে নিখুঁত ন্যূনতম অনুমতিগুলি কী কী?

  1. এমন একটি ডিরেক্টরি যেখানে ব্যবহারকারী আপলোড করা স্ট্যাটিক ফাইলগুলি (চিত্র / swf / js ফাইল) থাকবে will
  2. এমন একটি ডিরেক্টরি যেখানে অ্যাডমিন আপলোড করা স্ট্যাটিক ফাইলগুলি (চিত্র / swf / js ফাইলগুলি) থাকবে
  3. অ্যাপ্লিকেশনটিতে ব্যবহৃত লাইব্রেরিগুলি থাকে এমন একটি ডিরেক্টরি
  4. একটি ডিরেক্টরি যেখানে এক্সিকিউটেবল / ব্রাউজেবল সার্ভারের সাইড স্ক্রিপ্টগুলি থাকবে
  5. একটি ডিরেক্টরি যেখানে ইতিমধ্যে বিদ্যমান ফাইলগুলি (txt বা xML) সার্ভারের পাশের কোড দ্বারা সম্পাদিত হবে

এখানে আমার পরামর্শ এবং ন্যায্যতা আছে

  1. 555, সবাই পড়তে এবং লিখতে পারে, কেউই মৃত্যুদণ্ড কার্যকর করতে পারে না
  2. 544, একা মালিক লিখতে পারবেন, প্রত্যেকে প্রত্যেকেই পড়তে পারে, কেউ চালানো যায় না
  3. 000, কারও পড়া, লেখার বা সম্পাদন করার দরকার নেই, কেবল ওয়েব সার্ভার দ্বারা ব্যবহৃত হবে?
  4. 1 66১, মালিক পড়তে, লিখতে পারে, প্রত্যেকেই কেবল কার্যকর করতে পারে
  5. 600, মালিক পড়তে, লিখতে (প্রয়োজন হতে পারে না), অন্য কেউ কিছুই করতে পারে না

এখন আমি দুটি বিষয়ে আগ্রহী:

  1. ওয়েব ভিত্তিক অ্যাপ্লিকেশনগুলিতে এমন কোনও ব্যবহার রয়েছে যা আমি প্রথম তালিকায় মিস করেছি?
  2. দ্বিতীয় তালিকার সাথে আপনি কিছু দ্বিমত পোষণ করেছেন, আপনার বিকল্পটি কী এবং কেন এটি আরও ভাল?

1
লোকেরা কেন আজকাল এসিএল ব্যবহার করছে না তা আমি বুঝতে পারি না ...
pfo

উত্তর:


20

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

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

লিনাক্সে, ব্যবহারকারীরা গোষ্ঠীভুক্ত - আমরা কোনও ব্যবহারকারীকে অন্য গ্রুপে যুক্ত করতে পারি এবং সেই গোষ্ঠীতে বিশেষাধিকার সরবরাহ করতে পারি।

একটি ভাল সেটআপে আপনার সার্ভারটি একজন ব্যবহারকারীর মতো চলবে (আসুন এই ব্যবহারকারীকে 'ওয়েবসার্ভার' বলুন) এবং আপনার ডায়নামিক স্ক্রিপ্টিং ল্যাঙ্গুয়েজ রান (যেমন ফাস্টসিজিআইয়ের মাধ্যমে) এর নিজস্ব ব্যবহারকারী হিসাবে (প্রতিটি সাইটের একজন ব্যবহারকারী - আসুন আমাদের প্রথম ব্যবহারকারীকে 'সাইট 1' বলি) ।

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

যেহেতু আমরা আমাদের ওয়েবসভারটির জন্য অন্য একটি 'ব্যবহারকারী' হিসাবে অনুমতিগুলি নির্দিষ্ট করতে পারি না, তাই আমরা 'সাইট 1' গ্রুপে 'ওয়েবসারভার' যুক্ত করব (আপনি অবশ্যই এটিতে 'সাইট 1' এবং 'ওয়েবসারভার' উভয়ই আলাদা গ্রুপ তৈরি করতে পারেন All সব এই গোষ্ঠীর সদস্যদের একই অনুমতি দেওয়া হবে any যে কোনও ব্যবহারকারীর অনুমতি নির্ধারণের জন্য সর্বাধিক শিথিল অনুমতি (ব্যবহারকারী, গোষ্ঠী, অন্যান্য সেট) প্রয়োগ করা হবে।

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

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

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

সুতরাং, ন্যূনতম ফাইলের অনুমতিগুলি হ'ল:

  • একটি ডিরেক্টরিতে থাকা একটি ফাইল যেখানে ব্যবহারকারী আপলোড করা স্ট্যাটিক ফাইলগুলি (চিত্রগুলি / swf / js ফাইলগুলি) থাকে: 640
  • ডিরেক্টরিতে এমন একটি ফাইল যেখানে অ্যাডমিন আপলোড করা স্ট্যাটিক ফাইলগুলি (চিত্রগুলি / swf / js ফাইলগুলি) থাকবে: 640
  • একটি ডিরেক্টরিতে একটি ফাইল যেখানে অ্যাপ্লিকেশনটিতে ব্যবহৃত গ্রন্থাগারগুলি থাকে: 400 (বা 440)
  • একটি ডিরেক্টরিতে একটি ফাইল যেখানে এক্সিকিউটেবল / ব্রাউজেবল সার্ভারের সাইড স্ক্রিপ্টগুলি থাকবে: 400 (বা 440)
  • একটি ডিরেক্টরিতে একটি ফাইল যেখানে ইতিমধ্যে বিদ্যমান ফাইলগুলি (txt বা xML) সার্ভারের পাশ দিয়ে কোড দ্বারা সম্পাদিত হবে: 640 বা 600
    • (ওয়েব সার্ভার এগুলি প্রদর্শন করবে কিনা তা নির্ভর করে)

যদিও, সর্বনিম্ন ডিরেক্টরি অনুমতিগুলি হতে পারে:

  • এমন একটি ডিরেক্টরি যেখানে ব্যবহারকারী আপলোড করা স্ট্যাটিক ফাইলগুলি (চিত্রগুলি / swf / js ফাইলগুলি) থাকবে: 750 50
  • একটি ডিরেক্টরি যেখানে অ্যাডমিন স্ট্যাটিক ফাইলগুলি আপলোড করে (চিত্র / swf / js ফাইলগুলি) থাকবে: 750
  • একটি ডিরেক্টরি যেখানে অ্যাপ্লিকেশনটিতে ব্যবহৃত গ্রন্থাগারগুলি থাকে: 500 (বা 550) [কমপক্ষে 510 হওয়া উচিত]
  • একটি ডিরেক্টরি যেখানে এক্সিকিউটেবল / ব্রাউজেবল সার্ভারের সাইড স্ক্রিপ্টগুলি থাকবে: 500 (বা 550) [কমপক্ষে 510 হওয়া উচিত]
  • একটি ডিরেক্টরি যেখানে ইতিমধ্যে বিদ্যমান ফাইলগুলি (txt বা xML) সার্ভারের পাশ দিয়ে কোড দ্বারা সম্পাদিত হবে: 750 বা 700
    • (ওয়েব সার্ভার এখান থেকে ফাইলগুলি পরিবেশন করবে কিনা তা নির্ভর করে, কখনও কখনও অশোধিত)

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

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

মনে রাখবেন যে 'অন্যান্য' অনুমতিগুলি কোনও সিস্টেম ব্যবহারকারীকে বোঝায় যাঁর মালিক বা গ্রুপ নেই (যেমন সমস্ত সিস্টেম ব্যবহারকারী) remaining আপনার 'অন্যান্য' অনুমতিগুলি নিষিদ্ধ রাখা ভাল, কারণ এই ব্যবহারকারীরা অজানা - আপনি স্পষ্টভাবে তাদের অনুমতি দেননি। অন্যান্য অনুমতিগুলি কোনও আপোসযুক্ত সিস্টেমে সুবিধা গ্রহণ করা প্রায়শই সহজ (উদাহরণস্বরূপ / টিএমপি সাধারণ লক্ষ্য হিসাবে একটি কারণ)।

উপরের প্রসঙ্গে, আমি মনে করি না যে আপনার শেষ দুটি প্রশ্ন প্রাসঙ্গিক। আপনার ডিরেক্টরি অনুমতিগুলি 550 এ সেট করুন (এবং ফাইলটি 440-এ অনুমতি দিন) এবং তারপরে আপনার অ্যাপ্লিকেশন যে ডিরেক্টরিতে লিখিত হবে তার জন্য ব্যবহারকারীকে লেখার অনুমতি দিন (যেমন ডিরেক্টরি: 750; ফাইল: 640)।

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


@ আইইন: অবশ্যই - তাত্ক্ষণিক সময়ে ফাইল অনুমতিগুলির কথা ভাবছিল - এটি ঠিক করবে - ধন্যবাদ -
সাইবারএক্স 86

1

কাজটি সম্পন্ন করার জন্য ন্যূনতম অনুমতি সেট থাকা স্বাভাবিক normal যদি আপনার ওয়েবসার্ভার থাকে এবং ব্যবহারকারীরা একটি সাধারণ গ্রুপ ভাগ করে নেন তবে আপনি যে কোনও অ্যাক্সেস দেওয়ার প্রয়োজনটিকে সরাতে পারেন o। অনুমতিগুলিও ব্যবহারকারীদের সাথে সম্পর্কিত। আপনি অষ্টাল অনুমতিগুলি ভুল বুঝেছেন বলে মনে হয়।

  1. 555 হয় r-xr-xr-xনা rw-rw-rw। এটি ডিরেক্টরি হিসাবে ডিরেক্টরি তৈরি করতে আপনার মুছে ফেলার জন্য x750 সেট স্থাপন করা rwxr-x---ভাল কাজ হবে। এটি ডিরেক্টরিতে থাকা ব্যবহারকারীকে ফাইল এবং সাধারণ গ্রুপের প্রত্যেককে অ্যাক্সেস করার জন্য ডিরেক্টরি যুক্ত করার অনুমতি দেয়।
  2. উপরে 1. হিসাবে একই।
  3. যদি তারা সত্যিকারের স্থির ফাইল 050 এর চেয়ে বেশি হয় তবে ওয়েব সার্ভারটি অ্যাক্সেস দিতে পারে তবে প্রথম স্থানে ফাইলগুলি তৈরি করতে 750 সর্বনিম্ন হতে পারে।
  4. উপরে 3 হিসাবে একই।
  5. 070 ওয়েব সার্ভারটি ফাইলগুলি পড়তে ও পরিবর্তন করার অনুমতি দেওয়ার ক্ষেত্রে সর্বনিম্ন হবে তবে ফাইলগুলি তৈরি করা দরকার তাই 770 সম্ভবত আরও বাস্তবসম্মত is

ওয়েব সার্ভারের ডিরেক্টরিগুলি (পয়েন্ট # 1 (740?), 3, 5) পড়ার জন্য ডিরেক্টরিতে অনুমতিগুলি প্রয়োগ করতে হবে না?
সাইবারএক্স 86

ডোহ! ফাইলগুলি অ্যাক্সেস করার জন্য এক্স এর প্রয়োজনীয়তা রয়েছে কেবলমাত্র সেগুলি তালিকাভুক্ত করার অনুমতি দেয় ... আরও কফির জন্য সামর্থ্য রাখে।
ব্যবহারকারী 9517 9

0

সাধারণভাবে ডিরেক্টরিগুলির ক্ষেত্রে 0755, 0775, বা 2775 মোড (ডিরেক্টরিগুলিতে এসজিআইডি বিট, বিএসডি এবং লিনাক্সের জন্য যদি ফাইল-সিস্টেমটি বিএসডি শব্দার্থে মাউন্ট করা থাকে তবে নতুন ফাইলগুলির গ্রুপ অ্যাসোসিয়েশনটি মূল ডিরেক্টরি সেটিংসের সাথে মেলে তুলবে তবে ফাইলের নির্মাতার ডিফল্ট জিআইডি)। এটি সমস্ত ব্যবহারকারীকে প্রশ্নযুক্ত ডিরেক্টরিগুলি (chdir ইন এবং এর মাধ্যমে) অতিক্রম করতে এবং (ls কমান্ড চালানো বা readdir / read সিস্টেম কলগুলি সম্পাদন করতে) সহায়তা করতে পারে। বিকল্পগুলি গ্রুপ / লেখার বিকল্প যুক্ত করে এবং উল্লিখিত হিসাবে, এসজিআইডি বিট, ডিরেক্টরিতে, সমস্ত ফাইল এবং উপ-ডিরেক্টরিগুলি একটি উপযুক্ত গ্রুপের সাথে যুক্ত রাখতে সহায়তা করতে পারে।

ফাইলগুলির জন্য একটি সাধারণত 0644 বা সম্ভবত 0664 ব্যবহার করতে পারে (বিশ্ব পাঠযোগ্য এবং উভয়ই দল লিখনযোগ্য বা না)। স্পষ্টতই সিজিআই স্ক্রিপ্ট এবং বাইনারিগুলির জন্য আপনাকে অবশ্যই এক্স-বিট যুক্ত করতে হবে; এবং খুব ভাল পরীক্ষিত বাইনারিগুলির সাথে কিছু বিশেষ পরিস্থিতির জন্য, কেউ এসইউডি বা এসজিআইডি বিট যুক্ত করতে পারে। সাধারণত ইউনিক্স এবং লিনাক্স স্ক্রিপ্টগুলিতে SID / SGID বিট উপেক্ষা করবে এবং কেবলমাত্র দেশীয় সংকলিত, এক্সিকিউটেবল বাইনারিগুলির জন্য এর শব্দার্থকে সম্মান করবে। তবে আপনি "সেটুইড্যাক" এর মতো কিছু মডিউলের সাথে অ্যাপাচি-র মতো কোনও কিছুর অধীনে আপনার সাইটটি চালাচ্ছেন যা ওয়েব সার্ভারকে SID / SGID বিটকে এমনকি দোভাষী স্ক্রিপ্টগুলিতে সম্মান জানাতে ব্যবহার করা যেতে পারে। (এটি এইচটিটিপি ডেমন স্ট্যাট দ্বারা করা হয়) প্রতিটি ফাইলকে যুক্ত করে এবং তার নিজস্ব কাস্টম কাঁটাচামচ () / এক্সিকিউট () কোড ব্যবহার করে, এক্সিকিউটেবলকে পাস করার পরিবর্তে এক্সিকিউট () ভেক্টরটিতে সঠিকভাবে ইন্টারপ্লেটার স্ট্রিংকে ইন্টারপোল্ট করে '

এগুলি কেবল সর্বাধিক সাধারণ নির্দেশিকা। এগুলি সমস্ত পরিস্থিতিতে "নিখুঁত" নয় এবং আপনার ওয়েব সার্ভার এবং আপনার ইনস্টল করা ও কনফিগার করছে এমন কোনও ওয়েব অ্যাপ্লিকেশন বা ফ্রেমওয়ার্কের অবশ্যই অবশ্যই ডক্সের পরামর্শ নেওয়া উচিত ... এবং আপনি সম্ভবত আপনার আগে ইউনিক্স সুরক্ষা বিশেষজ্ঞের সাথে পরামর্শ করতে চান আপনার ফাইল, কোড বা সার্ভারগুলির যে কোনওটিকে পাবলিক ইন্টারনেটে প্রকাশ করুন।

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