Organization of multi-user access to GIT server

Cum institutionem et conformationem Git server, quaestio oritur de accessu ordinando plures utentes ad plura incepta. Exquisivi rem et solutionem inveni quae omnia requisita mea occurrerunt: simplex, tuta, certa.

Vota mea sunt:

  • quisque usor coniungit cum sua ratione
  • Plures users potest operari in unum project
  • idem usor potest pluribus inceptis
  • usor quisque aditum habet solum ad ea incepta ad quae operatur
  • Possibile est per lineam praecepti coniungi et non solum per interfaces aliquos

Etiam sit amet magna

  • da legere solum permissiones regendi homines
  • Commode user accessum ius administrandi in Git

Overview of possible options for accessing GIT server

Imprimis scire debes quid ex eligamus, ut hic protocols Git perspectus velox est.

  • ssh - ratio usoris specialiter creata adhibetur ut servo accedere.
    • Mirum est quod Git a commendatione unius rationis usum non excludit ad omnia repositoria accedere. Hoc meum requisita omnino non occurrit.
    • Multis rationibus uti potes, sed quomodo usor aditus ad certa directoria limitare potes?
      • Clausula in directorium domus non convenit, quia difficile est ibi accessum scribere pro aliis utentibus
      • Usura symlinka e indice domus tuae etiam difficile est quia Git eas ut nexus non interpretatur
      • Possibile est aditum ad interpretem restringere, sed nulla est plena cautione semper operari
        • Communiter coniungere tuum mandatum interpretem pro talibus utentibus potes, sed
          • Uno modo, quod iam est aliquod difficile iudicium;
          • secundo, hoc potest circumveniri.

    Sed fortasse non obstat quod usor mandata quaelibet facere poterit? Ad hunc methodum postea redibimus, sed nunc reliqua breviter consideremus, fortasse simplicius aliquid erit.

  • Protocollum locale git in compositione cum sshfs adhiberi potest, plures utentes adhiberi possunt, essentialiter autem idem cum casu praecedente.
  • http - legere solum
  • git non legitur, nisi
  • https - difficile ad instituendum, programmate addito opus est, quaedam tabula moderandi ad accessum usoris ordinandum ... spectat factibile, sed quodammodo omnia perplexa sunt.

Usus ssh protocol ad organize multi-user accessum ad Git servo

Redeamus ad ssh protocollum.

Cum uteris ssh accessum ad git, debes securitatem notitia servo curare. Usor qui per ssh coniungit proprio login in servo Linux utitur, ita per clientem ssh coniungere possunt et ad lineam mandato servi accedere.
Nulla omnino est contra talem accessum praesidium.

Sed usor in lima Linux non debet interesse. Informatio notabilis tantum in git repositorio reponitur. Propterea accessum per lineam mandatum restringere non potest, sed instrumentis Linux utens prohibere utentem ab inceptis videndi, exclusis iis quibus ipse communicat.
Perspicua optio est utendi systemate permissionum Linux.

Ut iam dictum est, una tantum ratione accessus ssh uti potest. Haec conformatio pluribus usoribus tuta non est, quamvis in indice optionum git commendatarum comprehendatur.

Ad requisita in principio articuli deducenda, sequens directorium structura creatur cum assignatione iurium et possessorum;

I) project directoriis

dir1(proj1:proj1,0770)
dir2(proj2:proj2,0770)
dir3(proj3:proj3,0770)
...
quibus
dir1, dir2, dir3 - directoria project: project 1, project 2, project 3 .

proj1:proj1, proj2:proj2, proj3:proj3 specialiter creati sunt Linux utentes qui tamquam dominis directoriis projecti respondentis deputantur.

permissiones pro omnibus directoriis 0770 ponuntur ad plenum accessum domino et suo coetui et pro omnibus aliis bannum completum.

II) elit rationes

Разработчик 1: dev1:dev1,proj1,proj2
Разработчик 2: dev2:dev2,proj2,proj3

Praecipuum illud est quod developers deputantur adiectionem coetus systematis usoris possessori congruentis propositi. Hoc fit ab administratore Linux cum uno mandato.

In hoc exemplo "Developer 1" laborat in inceptis proj1 et proj2, et "Developer 2" laborat in inceptis proj2 et proj3.

Si quis e Developers iungat per ssh per lineam praecepti, eorum iura etiam non sufficiunt ad exploranda directoria projectoria contenta in quibus non participant. Hoc seipsum mutare non potest.

Cum fundamentum huius principii sit fundamentalis securitas iurium Linux, hoc schema certum est. Facillimum praeterea schema est administrare.

Lets movere in usu est.

Creando Git repositoria in Linux server

Sit scriptor reprehendo.

[root@server ~]# cd /var/
[root@server var]# useradd gitowner
[root@server var]# mkdir gitservertest
[root@server var]# chown gitowner:gitowner gitservertest
[root@server var]# adduser proj1
[root@server var]# adduser proj2
[root@server var]# adduser proj3
[root@server var]# adduser dev1
[root@server var]# adduser dev2
[root@server var]# passwd dev1
[root@server var]# passwd dev2

Typing fessus sum manu ...

[root@server gitservertest]# sed "s/ /n/g" <<< "proj1 proj2 proj3" | while read u; do mkdir $u; chown $u:$u $u; chmod 0770 $u; done

[root@server gitservertest]# usermod -aG proj1 dev1
[root@server gitservertest]# usermod -aG proj2 dev1
[root@server gitservertest]# usermod -aG proj2 dev2
[root@server gitservertest]# usermod -aG proj3 dev2

Persuasum est nobis impossibile esse repositoria aliorum accedere ex linea mandatorum et etiam eorum contenta inspicere.

[dev1@server ~]$ cd /var/gitservertest/proj3
-bash: cd: /var/gitservertest/proj3: Permission denied
[dev1@server ~]$ ls /var/gitservertest/proj3
ls: cannot open directory /var/gitservertest/proj3: Permission denied

Collabora cum multis tincidunt in eodem proposito Git

Una quaestio manet, si unus elit limam novam introducit, aliae tincidunt eam mutare non possunt, quia ipse dominus eius est (exempli gratia dev1), et non utens instituti (exempli gratia proj1). Cum repositorium server latus habemus, ante omnia scire opus est quomodo directorium ".git" exstructum est et num novae tabulae creantur.

Creando locale Git repositorium et propellentibus ad Git servo

Transeamus ad machinam clientem.

Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:gittest>git init .
Initialized empty Git repository in C:/gittest/.git/

C:gittest>echo "test dev1 to proj2" > test1.txt

C:gittest>git add .

C:gittest>git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test1.txt

C:gittest>git commit -am "new test file added"
[master (root-commit) a7ac614] new test file added
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt
 
C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>git push origin master
dev1:[email protected]'s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes | 243.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://10.1.1.11/var/gitservertest/proj2
 * [new branch]      master -> master

C:gittest>

Eodem tempore nova tabularia in calculonis servi creantur et ad usorem pertinent qui impulsum exercent

[dev1@server proj2]$ tree
.
├── 1.txt
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── 75
│   │   └── dcd269e04852ce2f683b9eb41ecd6030c8c841
│   ├── a7
│   │   └── ac6148611e69b9a074f59a80f356e1e0c8be67
│   ├── f0
│   │   └── 82ea1186a491cd063925d0c2c4f1c056e32ac3
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

12 directories, 18 files
[dev1@server proj2]$ ls -l objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
-r--r--r--. 1 dev1 dev1 54 Jun 20 14:34 objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
[dev1@server proj2]$

Cum upload mutationes ad Git server, additamenta lima et directoria creantur, eorumque dominus est actu utentis qui onerationis facit. Sed tunc coetus harum imaginum et directoriorum etiam respondet principali huius usoris, id est, coetus dev1 pro usuario dev1 et pro dev2 usoris dev2 (mutans coetus principalis usoris usoris non adiuvabit; quia tunc quomodo in multis inceptis operari potes?). Hoc in casu, usor dev2 mutare non poterit files a user dev1 creatas, quae naufragium in functionality ducere possunt.

Linux chown - mutantur dominus lima a ordinarius user

Dominus fasciculi dominium suum mutare non potest. Sed potest mutare coetum fasciculi qui ad ipsum pertinet, et tunc hic fasciculus immutari potest ab aliis usoribus qui in eodem coetu sunt. Id eget enim.

Using Git hamo

Directorium ad hamum operans est directorium radicis rei. hamus exsecutabilis est qui sub dis usoris agit. Hoc scientes, consilia nostra aggredi possumus.

[dev1@server proj2]$ mv hooks/post-update{.sample,}
[dev1@server proj2]$ sed -i '2,$ s/^/#/' hooks/post-update
[dev1@server proj2]$ cat <<< 'find . -group $(whoami) -exec chgrp proj2 '"'"'{}'"'"' ;' >> hooks/post-update

aut iustus

vi hooks/post-update

Redeamus ad machinam clientem.

C:gittest>echo "dev1 3rd line" >> test1.txt

C:gittest>git commit -am "3rd from dev1, testing server hook"
[master b045e22] 3rd from dev1, testing server hook
 1 file changed, 1 insertion(+)

C:gittest>git push origin master
dev1:[email protected]'s password:
   d22c66e..b045e22  master -> master

In servo Git, operationem hami post-reditas scriptoris post committendum inspicimus

[dev1@server proj2]$ find . ! -group proj2

— vacua, omnia denique.

Alter elit connectens in Git

Alterum elit opus simulare.

In clientis

C:gittest>git remote remove origin

C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>echo "!!! dev2 added this" >> test1.txt

C:gittest>echo "!!! dev2 wrote" > test2.txt

C:gittest>git add test2.txt

C:gittest>git commit -am "dev2 added to test1 and created test2"
[master 55d49a6] dev2 added to test1 and created test2
 2 files changed, 2 insertions(+)
 create mode 100644 test2.txt

C:gittest>git push origin master
[email protected]'s password:
   b045e22..55d49a6  master -> master

Et eodem tempore in calculonis servi.

[dev1@server proj2]$ find . ! -group proj2

— vacua rursus omnia opera.

Deletis a Git incepto et downloading project a Git servo

Bene, iterum fac ut omnes mutationes servatae sint.

C:gittest>rd /S /Q .
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

- delere consilium Git, simpliciter indicem penitus purgare. Patiamur errorem qui generatur, quia non potest hoc mandatum utentes directorium hodiernae delere, sed hoc est prorsus moribus quibus opus est.

C:gittest>dir
 Содержимое папки C:gittest

21.06.2019  08:43    <DIR>          .
21.06.2019  08:43    <DIR>          ..

C:gittest>git clone ssh://[email protected]/var/gitservertest/proj2
Cloning into 'proj2'...
[email protected]'s password:

C:gittest>cd proj2

C:gittestproj2>dir
 Содержимое папки C:gittestproj2

21.06.2019  08:46    <DIR>          .
21.06.2019  08:46    <DIR>          ..
21.06.2019  08:46               114 test1.txt
21.06.2019  08:46                19 test2.txt
C:gittestproj2>type test1.txt
"test dev1 to proj2"
"dev1 added some omre"
"dev1 3rd line"
"!!! dev2 added this"

C:gittestproj2>type test2.txt
"!!! dev2 wrote"

Sharing accessum in Git

Nunc faciamus ut etiam per Git secundae elit accedere non possit Proj1 propositum, in quo non laborat.

C:gittestproj2>git remote remove origin

C:gittestproj2>git remote add origin "ssh://[email protected]/var/gitservertest/proj1"

C:gittestproj2>git push origin master
[email protected]'s password:
fatal: '/var/gitservertest/proj1' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Nunc permittimus accessum

[root@server ~]# usermod -aG proj1 dev2

deinde omnia opera.

C:gittestproj2>git push origin master
[email protected]'s password:
To ssh://10.1.1.11/var/gitservertest/proj1
 * [new branch]      master -> master

Pro magis notitia,

Accedit, si quaestio est de permissionibus defaltis cum files et directoriis creandis, in CentOS imperio uti potes.

setfacl -Rd -m o::5 -m g::7 /var/gitservertest

Item in parvis utilibus rebus offendas;

  • quomodo aedificare directorium arboris in Linux
  • quemadmodum in sed a linea quadam usque ad finem tabella, id est substituendum in sed in omnibus lineis praeter primam lineam.
  • Quomodo invertere condicionem inquisitionis in Linux inveniat?
  • Quomodo plures lineas transire in fasciam utens unum liner in concha Linux
  • Quomodo effugere singula quotes in vercundus
  • quam delere directorium cum omnibus contentis in fenestris order versus
  • Quomodo uti bash mv ad fasciculum renominationum sine iterum scribendo?

Lorem animos.

Source: www.habr.com

Add a comment