.Git ডিরেক্টরি ওয়েবকে অ্যাক্সেসযোগ্য করুন


129

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

আমার .htaccess ব্যবহার করা উচিত? আমি .git এর অনুমতি পরিবর্তন করা উচিত?


সার্ভারফল্টে থাকা উচিত
২:17

8
সার্ভারফল্টে রয়েছে: সার্ভারসফল্ট
প্রশ্ন /

উত্তর:


39

ফোল্ডারে একটি .htaccessফাইল তৈরি করুন .gitএবং এই ফাইলটিতে নিম্নলিখিতগুলি রাখুন:

Order allow,deny
Deny from all

তবে মনে রাখবেন যে আপনি যদি কোনও ভাণ্ডার পুনরায় ক্লোন করে ফেলেন তবে তা নষ্ট হয়ে যাবে


38
সত্য, তবে আমি এটি .git/ডিরেক্টরিতে রেখে দেওয়ার বিরুদ্ধে সুপারিশ করব কারণ আপনি যদি কোনও ভাণ্ডার পুনরায় ক্লোন করেন তবে তা হারিয়ে যাবে lost
জ্যাক ওয়ার্টন

আপনার একাধিক .git ডিরেক্টরি থাকলে এই ব্যথা হয় এবং আপনি যদি কখনও ডিরেক্টরিটি পুনরায় ক্লোন করে থাকেন তবে অবশ্যই তা করা উচিত।
বেনেট ম্যাকএলউই

1
আমি এটি চেষ্টা করে দেখতে পেয়েছি এবং এটি এটি কার্যকরভাবে কাজ করেছে এবং আপাতদৃষ্টিতে এমন কোনও সমাধান রয়েছে যা এই সেটিংটিকে .git এর মধ্যে রাখে / উপরে উল্লিখিত 2 টি ত্রুটি রয়েছে, প্রথমটি সবচেয়ে খারাপ বলে মনে হচ্ছে, তৃতীয়টি সম্ভবত সব থেকে খারাপ: উদ্ধৃতি (.git ডিরেক্টরি ওয়েব করুন অ্যাক্সেসযোগ্য) এটি কীভাবে এবং কারা দ্বারা সম্পন্ন হয়েছে তা কীভাবে ছোট তবে এখনও তথ্যের কী (এটির সুরক্ষার জন্য বিশেষত বিশ্লেষণ সহ এবং সঠিকভাবে না করার আগে বিশ্লেষণ সহ) বিট ইন। Git / এটি সত্যই তথ্যের অংশ নয় ( সংস্করণযুক্ত এবং ভাগ করা এবং ভাল-সংরক্ষিত সহ) তাই পুনরুদ্ধার করা হয়নি ... এক সেরা পুটের সাথে সঙ্গতিপূর্ণ।
গন্তব্য আর্কিটেক্ট

3
কেন এটি গৃহীত উত্তর এবং বেনেটের নয়? এটি সমাধানের জন্য তাঁর সহজ এবং কার্যকর কৌশল।
জোশ ফ্রাঙ্কেল

1
সম্ভবত সম্ভবত অপরটি পোস্ট হওয়ার দু'বছর আগে ওপি এটি গ্রহণ করেছিল;)
থিফমাস্টার

379

আপনার ওয়েব সার্ভারের মূলে.htaccess এটি একটি ফাইলে রাখুন :

RedirectMatch 404 /\.git

এই সমাধানটি দৃust় এবং সুরক্ষিত : এটি

  • .gitএকাধিক থাকলেও আপনার সাইটে সমস্ত ডিরেক্টরিতে কাজ করে ,
  • এছাড়াও লুকায় মত অন্যান্য গীত ফাইল .gitignoreএবং.gitmodules
  • এমনকি সদ্য যুক্ত হওয়া .gitডিরেক্টরিগুলির জন্যও কাজ করে এবং
  • এমনকি ডিরেক্টরি বিদ্যমান থাকার সত্যতাও দেয় না।

1
এটি .gitফোল্ডারে কাজ করেছে , তবে আমি এখনও .gitignoreফাইলটি টেনে আনতে পারি।
কুর্ট এমচ

আমার রেজেক্স আমার পরীক্ষায় কাজ করে এবং রেডাইরেক্ট ম্যাচের ডকুমেন্টেশন অনুসারে কাজ করা উচিত যেহেতু রেইজেক্সের কেবল পুরো URL নয়, কেবলমাত্র ইউআরএল-এর কিছু অংশ মেলে: লিঙ্কযুক্ত অ্যালিয়াস ম্যাচের ডকুমেন্টেশনে "সূক্ষ্ম পার্থক্য" নোট দেখুন । তবুও ডক্সটি একটি জিনিস, আসল পৃথিবী অন্যটি। @ আর্টলজিক রেজেক্স পুরো URL এর সাথে মেলে না, তাই হয়তো অ্যাপাচে কিছু সংস্করণের পার্থক্য রয়েছে বা আমি কেবল জিনিসগুলি ভুলভাবে লিখছি।
বেনেট ম্যাকএলউই

2
@ বেনিটএমসিএলওয়ে - ডকুমেন্টেশনটি ঘনিষ্ঠভাবে দেখার পরে এবং কয়েকটি পরীক্ষা চালানোর পরে দেখে মনে হচ্ছে যে ওয়াইল্ডকার্ডগুলি আমার পক্ষে সর্বোপরি প্রয়োজনীয় নয়। সমাধানের জন্য ধন্যবাদ। দুর্দান্ত কাজ!
আর্টলোগিক

অ্যাপাচি 2 ডক্স অনুসারে আপনি এটিকে অন্য কনফিগারেশনের প্রসঙ্গেও রাখতে পারেন:server config, virtual host, directory, .htaccess
বেনোস

আমি এমনকি অভিব্যক্তিটির শেষে "। *" যুক্ত করার পরামর্শ দিই, যাতে .git / এর অধীনে কোনও ফাইল / ফোল্ডার অ্যাক্সেস করা যায় না ->RedirectMatch 404 /\.git.*
দিমিত্রি

33

উভয় .htaccessএবং .git/ফোল্ডারে অনুমতি অনুমতি কাজ করবে। আমি পূর্বের সুপারিশ:

<Directory .git>
    order allow,deny
    deny from all
</Directory>

সার্ভার সেটিংসের কারণে আমাকে <ডিরেক্টরি> নির্দেশিকা ব্যবহারের অনুমতি নেই বলে অ্যাপাচি ব্যবহারের অন্য উপায় আছে কি?
ক্রিস মুনচ

2
মিলের সমস্ত ধরণের পদ্ধতি রয়েছে (যেমন <Files>,, <FilesMatch>)।
জ্যাক ওয়ার্টন

4
এই উত্তরটি একেবারে ভুল - ডিরেক্টরিটি htaccess ফাইলগুলিতে কেবল অনুমোদিত নয়। এটি সার্ভার সেটিংসের উপর নির্ভর করে না।
doublemarked

2
এনআই 8 ভিডিওয়াই = 1 বার 1 টি ব্যর্থ হয়েছি আমি এটি চেষ্টা করে দেখেছি: ড্রিমহোস্ট শেয়ার্ড হোস্টিংয়ে, আমি এটি ওয়েবসাইটের মূলের .htaccess এ রেখেছি http: থেকে ওয়েবসাইট রুটে সার্ভার লগগুলি ত্রুটির উদ্ধৃতি দিয়েছিল (.. <ডিরেক্টরি এখানে অনুমোদিত নয়)। 2 জন মন্তব্যকারী ইতিমধ্যে এই সমস্যার বিষয়ে সতর্ক হয়েছেন এবং সর্বশেষে উদ্ধৃতিটি বলেছেন (ডিরেক্টরিটি কেবলমাত্র .htaccess ফাইলগুলিতে অনুমোদিত নয়) এবং সরকারী ডিরেক্টরি ডকসগুলি দেখুন httpd.apache.org/docs/current/mod/core.html# ডিরেক্টরি নির্দেশিকা বলুন (প্রসঙ্গ: সার্ভার কনফিগার, ভার্চুয়াল হোস্ট) এবং তাই না। htaccess। তবে এটির ভোট 26, সুতরাং যারা .htaccess থেকে এটি কীভাবে কাজ করবেন সন্ধান করছেন, PLS আপডেট সলিউশন ব্যাখ্যা করে।
ভাগ্য স্থপতি

ডাউনস্টোটের জন্য দুঃখিত - @ ডেস্টিনিআরচিটেক্টের সাথে সম্মত হন তবে এটি বিভ্রান্তিকর।
Kael

7

আমি .gitডিরেক্টরিতে ঘাটাঘাটি করতে চাইনি এবং অ্যাপাচি ২.২-তে কাজ করার জন্য বেনিটের সমাধান পেতে সক্ষম হইনি , তবে আমার <VirtualHost>কনফিগারেশনে নিম্নলিখিতগুলি যুক্ত করে কাজ করেছি:

RewriteRule ^.*\.git.* - [R=404]

5

আমি আমার .git ফোল্ডারগুলিতে স্বতন্ত্রভাবে অ্যাক্সেস নিয়ন্ত্রণ করতে স্বাচ্ছন্দ্যবোধ করি না এবং আমাকে ওভাররাইট করা রোধ করতে বা কোনও নতুন ইনস্টল ইত্যাদি ভুলে যাওয়ার জন্য .htaccess এর পরিবর্তে অ্যাপাচি কনফিগারেশনের মাধ্যমে এটি করা বেছে নিতে পারি

এখানে কিছু বিশদ নির্দেশাবলীর আশা করি তারা সহায়তা করে। আমি উবুন্টু 16.10 ব্যবহার করছি।

  1. আপনি যদি ব্রাউজারের .git ফোল্ডারে নেভিগেট করেন তবে প্রথমে কী হবে তা পরীক্ষা করে দেখুন। আমার ক্ষেত্রে আমাকে একটি ডিরেক্টরি তালিকা উপস্থিত করা হয়েছিল। আপনি যদি দেখতে পাচ্ছেন যা আপনাকে দেখা উচিত নয় (যেমন আপনি 404 পাচ্ছেন না) তবে নিম্নলিখিতটি করুন।
  2. HTTPD_ROOT এবং SERVER_CONFIG_FILE পেতে apache2ctl -V ব্যবহার করুন
  3. আপনার অ্যাপাচি কনফিগারেশন সম্পাদনা করতে এটি ব্যবহার করুন, আমার ক্ষেত্রে do sudo Nano /etc/apache2/apache2.conf
  4. কনফিগার ফাইলে কোথাও নিম্নলিখিতটি যুক্ত করুন: 404 /.git পুনর্নির্দেশ
  5. অ্যাপাচি পুনরায় চালু করুন: do সুডো সার্ভিস অ্যাপাচি 2 রিস্টার্ট
  6. আপনি যদি আবার ফোল্ডারে নেভিগেট করেন তবে এখন আপনাকে একটি 404 পাওয়া উচিত
  7. আমি .gitignore দিয়ে এটি চেষ্টা করেছিলাম এবং একটি 404 পেয়েছি

4

আরও শক্তিশালী এবং সহজ বিকল্পটি .gitডিরেক্টরিটির READ এবং এক্সিকিউশন অনুমতিটি নিষ্ক্রিয় করবে ।

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

আদেশটি হতে পারে:

chmod -R o-rx .git

এমন একটি মেশিনে যেখানে এসএগুলি .htaccess ব্যবহার চায় না এবং তাদের httpd.conf- টাইপ ফাইলগুলির সাথে আমাকে গণ্ডগোল করতে চায় না, এটি সর্বোত্তম সমাধান বলে মনে হয়।
এলিয়েন লাইফ ফর্ম

1
সুস্পষ্ট নেতিবাচকতা হ'ল আপনি যদি পুনরায় ক্লোন করেন তবে আপনাকে chmodআবার দৌড়াতে হবে ।
লরি নুরমি

3

মোড_উইরাইট আপনাকে পছন্দসই প্রভাব দেবে:

RewriteEngine on
RewriteRule .*\.git/.* - [F]

9
এটি একটি তথ্য প্রকাশের দুর্বলতা: এটির পক্ষে .gitডিরেক্টরিটির অস্তিত্ব নির্ধারণ করা সহজ হয় কারণ এটি খুঁজে পাওয়া যায় না তার পরিবর্তে একটি নিষিদ্ধ কোড দেয়।
বেনেট ম্যাকএলউই

2
গিট ব্যবহার করা কোনও দুর্বলতা নয়
আদম

1

.htaccessবেশিরভাগ উত্তরের মতো নিয়মগুলি নিয়ে গণ্ডগোলের পরিবর্তে, কেবল .git/ডিরেক্টরিটিকে ওয়েব্রোটের উপরে রাখবেন না কেন ?

আমার সেটআপগুলিতে, আমার .gitডিরেক্টরিটি সাধারণত এমন কিছুতে বাস করে:

/home/web/project_name/.git/

আমার আসল কোডটি বাস করে

/home/web/project_name/www_root/

যেহেতু আমার ওয়েব মূলটি (অ্যাপাচি বা এনগিনেক্সে সংজ্ঞায়িত .. আমি দ্বিতীয়টি পছন্দ করি) ওয়েব ডিরেক্টরি থেকে "উচ্চতর" বাস করার পরে ডিরেক্টরিটি ওয়েব থেকে অ্যাক্সেসযোগ্য হওয়ার /home/web/project_name/www_root/কোনও উপায় নেই is.git


সুতরাং পাবলিক_এইচটিএমএল রেপো ওয়ার্কিং ডিয়ারের একটি সাবডির? আকর্ষণীয় শোনাচ্ছে
হ্যাডেন থ্রিং

না, এটি একটি উপ-ডিরেক্টরি নয়। তারা আমার মূল প্রকল্প ডিরেক্টরিতে "ভাইবোন"। আমার project_nameডিরেক্টরিতে দুটি সাব-ডাইরেক্টরি রয়েছে: www_rootযেখানে দর্শকরা আমার সাইট ব্রাউজ করবেন তখন ফাইলগুলি প্রকৃতপক্ষে পরিবেশিত হত এবং .gitরেপোটি কোথায়। রেপো আপডেটগুলি www_rootএবং এর সামগ্রীগুলি থেকে টানছে ull জিনিসটি হ'ল .gitডিরেক্টরিটি যেহেতু আমার সামনের নিয়ামকটি "উপরের" শ্রেণিবদ্ধভাবে, তাই এটি ওয়েবের মাধ্যমে অ্যাক্সেসযোগ্য।
জাভিয়ের ল্যারোলেট

আমি মনে করি এটিই আমার অর্থ, সুতরাং আপনার কাছে / হোম / ব্যবহারকারী / পাবলিক_এইচটিএমএল / এবং / হোম / ইউজার/.git আছে
থ্রিং

বাহ যে এত সহজ এবং সহজ সমাধান তার প্রতিভা, (এপাচি সিকিউরিটি। কনফে একটি সার্ভার ওয়াইড ব্লক তৈরি করা শক্ত নয়) কেবলমাত্র আপনার হোস্টিংটিতে পাবলিক_এইচটিএমএলটিতে কিছু অদ্ভুত মালিকানা / অনুমতি সেটিংস থাকলে, পরিবর্তিত হতে পারে।
হেডেন থ্রিং

1
খুব সত্য ... আমার কাছে অন্য উদ্দেশ্যে "অন্যান্য ভাইবোনের ডিরেক্টরি" রয়েছে যা ওয়েব থেকে অ্যাক্সেসযোগ্য থেকে যায়, যা আমাকে রাতে আরও কিছুটা ভাল ঘুমাতে দেয় :)
জাভিয়ের ল্যারোলেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.