LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

استفاده از مخازن در git برای تعدادی کاربر

يكشنبه, ۲۷ دی ۱۳۹۴، ۱۰:۵۵ ق.ظ
برای مدیریت مخازن و کاربرها توی git راه های زیادی وجود داره. نرم افزارهای گرافیکی تحت وب مثل fisheye و ... و نرم افزارهای خط فرمانی مثل gitosis و همچنین راه حل های دیگه ای هم وجود داره. من شخصا از خودم سعی میکنم زیاد از نرم افزارها توی کار استفاده نکنم چون اعتمادی هم بهشون ندارم. در این بخش تصمیم دارم یکی از راه های سنتی رو در این زمینه به شما آموزش بدم.

اهداف:
۱) ایجاد یک مخزن برای خصوصی سازی کد و همچنین دادن اجازه خواندن (pull) و اجازه نوشتن (push) 
۲) این روش نحوه استفاده از permission های خود یونیکس هست و همونطور که گفتم تنها راه نیست و البته شاید از نظر بعضی هم بهترین راه نباشه.

پیش نیازها:
۱) یک سرور که روی اون گیت نصب شده باشه. میتونید به اینجا مراجعه کنید منتها یادتون باشه که دیگه نیازی نیست مثلا کاربر git رو تعریف کنید و میتونید از این بخش برای کار خودتون توی بخشی که لینکش رو براتون گذاشتم بهره ببرید.
۲) هر کاربر برای استفاده از گیت نیاز به دسترسی ssh داره که توضیحاتش باز توی لینک پیشنیاز بخش اول اومده.
ادامه کار
برای مدیریت کاربرها ابتدا نیاز هست تا شما تعدادی کاربر روی سرور خودتون تعریف کنید:
$ sudo adduser user1
$ su user1
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

در قدم بعد میبایست کلید عمومی کاربر مورد نظر رو به فایل authorized_keys اضافه کنید. 
حالا فزض کنیم این کار رو برای مثلا چندین کاربر انجام دادیم و حالا ما تعدادی کاربر داریم که قادر به برقراری ارتباط ssh با سرور git هستند.

اولین کاری که میکنیم دسترسی ssh رو برای کاربرها میبندیم و تلاش میکنم تا فقط اونها بتونند از طریق ssh دسترسی git داشته باشند:

ابتدا دستور زیر رو بزنید تا ببینید چه shell هایی روی سیستم شما وجود داره:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen

فرض میکنیم شل هایی که در بالا ملاحظه میکنید روی سیستم شما وجود داشته باشه. از دستور زیر برای اینکه مسیر نصب شده شل مربوط به گیت رو ببینید استفاده کنید:

$ which git-shell
/usr/bin/git-shell


معمولا مقدارش چیزی خواهد بود که در بالا ملاحظه میکنید. حالا فایل مورد نظر رو باز کرده و مقدار شل مربوط به گیت رو به اون اضافه کنید:

$ sudo vim /etc/shells


پس حالا باید خروجی زیر رو داشته باشید‫:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/bin/git-shell


حالا برای ثبت تغییرات از دستور زیر استفاده کنید:‫ (یادتون باشه این کار باید برای تمام کاربرایی که ایجاد کردید انجام یشه)

$ sudo chsh user1

بعد از انجام تنظیمات مربوطه حالا باید گروه لازم رو ایجاد کنید. برای ایجاد گروه سناریوهایی رو و آنچه رو که توی ذهنتون هست رو باید خوب با خودتون مرور کنید. مثلا شما میتونید برای هر پروژه یک گروه تعریف کنید و کاربرهای مربوط به اون پروژه رو به عضویت گروه مورد نظر دربیارید.
در ادامه به تعریف گروه و اضافه کردن عضوی به گروه میپردازم:
$ sudo groupadd gproject1
$ sudo usermod -a -G gproject1 user1
. . .

بعد از اینکه اعضا به گروه های خودشون اضافه شدن حالا کافیه تا پروژه ی خودتون رو تعریف کنید. پروژه حتما باید با عبارت git. تمام بشه. بعد از این کار شما باید یک مخزن bare هم برای کار از راه دور تعریف کنید.
$ sudo mkdir -p /opt/git/project1.git
$ cd /opt/git/project1.git
$ sudo git init --bare

در قدم بعد میخوایم مطمان بشیم که حتما کاربرهای مورد نظر به پروژه ی خودشون دسترسی دارن.
$ cd /opt/git
$ sudo chgrp -R gproject1 project1.git
$ sudo chmod -R g+swX project1.git

سطح دسترسی مناسب برای پروژه تعریف شده. حالا کافیه تا ی سری به سیستم محلی کاربر بزنیم تا پروژه ایجاد بشه و بشه باهاش کار کرد.
دستورات زیر رو روی سیستم کاربر بزنید. ابتدا یک مخزن محلی ایجاد کرده و مخزن سرور رو به عنوان یک مخزن راه دور معرفی میکنیم و بعد از اون میتونیم شاخه ی master رو در مخزن origin به اصطلاح pull کنیم.
$ mkdir myproject1.git
$ cd myproject1.git
$ git init
$ git add .
$ git commit -m 'Initial project'
$ git remote add origin user1@gitserver:/opt/git/project1.git
$ git pull origin master

بعد از زدن این دستورات شما همون بخش هایی رو که روی سرور هست رو خواهید داشت و میتونید اولین commit خودتون رو انجام بدید و بعد از اعمال تغییرات اون رو به سرور مورد نظر push کنید.



موافقین ۰ مخالفین ۰ ۹۴/۱۰/۲۷

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی