অনুমোদনের পরিবর্তন এবং মালিকানা টানতে গিট প্রতিরোধ করার কোনও উপায় আছে কি?


11

যতবার আমি করি git pullবা git reset, আমার gitকরা অনুমতি এবং মালিকানাতে পরিবর্তনগুলি পুনরায় সেট করে। নিজের জন্য দেখুন:

#!/usr/bin/env bash
rm -rf 1 2

mkdir 1
cd 1
git init
echo 1 > 1 && git add 1 && git ci -m 1

git clone . ../2
cd $_
chmod 0640 1
chgrp http 1

cd ../1
echo 12 > 1 && git ci -am 2

cd ../2
stat 1
git pull
stat 1

আউটপুট:

$ ./1.sh 2>/dev/null | grep -F 'Access: ('
Access: (0640/-rw-r-----)  Uid: ( 1000/    yuri)   Gid: (   33/    http)
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    yuri)   Gid: ( 1000/    yuri)

এটির চারপাশে কাজ করার কোনও উপায় আছে?

আমি ওয়েব সার্ভার দ্বারা লেখার জন্য কিছু ফাইল / ডিরেক্টরিকে অ্যাক্সেসযোগ্য করতে চাই।

উত্তর:


4

আপনি চালাচ্ছেন ব্যবহারকারী মত এই শব্দ ডিফল্ট গ্রুপ সেট আছে yuri। আপনি এটির মতো নিশ্চিত করতে পারেন:

$ id -a
uid=1000(saml) gid=1000(saml) groups=1000(saml),10(wheel),989(wireshark)

আপনার অ্যাকাউন্টের ইউআইডি হ'ল: uid=1000(saml)ডিফল্ট গোষ্ঠীটি git=1000(saml)এবং এর পরে কোনও গৌণ গ্রুপ রয়েছে।

দ্রষ্টব্য: আপনি যদি গিট ক্লোনটির নির্দিষ্ট মালিকানা পেতে চান তবে আপনার কাছে কমপক্ষে 2 টি বিকল্প রয়েছে।

বিকল্প 1

আপনি যেমন চান অনুমতিগুলি সহ একটি পিতামাতার ডিরেক্টরি সেট করুন:

$ mkdir topdir
$ chgrp http topdir
$ chmod g+s topdir

$ cd topdir
$ git clone ....

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

বিকল্প # 2

কাজ করার আগে, আপনার ডিফল্ট গোষ্ঠীটি httpপছন্দ করতে এটি পরিবর্তন করুন :

$ newgrp http
$ git clone ...

এই পদ্ধতিটি আপনার নতুন httpডিফল্ট গোষ্ঠীর পরিবর্তে গ্রুপ তৈরি করতে যে কোনও নতুন ফাইল তৈরি করতে বাধ্য করবে yuri, তবে আপনি কেবল newgrpএই ওয়ার্কস্পেসে কাজ করার আগে কোনও কাজ করার কথা মনে রেখেছেন তাই এটি কাজ করবে ।

অন্যান্য অপশন

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


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

@ এক্স-ইউরি - হ্যাঁ দুঃখিত, এটি এখানে সকাল পাঁচটা এবং আমি ঘুমাতে যাচ্ছি 8-)। হ্যাঁ এটি কেবলমাত্র বর্তমান শেলটির জন্যই স্থির থাকে, সুতরাং এটি সেই পদ্ধতির একটি খারাপ দিক হতে পারে। আপনি যদি ওয়েবসারভারের জন্য কেবলমাত্র অ্যাক্সেসের জন্যই পরিকল্পনা করে থাকেন তবে তা কৃপণ হয়ে উঠবে এবং আপনি সম্ভবত এসিএলগুলি ব্যবহার করতে চাইবেন। এছাড়াও আপনি এই প্রশ্নাগুলি আপনার প্রশ্নে যুক্ত করতে চাইতে পারেন As যেমনটি আপনার উদ্দেশ্যটি কী তা পরিষ্কার নয়, তাই আমি কেবল আপনাকে নির্দিষ্ট-অনিশ্চিত শর্তে উত্তর দিতে পারি।
slm

1
@ এক্স-ইউরি - এটির মতো পোস্টের আপডেটের হুক আরও উপযুক্ত হতে পারে: স্ট্যাকওভারফ্লো.com
প্রশ্নস

1
: - @ এক্স-ইউরি অনুমতি নিয়ন্ত্রণের আঙ্গুলসমূহ অধীনে Git বইয়ে আলোচনা করা হয় git-scm.com/book/en/Customizing-Git-Git-Hooks
SLM

আমি প্রকৃতপক্ষে দেখতে পাচ্ছি না যে কেবলমাত্র বর্তমান শেলের জন্য গ্রুপ পরিবর্তন করা কীভাবে একটি খারাপ দিক হতে পারে। আমি এটি নিয়ে উদ্বিগ্ন ছিলাম যে অ্যাপ্লিকেশনের বাকী কাজগুলি পরিবর্তন করে না।
এক্স-ইউরি

2

আমি যে সমাধানটি ব্যবহার করি তা হ'ল ব্যবহারকারীরূপে কমান্ডটি চালানো যা আপনার কাছে রাখতে চান তার অনুমতি রয়েছে:

sudo -u user command

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

আরও দেখুন একই প্রশ্ন এখানে

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