Keine Berechtigung im eigenen Verzeichnis

Mardor

Well-Known Member
Hallo,

ich habe beim erneuten Aufsetzen ein sehr komisches Problem, dass ich mir absolut nicht erklären kann.
Ich bin gerade dabei einem git server unter FreeBSD 10.3 anzulegen.

Die Installation hat ohne Probleme geklappt. Der Eintrag für den Git-Server in der rc.conf lautet:

Code:
git_daemon_enable="YES"
git_daemon_directory="/data/git"
git_daemon_flags="--syslog --base-path=/data/git --export-all --reuseaddr --detach"

Jedoch erhalte ich beim Starten folgende Meldung:

Code:
service git_daemon start
Starting git_daemon.
/usr/local/etc/rc.d/git_daemon: WARNING: failed to start git_daemon

Der Syslog zeigt dann folgenden Eintrag:

Code:
*** /usr/jails/gitserver/var/log//messages ***
Jun 24 08:59:17 gitserver git-daemon[5633]: base-path '/data/git' does not exist or is not a directory

Allerdings hat der Git User auf diese Verzeichnisse sogar Berechtigung

Code:
su -m git -c '/bin/sh'
$ cd /data/git
$ ls -alh
total 1
drwxr-x---  3 git   git       4B Jun 24 08:07 .
drwxr-x---  3 git   git       3B Jun 24 07:52 ..
-rw-------  1 root  wheel   128K Jun 24 08:06 .pefs.db
drwxrwxr-x  2 git   git       2B Jun 24 08:07 base

Hat jemand eine Idee hierzu ?

Gruß Mardor
 
Hallo TCM,

root und data sehen wie folgt (aus der Sicht von git) aus:
Code:
$ ls -alh
total 1
drwxr-xr-x  18 root  wheel    23B Jun 24 07:52 .
drwxr-xr-x  18 root  wheel    23B Jun 24 07:52 ..
-rw-r--r--   2 root  wheel   254B Mar 25  2016 .profile
-rw-------   1 root  wheel   1.0K Aug 13  2016 .rnd
-r--r--r--   1 root  wheel   6.1K Mar 25  2016 COPYRIGHT
drwxr-xr-x   2 root  wheel    47B May 15 10:15 bin
drwxr-xr-x   9 root  wheel    52B May 15 10:15 boot
drwxr-x---   3 git   git       3B Jun 24 07:52 data
dr-xr-xr-x   9 root  wheel   512B Jun 24 07:35 dev
-rw-r-----   1 root  wheel   4.0K Aug 13  2016 entropy
drwxr-xr-x  23 root  wheel   105B Jun 24 08:57 etc
drwxr-xr-x   3 root  wheel    52B May 15 10:15 lib
drwxr-xr-x   3 root  wheel     4B Mar 25  2016 libexec
drwxr-xr-x   2 root  wheel     2B Mar 25  2016 media
drwxr-xr-x   2 root  wheel     2B Mar 25  2016 mnt
dr-xr-xr-x   2 root  wheel     2B Mar 25  2016 proc
drwxr-xr-x   2 root  wheel   146B Jan 14 20:19 rescue
drwx------   2 root  wheel    10B Jun 24 08:57 root
drwxr-xr-x   2 root  wheel   132B May 15 10:15 sbin
lrwxr-xr-x   1 root  wheel    11B Mar 25  2016 sys -> usr/src/sys
drwxrwxrwt   3 root  wheel     3B Jun 24 07:58 tmp
drwxr-xr-x  16 root  wheel    16B Aug 15  2016 usr
drwxr-xr-x  24 root  wheel    24B Jun 24 07:35 var
$ cd data
$ ls -alh
total 1
drwxr-x---   3 git   git       3B Jun 24 07:52 .
drwxr-xr-x  18 root  wheel    23B Jun 24 07:52 ..
drwxr-x---   3 git   git       4B Jun 24 08:07 git
 
Ist eine Form von chroot im Spiel oder warum wird zweimal das Verzeichnis angegeben?

Code:
git_daemon_directory="/data/git"
git_daemon_flags="--syslog --base-path=/data/git --export-all --reuseaddr --detach"

Nicht dass er /data/git/data/git haben will?
 
Hast du es mal ohne --base-path probiert?
Evtl. musst du den daemon_user/daemon_group überschreiben oder die Berechtigungen anpassen, default im rc-Script ist "git_daemon".
git_daemon.in
 
Hallo gadean,

also wenn ich den --base-path entferne dann erhalte ich keine Fehlermeldung beim starten.
Auch wenn ich /data und /data/git über einen chown auf git_daemon umstelle funktioniert es.

Ich befürchte nur, dass ich jetzt Probleme mit der SSH Verbindung um dem Zugriff des git users habe auf das Base Verzeichnis haben werde.

Grus Mardor
 
Hi,

ich habe jetzt einen snapshot zurückgespielt und benutze nicht /data sonden /data/git. Mal schauen ob das Problem wieder auftritt.

Gruß Mardor
 
Du kannst doch einfach den User "git_daemon" zur Gruppe "git" hinzufügen und für die Group der Berechtigungen passend setzten?
Den Rest von deinem Post versteh ich nicht richtig.
 
Hallo gadean,

stimmt, dass hinzufügen des Users wäre wirklich die einfachste Lösung gewesen. Allerdings hatte ich als ich deine Antwort gesehen hatte bereits den Snapshot zurückgespielt.


Zur zweiten Aussage: Ich habe vor einigen Tagen einen Git-Server bereits installiert. Da hattest du mir damach auch den entscheidenden Tipp gegeben (http://www.bsdforen.de/threads/git-server-installation.33586/#post-292156). Danach hat alles funktioniert. Nun gehe ich normalerweise hin und lege Daten gerne in ein Unterverzeichnis von /data ab, also im Fall eines Git-Servers im Verzeichnis /data/git. Somit habe ich die Installation des Git-Servers nicht nach meiner Beschreibung http://www.bsdforen.de/threads/git-server-installation.33586/#post-292156 durchgeführt, sondern das Zielverzeichnis /data/git anstatt git genutzt.

Die Nutzung von /data/git anstatt /git führt zur beschriebenen Fehlermeldung.
Ich hatte gerade eben nochmals den Snapshot vor der Installation zurückgespielt und kann bestätigen, dass wenn das Verzeichnis /git anstatt /data/git lautet, kein Problem existiert.

Warum kann ich nicht genau sagen.
 
Meinst du den Fehler "does not appear to be a git repository"? Dann musst du die origin anpassen (remote path).
Oder meinst du den Fehler in diesem Thread ("base-path '/data/git' does not exist or is not a directory")?

Wie sieht deine aktuelle Konfiguration aus und was ist die aktuelle Fehlermeldung?

Edit: Und brauchst du überhaupt den git_daemon? Wenn du git nur über ssh benutzten willst, brauchst du den nicht.
 
Wie sieht deine aktuelle Konfiguration aus und was ist die aktuelle Fehlermeldung?

Aktuell nachdem ich das git-Verzeichnis auf /git laufen habe und somit auch den base-path auf /git zeigt existiert kein Fehler mehr.
Ich muss mir nur merken, dass das git Verzeichnis nicht unter /data/git sondern direkt unter /git liegen muss.

Und brauchst du überhaupt den git_daemon? Wenn du git nur über ssh benutzten willst, brauchst du den nicht.
Der git_daemon wird beim Kompilieren von git mit portmaster devel/git angelegt. Ich gehe davon aus, dass ich den git_daemon dann auch brauche. Oder liege ich da falsch ?
 
Der git daemon wird zwar installiert, ist aber nur nötig wenn du über das git-Protokoll (Übertragung) arbeiten möchtest, wenn du git über ssh betreibst, brauchst du den Daemon nicht zu starten.
 
Hallo gadean,

jetzt bin ich verdutzt. Ich habe aufgrund deiner Aussage den service deaktiviert.

Code:
service git_daemon stop

und wie von Dir beschrieben funktioniert alles immer noch. Für was wäre dann der Daemon ?
Gibt es ein Port welcher besser für meine Bedürfnisse wäre oder ist das schon der richtige Port ?

Ich habe auch etliche "git clients" also FreeBSD Kisten die nur auf den Git-Server Daten senden sollen, gibt es dazu einen guten "Client" ?
 
Oh ok, das Protokoll kannte ich noch gar nicht. Danke für deine Erklärung.

Ich habe gesehen, dass es ein git-lite Port gibt. Macht es Sinn diesen auf den FreeBSD Rechnern zu installieren von denen ich meine Dateien pushen will oder muss ich da auch devel/git installieren ?

Was wäre denn dafür der beste Port ?

Gruß Mardor
 
Den Port kannte ich noch nicht, sieht für mich aus wie der devel/git Port mit minimal config, also wenn du git aus den Ports baust, kannst du auch einfach devel/git nehmen und mit "make config" die Teile die du nicht brauchst deselektieren.
 
Zurück
Oben