» »

[Linux][OpenSuSe] SVN repozitorij na Windows shared folders in pravice za datotečni sistem

[Linux][OpenSuSe] SVN repozitorij na Windows shared folders in pravice za datotečni sistem

imagodei ::

Živjo,

imam en zoprn problem, ki ga rešujem že 14 dni... Brez uspeha. Sem prebrskal že vse, kar sem se lahko spomnil na Googlu, aktiviral kolege, ki poznajo Linux. Sam sem v bistvu Linux noob, tako da prosim, da potrpite z mano :)

Gre za sledečo stvar: Postavljam Linux strežnik (Open Suse 10.1) za firmo, na katerem hočemo izvesti Subversion okolje za vzpostavitev kontrole verzij programja, ki ga razvijamo (približno taka zadeva, kot je sourceforge). Naš sistem sicer teče primarno na Win 2K3 in Win 2K strežnikih, tako da je ta strežnik bolj bergla in priložnost zame, da se kaj novega naučim, ker me že dolgo časa zanima Linux..

Na linuxu sem povsem osnovno (za intranet) skonfiguriral Apache in po navodilih postavil Subversion repozitorije, v katerih hranim testne podatke. Subversion repozitoriji so dosegljivi preko Http protokola, lahko v browserju, ali pa z odjemalcem Tortoise. Vse deluje normalno, s klientom lahko brskaš po repositorijih iz Windows mašin, preko Weba, iz repozitorija pobiraš verzije, primerjaš... Skratka vse OK. Apache pobira podatke iz lokalnega diska in jih servira preko HTTP protokola (what else is new?)

Ampak, PC ni primeren za hranjenje dejanskih mission critical podatkov. Je brez Raida in brez backupa. Zato sem (naivno) pomislil, da bi lahko repozitorij naredil na Windows 2K3 trežniku, do sharane mape pa dostopal preko SAMBE. Kako zelo sem se motil! :\ Stalno imam probleme s pravicami na file sistemu, čeprav sem vse skupaj konfiguriral že 10x

Linux strežnik sem nekako na pol uspel postaviti tudi v Active Directory, čeprav to niti ni nujno... Windows share sem mountal na Linux z ukazom:
mount -t cifs //Win2k3/svnrepository /mnt/winshare -o user=winadministrator,password=*****,rw,dmask=0777,fmask=0777

Na tem Sharu je kreiran repozitorij, se pravi npr:
/mnt/winshare/testrepository/

To stvarco sem pravilno skonfiguriral v apacheju (vsaj kar se tiče dostopa) in jo lahko vidim na intranetu (npr: http://suse/testrepository/) in tudi preko Tortoise klienta. Nikakor pa ne morem zadeve postavit tako, da bi lahko vsebino repozitorija spreminjal. ARGH!!! ;(( ;(( Apache log mi kaže napako "Permission Denied".

Na linuxu vidim, da ima vsaka mapa določene neke svoje pravice in ownerja (npr root, wwwrun), na Win2k3 strani pa kažejo mape v repozitoriju ownerja Administrator. Kaj se dogaja?
Ob vsakem poskusu spremembe repozitorija se v njem kreirajo neke nove mape, katerih lastnik v linuxu je root, čeprav apache teče z userjem wwwrun! Poleg tega je v navodilih za postavitev Subversion repozitorija zapisano, da mora biti lastnik te mape wwwrun. Ko s chown prevzamem lastništvo in poskusim ponovno spreminjat, je rezultat isti, pravice na FS pa takšne:

drwxrwxrwx 1 wwwrun www 0 2007-04-25 10:59 .
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:10 ..
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:16 0-1.txn
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:26 0-2.txn
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:55 0-3.txn
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:57 0-4.txn
drwxrwxrwx 1 root root 0 2007-04-24 16:04 0-5.txn
drwxr-xr-x 2 root root 0 2007-04-25 10:59 0-6.txn


Kaj hudiča počnem narobe? Kaj lahko storim? Any Idea?

Vem, da je opis problema glomazen, ampak res prosim za pomoč, ker me vse skup že ubija, zadevo pa moram postavit in spravit v uporabo! TNX že vnaprej tistim, ki boste pomagali (in upam, da boste, hehe)
- Hoc est qui sumus -
  • spremenilo: CCfly ()

trnvpeti ::

moras postavit
ti pa muckas :)
dej se en disk notri, pa raid
pa bo ziher bolj stabilno,kot pa ta tvoja ideja

imagodei ::

Hvala za krasno idejo. Le kako se tega nisem spomnil?

Hočeš torej povedati nekaj od naslednjega:

a) Linux je zanič operacijski sistem in se tega ne da naredit
b) Ti sicer znaš, ampak se ti zdi butasto povedati meni
c) Nimaš pojma, ampak se ti je zdelo pomembno, da se oglasiš?

Stvari sem se lotil, ker sem mislil, da bo šlo hitro. 14 dni se ne ubadam izključno s tem problemom, ker bi v tem času pa najbrž že res vse skupaj vrgel skozi okno in poiskal drugo rešitev.

Kakorkoli že - to kar imam, je na razpolago. No-name serverja ne bom sestavljal, ena varianta bi bila kvečjemu še VMWare in Linux postavit v virutalnem okolju na obstoječem strežniku. Nikoli mi pa niso bile všeč rešitve, pri katerih se nisem nič naučil ampak sem v bistvu sprejel kompromis, ker nečesa nisem znal.

Vprašanje je torej - ali se to na Linuxu da naredit in sem le jaz n00b (kar se da popravit), ali pa je Linux zanič in ga je treba vreči v smeti? Močno dvomim, da gre za drugo opcijo...
- Hoc est qui sumus -

'FireSTORM' ::

ta direktorij
/mnt/winshare/testrepository
ali kako maš
imaš v apache oz httpd.conf?
če je iz tega apache serverja možno dostopat samo do tega direktorija
potem narediš tako:
DocumentRoot "/mnt/winshare/testrepository"
ampak koliko sem preletel tvoj post to temu ni tako
in boš verjetno v /mnt/winshare/ imel še več teh repositorijev
zato narediš tako:
DocumentRoot "/mnt/winshare"
in potem tudi ta del moraš uredit nekako tako:
< Directory "/mnt/winshare">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
< /Directory>

ta error ki ga ti dobiš se pojavi ponavadi takrat ko spodnjega dela nimaš dobro nastavljenega
AllowOverride lahko pustiš none
jaz mam all zato ker rabim za .htaccess itd

daj še kopijo ls -l outputa od direktorija /mnt/winshare
in /mnt/winshare/testrepository
ne mislim vsebine, ampak direktorija samega
ls -l /mnt/winshare
ls -l /mnt/winshare/testrepository
in naredi še takole kot root
chown -R wwwrun:www /mnt/winshare/testrepository
da bo vsepovsod lastnik wwwrun in grupa www
potem lahko še pa spremeniš vse pravice z
chmod -R 777 /mnt/winshare/testrepository
to pomeni
read-write in executable flag ownerju, owner grupi in vsem ostalim
Those penguins.... They sure aint normal....

trnvpeti ::

a) linux je ok
b) znam narediti
c)nisem tega se delal
d) ti je nekdo opisal, ampak mislim da to ni dovolj
ob vsakem kreiranju mora biti v dolocenih grupi, probaj z sticky bitom pred chmod 777
e) ti ne priporocam tega
f) ce si ze 14dni na tem problemu, bi hitro resil se z enim diskom
g) delaj backup
h) tudi ce ti uspe sestavit preko sambe, ko ti bo disk odletel na linuxu( ne na winsih, kjer bos imel repositorij) ti nic ne bo pomagalo
i) se enkrat, ne muckaj :)
j) pa brez zamere, nisem ciljal na tvoj ego :)

'FireSTORM' ::

chmod 777 ni ravno nuja...
dovolj saj navadna datoteka ni potrebno da je executable
lahko je samo read write
direktorij pa more biti executable...vsaj tak je blo v mojem primeru
tako da pogledaš z kerim userjem laufa apache
maš v httpd.conf
< IfModule !mpm_netware_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
< /IfModule>
to je default
lahko daš tako:
User wwwrun
Group www
in potem chmod 660 na datoteka
chmod 770 na direktorijih tokrat brez -R argumenta
to bo pomenilo
read-write za ownerja in owner grupo datotek
in read-write in executable za ownerja in woner grupo direktorijev
jaz mam vse file-permission za web narejeno tako
owner filea je user ki laufa apache
owner group pa je group ki laufa apače
in imam potem pravice tako:
644
read-write ownerju
read owner grupi in ostalim
na direktorijih mam še pa zraven samo executable
Those penguins.... They sure aint normal....

imagodei ::

@FireSTORM: TNX, eno ful butasto napako pri sebi sem že opazil:

< IfModule mod_alias.c>
Alias /repos "/srv/svn/html"
< /IfModule>
< Directory /srv/svn/html>
Options +Indexes +Multiviews -FollowSymLinks
IndexOptions FancyIndexing \
ScanHTMLTitles \
NameWidth=* \
DescriptionWidth=* \
SuppressLastModified \
SuppressSize

order allow,deny
allow from all
< /Directory>

< Location /repos/sample>
DAV svn
SVNPath /srv/svn/repositories/sample

# Limit write permission to list of valid users.
AuthType Basic
AuthName "Authorization for sample required"
AuthUserFile /srv/svn/user_access/sample_passwdfile
AuthGroupFile /srv/svn/user_access/sample_groupfile
< LimitExcept GET PROPFIND OPTIONS REPORT>
Require group sample_commiters
< /LimitExcept>

# Limit read access to certain people
< Limit GET PROPFIND OPTIONS REPORT>
Require group sample_commiters
Require group sample_readers
< /Limit>

< /Location>

< Location /repos/testrepository>
DAV svn
SVNPath /mnt/WinShare/testrepository

# Limit write permission to list of valid users.
AuthType Basic
AuthName "Authorization for testrepository required"
AuthUserFile /srv/svn/user_access/sample_passwdfile
AuthGroupFile /srv/svn/user_access/sample_groupfile
< LimitExcept GET PROPFIND OPTIONS REPORT>
Require group sample_commiters
< /LimitExcept>

# Limit read access to certain people
< Limit GET PROPFIND OPTIONS REPORT>
Require group sample_commiters
Require group sample_readers
< /Limit>

< /Location>

Najprej sem imel nastavljen Directory čisto nekam drugam /srv/svn/html/, kar je bilo v redu, ko sem nastavljal repozitorij na lokalnem PC, kasneje sem pa dodal še mountanega preko SAMBE. Zaenkrat bom to popravil, da bo ustrezalo drugi lokaciji. Kako pa bi naredil, če bi hotel obdržati obe? (Drugače gledaš vsebino /etc/apache2/conf.d/subversion ki je includana v ...apache2/default-server.conf)

ls -l /mnt/winshare
drwxrwxrwx 1 svn svn 0 2007-04-24 15:10 testrepository/

ls -l /mnt/winshare/testrepository
drwxr-xr-x 2 svn svn 0 2007-04-24 15:10 conf/
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:10 dav/
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:10 db/
-r--r--r-- 1 svn svn 2 2007-04-24 15:10 format
drwxrwxrwx 1 svn svn 0 2007-04-24 15:10 hooks/
drwxrwxrwx 1 wwwrun www 0 2007-04-24 15:10 locks/
-rw-r--r-- 1 svn svn 229 2007-04-24 15:10 README.txt

(svn:svn sta user in grupa za Subversion)

Grem zdajle poskusit še, kar si svetoval. TNX!
- Hoc est qui sumus -

imagodei ::

@trnvpeti

Glej, saj nisem užaljen - sem že koj povedal, da sem linux noob. Me pa ujezi, ko sprašujem za neko konkretno zadevo, pa dobim odgovor, naj poskusim čisto nekaj drugega. Kot bi recimo spraševal, kako iz Gorenjske pridem po cesti v Avstrijo, ti pa bi mi rekel, da obstaja tudi direkt letalska povezava Ljubljana - Dunaj. Verjamem, da imaš prav, ampak delam s tem, kar imam.

d) ti je nekdo opisal, ampak mislim da to ni dovolj
Seveda ni dovolj, hehe, zato pa sprašujem in upam, da se bom kaj naučil.

e) ti ne priporocam tega
zakaj ne?

h) tudi ce ti uspe sestavit preko sambe, ko ti bo disk odletel na linuxu( ne na winsih, kjer bos imel repositorij) ti nic ne bo pomagalo
bo, če bom imel narejen Ghost. Postavit sistem iz Ghosta ni problem, izgubljeni podatki pa so.
- Hoc est qui sumus -

'FireSTORM' ::

ce je user repositoryja razlicen od userja ki laufa apache bo pa malo drugace
apache user mora meti dostop tudi do svn user file-ov
zdaj ali das apache userja v svn grupo tudi -> /etc/group
ali pa naredis world readable
upam da me razumes kaj ti hocem povedat
Those penguins.... They sure aint normal....

imagodei ::

štekam...

Zgleda pa, da je bistvo problema mogoče drugje. V pravicah v file sistemu med Linux in Win. Windows share normalno vidim mountan v /mnt/... in kot root lahko gor počnem, kar hočem. Kot user svn pa ne, ne glede na to, da sem na Win strani kreiral istega uporabnika (svnuser) in v /etc/samba/smbusers zapisal
svn = svnuser

Poleg tega se mi vsak novo ustvarjen file zapiše v tem direktoriju pod ownerjem root, ne glede na to, da sem prijavljen kot svn:
Evo, to se dogaja:

svn@linuxserver:/mnt/WinShare> mount
...
...
//thor/SvnRepo on /mnt/WinShare type cifs (rw,mand)

svn@linuxserver:/mnt/WinShare> ls -al
skupno 0
drwxrwxrwx 1 svn svn 0 2007-04-25 18:18 . #Torej sem lastnik direktorija /mnt/WinShare
drwxr-xr-x 3 root root 72 2007-04-17 16:18 ..

svn@linuxserver:/mnt/WinShare> mkdir testrepository #User je SVN!
svn@linuxserver:/mnt/WinShare> ls -al
skupno 0
drwxrwxrwx 1 svn svn 0 2007-04-25 18:20 .
drwxr-xr-x 3 root root 72 2007-04-17 16:18 ..
drwxr-xr-x 2 root root 0 2007-04-25 18:20 testrepository #Zakaj je torej lastnik ROOT?!?! ;((

svn@linuxserver:/mnt/WinShare> svnadmin create testrepository/ #Jasno, izdelava repozitorija ne gre skozi ;(
svnadmin: Repository creation failed
svnadmin: Creating DAV sandbox dir
svnadmin: Can't create directory 'testrepository/dav': Permission denied

Any idea?
- Hoc est qui sumus -

Quikee ::

Kot user svn pa ne, ne glede na to, da sem na Win strani kreiral istega uporabnika (svnuser) in v /etc/samba/smbusers zapisal svn = svnuser
Pazi! Samba (server) in cifs/smbfs (client) sta ločena in to kaj nastaviš v /etc/samba ne vpliva na cifs/smbfs. pri mountanju še dodaj parameter "-o uid=svnuser", ki pove, kdo bo lastnik mountanih datotek. Preberi si "man mount.cifs".

Zgodovina sprememb…

  • spremenil: Quikee ()

SeTAr ::

imo je najboljša varianta vse kar rabiš zatarat pa to potem kopirat čez.
Recimo:
napišeš eno malo skriptico ki na linux mašini zadevo zatara, jo premakne v en direktorij od apača zavarovan s htaccessom (in chmoda če je potrebno), pol na win mašini zadevo samo wgetaš dol.

imagodei ::

Tnx, bom probal, samo da se priklopim na služben PC. Še ena zadeva - a torej to pomeni, da bo z omenjeno nastavitvijo pri mountanju lastnik vseh datotek svnuser? Ker so določene mape, ki bi jih moral po navodilih chownat na wwwrun:www.

No, itak bom poskusil in javil, kakšen je rezultat.

TNX again!
- Hoc est qui sumus -

Quikee ::

imagodei: Najlažje je, da je lastnik celotnega repositorija "wwwrun" oz. uporabnik definiran za apache server..

imagodei ::

@FireSTORM, Quikee

Sem uštimal, tako kot sta svetovala in zgleda da stvar dela! :)) Krasno!

Pri mountanju sem naredil sledeče:
mount -t cifs //thor/SvnRepo /mnt/WinShare/ -o user=svnuser,rw,dir_mode=0777,file_mode=0777,uid=wwwrun

(svnuser je Win ekvivalent userja svn na Linuxu)

Repozitorij sem kreiral kot root:
svnadmin create testrepository/

in ga chownal na uporabnika svn (pred tem je imel testrepository pravice : rwxrwxrwx wwwrun:root)
chown -R svn:svn testrepository/

Ko sem naredil to, mi repozitorij ni delal (sem šel kontra nasvetu, naj bo lastnik celotnega repozitorija wwwrun :\ ), simptomi pa so bili takšni, da je bral normalno, ni pa mogel kreirati novih datotek v repozitoriju. Po navodilih za postavitev repozitorija sem spremenil še:
chown -R wwwrun:www /mnt/WinShare/testrepository/{dav,db,locks}

Zadeva zaenkrat dela ko šus! (Tok, tok, tok po lesu! :) )

TNX obema! Plačam pir!:))
- Hoc est qui sumus -

imagodei ::

Če se komu da razložit, kaj pravzaprav pomeni sledeča vrstica

mount -t cifs //thor/SvnRepo /mnt/WinShare/ -o user=svnuser,rw,dir_mode=0777,file_mode=0777,uid=wwwrun

bi bil tudi zelo hvaležen - predvsem me zanima, kaj točno sem dosegel s tem, ko je user=svnuser, uid je pa enak uid=wwwrun? svnuser je Windows account in je kao ekvivalent svn na Linuxu (v /etc/samba/smbusers sem skonfiguriral svn = svnuser, čeprav Quikee pravi, da te nastavitve nimajo veze - verjamem - tako da najbrž je to brez teže). Se pravi, kaj se dogaja? Vsak nov file/dir, ki je skreiran v /mnt/WinShare/ avtomatično pripade uporabniku wwwrun, ki je njegov lastnik, ali kako? Če gledam iste fajle na Win 2K3 mašini, je lastnik vseh WINDOMAIN\svnuser...?!
- Hoc est qui sumus -

'FireSTORM' ::

mountaš neko zadevico iz drugega računalnika preko sambe v lokalni direktorij
remote user je svnuser
read-write
dir mode=777
777 so file permission numbers
imaš jih od 0 do 7, 0 je nič ne pisanja, ne branja ne poganjanja
potem 1 je poganjanje če se ne motim itd itd, 7 pa je vse, pisanje,branje in poganjanje
imaš pa tri segmente, pri je za ownerja direktorija ali file-a chown user:group
drugi za owner group, chown user:group
tretji pa za vse ostale, to pomeni da ko daš zadnji segment na 7, je world readable, writable in executable, vsak na sistemu lahko to poganja, bere in piše
file_mode ;glej zgoraj
uidali user ID=wwwrun, to pa je lokalni uporabnik wwwrun
upam da se nisem kje zmotil in te zavedel

drugače pa, pijem zlatorog kadar ne vozim :)
Those penguins.... They sure aint normal....


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Namestitev Apache SVN na strežnik Apache

Oddelek: Programska oprema
8839 (589) Ales
»

[Subversion]Subversion Version Control Vprasanje

Oddelek: Programska oprema
183088 (2900) KernelPanic
»

Source version control za domačo uporabo?

Oddelek: Programiranje
356359 (5430) MrBrdo
»

Subversion (SVN) - kaj priporočate?

Oddelek: Programiranje
413980 (2594) imagodei
»

[Gentoo] Kernel upgrade (strani: 1 2 )

Oddelek: Operacijski sistemi
674468 (3994) Trubadur

Več podobnih tem