গিট সংগ্রহস্থানে / ইত্যাদি / ট্র্যাকিং করার সময় এবং root হিসাবে প্রতিশ্রুতি দেওয়ার সময় ব্যবহারকারীর নামগুলি সঠিক করে দিন


13

আমরা /etc/আমাদের সার্ভারে পরিবর্তনগুলি ট্র্যাক করতে গিট ব্যবহার করি ।

প্রশাসকরা / ইত্যাদি / এ ফাইলগুলি পরিবর্তন করার সময় রুট হিসাবে কাজ করে এবং সুতরাং তাদের কমিটির লেখক রয়েছে

root <root@machinename>

এটি খুব সন্তোষজনক নয় যেহেতু আপনি দেখতে পাচ্ছেন না কোন প্রশাসক আসলে পরিবর্তন করেছে।

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


প্রকৃত মূল হিসাবে, বা রুট করতে হবে?
ডেকাডো

বর্তমানে প্রকৃত রুট (SSH রুট @ অথবা "su কমান্ড", কোন উবুন্টু) হিসাবে
cweiske

ব্যবহার করুন etckeeper, এটি ভার্শনিং / ইত্যাদির মতো অদ্ভুত গোটচের যত্ন নেয় care এছাড়াও প্রতি ব্যবহারকারী অ্যাকাউন্ট এবং ব্যবহার শুরু করুন sudo
কালেব

উত্তর:


12

Git লেখক এবং committer নাম এনভায়রনমেন্ট ভেরিয়েবল সঙ্গে প্রভাবিত হতে পারে GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAMEএবং GIT_AUTHOR_EMAIL

এখন কৌশলটি হ'ল এসএসএইচ এর মাধ্যমে সংযোগ করার সময় সেই পরিবর্তনগুলি দূরবর্তী সার্ভারে জমা দেওয়া:

  1. আপনার ~/.bashrcফাইলের ভেরিয়েবলগুলি সংজ্ঞা এবং রফতানি করুন:

    export GIT_AUTHOR_NAME="Christian Weiske"
    
  2. এগুলি সামঞ্জস্য করে স্বয়ংক্রিয়ভাবে এসএসএইচ সংযোগ সহ তাদের প্রেরণ করুন ~/.ssh/config:

    SendEnv LANG LC_* GIT_*
    

    LANGএবং LC_*neccesary নয়, কিন্তু দেবিয়ান তার পরে তাদের ডিফল্ট ssh_config আছে, তাই আমি ভেবেছিলাম আমিও তাদের জমা দিতে হবে

  3. রিমোট সার্ভারে, পরিবেশের ভেরিয়েবলগুলি গ্রহণ করতে sshd কনফিগারেশনটি সামঞ্জস্য করুন :/etc/ssh/sshd_configGIT_*

    AcceptEnv LANG LC_* GIT_*
    

ভয়েলা - একটি git commitমূল হিসাবে /etc/বাড়ে:

commit 8a4654f13241f05361283a88ce041a0fc24b8ac6
Author: Christian Weiske <christian.weiske@netresearch.de>

কেস serverfault ফল্ট ভবিষ্যৎ মধ্যে কিছু সময়: http://cweiske.de/tagebuch/carry-git-settings.htm


5

প্রথম, এবং আপনার প্রশ্নের সাথে সম্পর্কিত নয়, আমি আপনাকে অনুরোধ করব জরুরীভাবেroot লগইনগুলি suব্যবহার করতে এবং ব্যবহারকারী লগইনগুলি ব্যবহার করতে এবং sudoতার পরিবর্তে to আপনার rootলগইনগুলিকে কেবল কনসোলের মধ্যে সীমাবদ্ধ করুন , এমনকি তাও নয়।

এটি বলেছিল, git commitএকটি --authorবিকল্প রয়েছে যা আপনাকে সেখানে সহায়তা করতে পারে:

# git commit --author='Author Name <author@email.address.com>' -a

আপনি প্রতি ব্যবহারকারীকে পরিবেশগত পরিবর্তনশীলগুলি সেট GIT_AUTHOR_NAMEএবং GIT_AUTHOR_EMAILভেরিয়েবলগুলি সাবধানতার সাথে ব্যবহার করতে পারেন । লগতে, এটি বিভিন্ন লেখক এবং একই প্রতিশ্রুতিবদ্ধ ( root@host) প্রদর্শিত হবে , তবে এটি আপনাকে আরও নিরীক্ষণ দেবে। অবশ্যই এর অর্থ আপনি ভেরিয়েবল অক্ষত রাখতে আপনার প্রশাসকদের উপর নির্ভর করেন trust যেহেতু প্রত্যেকে একটি নির্দিষ্ট শেল ব্যবহার করছে, তারা পৃথক পৃথক পৃথক ভেরিয়েবলগুলির sudoসাহায্যে একটি ফাইলকে মূল এবং উত্স করতে পারে git, কমিটগুলিতে প্রতিটি আলাদা করে সনাক্ত করে। খুব ব্যবহারিক নয়, তবে আপনি স্ক্রিপ্টগুলির সাহায্যে এটি স্বয়ংক্রিয়করণও করতে পারেন।

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


--authorঅবশ্যই সম্ভব তবে লোকেরা তাদের স্বাভাবিক কর্মপ্রবাহে এটি ব্যবহার করে না কারণ এটি লেখার পক্ষে খুব বেশি। সুডো ব্যবহারের আপনার দ্বিতীয় ধারণার বিষয়ে: আমি এমন লোকদের মধ্যে একজন যারা sudo কে ক্ষতিকারক মনে করে এবং কেবল ssh কীগুলির সাহায্যে ssh রুট অ্যাক্সেস ব্যবহার করি। এবং হ্যাঁ, আমরা আমাদের প্রশাসকদের বিশ্বাস করি।
সিউইস্কে

5
@ cweiske- কে আপনি সুডো ক্ষতিকারক মনে করেন?
coredump

1
@ কেইইস্কে আপনি কি এমন একটি মোড়ক স্ক্রিপ্ট বিবেচনা করেছেন যা জরুরী তথ্যের জন্য কমিটিকে জিজ্ঞাসাবাদ করে (তারা কে, তারা কী বদলেছে, কেন পরিবর্তন আনা হয়েছে, প্রযোজ্য ক্ষেত্রে টিকিট নম্বর)? আমার নিয়োগের শেষ স্থানটিতে ডিএনএস পরিবর্তনের জন্য অনুরূপ সিস্টেম (সিভিএস-ভিত্তিক) ছিল, নীতি প্রয়োগের জন্য মোড়ক - আশ্চর্যজনকভাবে ভাল কাজ করে।
voretaq7

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

2
আপনি sudoপ্রতিটি কমান্ডের ( timestamp_timeout = 0) কমান্ডের জন্য কোনও ব্যবহারকারীকে পাসওয়ার্ড দিতে বাধ্য করার জন্যও কনফিগার করতে পারেন । সম্ভবত বিকাশ এবং মঞ্চের বাক্সগুলির জন্য উপযুক্ত নয় তবে উত্পাদনের জন্য অবশ্যই উপযুক্ত। আইএমএইচও, এসএফ conকমত্যের ভিত্তিতে, আপনার নিজের মতামতগুলি পুনর্বিবেচনা করা উচিত sudo। এসএফ সম্পর্কে দুর্দান্ত জিনিসগুলির মধ্যে একটি হল পিয়ারদের একটি সম্প্রদায় যাঁরা সত্যই তাদের sh * t :-) জানেন।
বেলমিন ফার্নান্দেজ

3

সঙ্গে পুটিং আপনি "-> তথ্য -> পরিবেশ ভেরিয়েবল সংযোগ" এর অধীনে এই সেট করতে পারেন।

তারা suরুট করতে ' ' এর পরেও উপস্থিত রয়েছে ।


3

আপনি যদি ssh কী ব্যবহার করে আপনার সার্ভারে ব্যবহারকারীর অ্যাকাউন্টগুলির বিধান করে থাকেন তবে আপনি সেটআপের সময় অনুমোদিত কীগুলিতে আসলে পরিবেশের ভেরিয়েবলগুলি সংযুক্ত করতে পারেন - উদাহরণস্বরূপ ~ বব / .ssh / অনুমোদিত_কিজে

environment="GIT_AUTHOR_NAME=Bob Smith",environment="GIT_AUTHOR_EMAIL=bob.smith@megacorp.com" ssh-rsa AAAA.... bob.smith@megacorp.com

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

দ্রষ্টব্য: উপরের PermitUserEnvironment yessshd_config এ প্রয়োজন


1

আপনি যদি ব্যবহার করছেন sudoএবং আপনার অ-রুট ব্যবহারকারীদের তাদের হোম ডিরেক্টরি মাউন্ট করা আছে:

git -c include.path=<file>মধ্যে কনফিগারেশন অন্তর্ভুক্ত করা হবে <file>

আমার অ-রুট ব্যবহারকারীর কনফিগারেশন ফাইলগুলিতে স্বয়ংক্রিয়ভাবে টানতে, আমি bashনামটি ব্যবহার করেছি :

alias gsudo='sudo git -c "include.path='"${XDG_CONFIG_DIR:-$HOME/.config}/git/config\" -c \"include.path=$HOME/.gitconfig\""

তারপরে আমি উভয়ের gsudoপরিবর্তে ব্যবহার করব git:

  • রুট হিসাবে চালান
  • সমস্ত অ-রুট ব্যবহারকারী গিট কনফিগারেশন অ্যাক্সেস আছে

কনফিগারেশনটি আসলে আমদানি করা হচ্ছে কিনা তা পরীক্ষা করুন:

gsudo config --list --show-origin --includes | less

0

সোরডাম্পের জবাব ছাড়াও আপনি এই বিকল্পগুলিকে .git/configআপনার কার্যের অনুলিপিতে সংগ্রহ করতে পারবেন (হাতে হাতে, বা git configকমান্ডটি ব্যবহার করে) ।

দেখুন man git-configকমান্ড শীতল জিনিস আপনি এটি দিয়ে কি করতে পারেন আরো তথ্যের জন্য।


এটি কেবল তখনই কাজ করে যদি কোনও প্রশাসক সেই মেশিনে সেই রেপোতে প্রতিশ্রুতি দেয় তবে বেশ কয়েকটি প্রশাসকের সাথে এটি ব্যর্থ হয়।
cweiske

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