SVN Commit nicht möglich

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe mir ein SVN-Repo auf meinem Pi eingerichtet und wollte nun eine einfache Möglichkeit mir neue Projektordner (neue Repos) anzulegen. Dazu habe ich mir einen Tomcat Server auf meinen Pi installiert und wollte nun über ein Servlet und der Java Methode exec() die erforderlichen Befehle ausführen.

    Meine Befehle als Übergabeparameter der Funktion ist ("svnadmin create /home/pi/repos/ + nameDesRepos)

    dies klappt auch eigentlich wunderbar (es wird zumindest ein Repo angelegt). Es als Besitzer ist nun root eingetragen.

    Mit einem Weiteren Befehl (sudo chown -R www-data:www-data /home/pi/repos/\nMeinPasswort)
    Setzte ich den Besitzer der Repos auf www-data damit das Repo über den Installierten Apache Server erreichbar ist. Bei diesem Befehl (chown) muss ich jedoch sudo davor schreiben sonst ändert sich nichts am der Besitzereinstellung.

    Das Projekt ist nun über den Webserver erreichbar und es schein als ob alles funktionieren würde. Wenn ich nun jedoch etwas in das Repo Commiten möchte, dann wird mir immer eine Fehlermeldung zurück geliefert.

    Wenn ich jedoch die Oben beschriebenen Befehle über SSH direkt im PI eingebe (beim ersten muss ich noch sudo davor schreiben da ich ja mit pi angemelden bin), dann funktioniert alles wie gewünscht ich kann auch Commiten.

    Die Fehlermeldung die zurück geliefert wird lautet:

    Code
    Some of selected resources were not committed.
    Some of selected resources were not committed.
    svn: E204900: Commit failed (details follow):
    
    
    svn: E204900: Commit failed (details follow):
    svn: E204900: Can't open file '/home/pi/repos/PasswordField/db/txn-current-lock': Permission denied
    svn: E175002: MKACTIVITY of '/svn/PasswordField/!svn/act/f5773d81-4301-0010-b1c3-75c92fb80bc6': 500 Internal Server Error (http://raspi.meineDomain.de)

    kann mir jemand weiterhelfen?

    Die Berechtigung der Datei "txn-current-lock" sind beim Manuellen erstellen (dann kann ich ja commiten) und beim Automatisierten erstellen über meine Java Anwendung identisch.

  • Was sagt ein

    Code
    ls -la /home/pi/repos/<Reponame>


    und ein

    Code
    ls -la /home/pi/repos


    direkt nach dem Anlegen der Repos über das Servlet?

    Unter welchem User läuft dein Tomcat-Server? Vermutlich unter root; deshalb werden die Befehle auch mit Root-Rechten ausgeführt...
    Es sollte doch möglich sein, den Tomcat unter www-data laufen zu lassen?!

    Linux - Für das Leben nach dem Absturz!

  • Code
    pi@raspberrypi ~/repos $ ls -la
    insgesamt 20
    drwxr-xr-x 5 www-data www-data 4096 Jan 11 11:56 .
    drwxr-xr-x 6 pi       pi       4096 Jan 10 00:03 ..
    drwxr-xr-x 6 www-data www-data 4096 Jan  8 20:59 Minecraft_Backup
    drwxr-xr-x 7 www-data www-data 4096 Jan  9 20:39 NewRepoApp
    drwxr-xr-x 6 www-data www-data 4096 Jan 11 11:56 PasswordField
    Code
    pi@raspberrypi ~/repos/PasswordField $ ls -la
    insgesamt 32
    drwxr-xr-x 6 www-data www-data 4096 Jan 11 11:56 .
    drwxr-xr-x 5 www-data www-data 4096 Jan 11 11:56 ..
    drwxr-xr-x 2 www-data www-data 4096 Jan 11 11:56 conf
    drwxr-sr-x 6 www-data www-data 4096 Jan 11 11:56 db
    -r--r--r-- 1 root     root        2 Jan 11 11:56 format
    drwxr-xr-x 2 www-data www-data 4096 Jan 11 11:56 hooks
    drwxr-xr-x 2 www-data www-data 4096 Jan 11 11:56 locks
    -rw-r--r-- 1 www-data www-data  229 Jan 11 11:56 README.txt


    Habe gerade den Fehler gefunden. "format" ist noch root kann mir aber nicht erklären warum.

    Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Unter welchem User läuft dein Tomcat-Server?[/font]


    Er wird beim Systemstart (/etc/init.d/tomcat start) gestartet. Die init.d/tomat start ruft /opt/tomcat/7_0_47/bin/catalina.sh start auf.

    Deshalb läuft er unter root.

    Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Es sollte doch möglich sein, den Tomcat unter www-data laufen zu lassen?![/font]


    Wie kann ich das beim Systemstart ausführen lassen?

  • Schaue mal hier vorbei. Das ganze sollte auch mit anderen Usern funktionieren:
    http://wiki.ubuntuusers.de/Tomcat#Tomcat-als-root
    Funktioniert aber nur, wenn du den Tomcat auf einem Port>1024 laufen hast (die Well-Known-Ports darf nur Root öffnen bzw. einen Socket dran binden).

    Wenn das Ding aber nur intern läuft könnte man es auch so belassen - solange es jetzt funktioniert...

    Linux - Für das Leben nach dem Absturz!

    Einmal editiert, zuletzt von Nightskill (11. Januar 2014 um 13:47)

  • Also das mit dem root sehe ich ein. Aber wie kann ich nun beim Systemstart den Tomcat als ein bestimmten User starten?

    Das Startskript /etc/init.d/tomcat sieht wie folgt aus.


    wenn ich das richtig verstanden habe wird dieses Skript ja beim Systemstart aufgerufen. Da der Systemstart aber als root durchgeführt wird wird ja mein tomcat auch als root gestartet. Wie kann ich nun das folgende Skript ändern damit die Zeile "/opt/tomcat/7_0_47/bin/catalina.sh start" vom root ausgeführt wird aber als User www:data übergeben wird??

    Ich finde nichts was mir gerade wirklich hilft alles was ich finde verstehe ich leider nicht so ganz bin leider kein Server Administrator.

  • Was sagt denn ein?

    Code
    ps -ef | grep -i tomcat

    Evtl. reicht es, wenn du

    Code
    TOMCAT6_USER=www-data


    zwischen dem Kommentar am Anfang und das "case" schreibst:

    Wenn es jetzt aber funktioniert, kannst du es auch lassen, wie es ist.

    Linux - Für das Leben nach dem Absturz!

  • Nochmal ich!

    Ich habe glaube eine Lösung gefunden. Danke für die schnelle Hilfe!

    Ich ersetzt den Befehl
    /opt/tomcat/7_0_47/bin/catalina.sh start

    durch

    su - www-data -c '/opt/tomcat/7_0_47/bin/catalina.sh start'

    Dann wird der tomcat von www:data gestartet und hat keine Root-Rechte mehr und braucht diese dann auch nicht mehr.

  • Auch möglich.

    Nur darauf achten, dass auch alles in /opt/tomcat dem User www-data gehört. Sonst könnte es zu Problemen kommen.
    Und der User muss natürlich auch Besitzer des Verzeichnisses /home/pi/repos sein, um dort neue Verzeichnisse anlegen zu dürfen.

    Linux - Für das Leben nach dem Absturz!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!