Hallo! Vielleicht hat´s ja jemand gesehen, ich bin grad dabei, einen CVS einzurichten. Dies habe ich jetzt geschafft, nun geht´s um die Nutzerverwaltung im CVS. Da in unserer Gruppe insgesamt 5 Leute schon drin sind (und es eventl. noch mehr werden), möchte ich nicht bei jeder neuen Aufg, (Aufg. = neues Projekt = neues Repository) den ganzen Quatsch immer von Hand machen müssen. Deshalb hatte ich mir überlegt, ich pack das einfach in eine bash-Datei, übergebe ihr als Parameter den Namen des jeweiligen Repositorys und fertig. Leider klappt das nicht so, wie gewünscht. Deshalb habe ich´s mal aufgeschrieben (das u.s. muss also erledigt werden): su -l stefan cd /home/stefan/cvs /usr/local/bin/cvs checkout $1 cd $1 ln -s CVS CVSROOT exit das Ganze soll als root aufgerufen werden. $1 soll die Variable sein, die den übergebenen Namen des Repositorys enthält. Dies klappt auch für einen User, leider nicht für den dahinter eingetragenen (so, als könnte er sich nicht ausloggen, um den zweiten Teil dann wieder als root ausführen zu können). Weiss jemand Rat? Bitte. Danke! ;) Ciao! Stefan
hallo stefan! also, du kommst aus der shell, die du mit su öffnest nicht mehr raus? ist das dein problem?? warum nicht einfach alles als root ausführen und ggf. wieder an user "verschenken" mit chown?? oder besser alles als user ausführen und mit sudo ... einzelne befehle, die als root ausgeführt werden müssen, auch als root ausführen ... (sorry mit cvs selbst habe ich noch nix gemacht ...) gruss ds Am Montag, 26. April 2004 20:33 schrieb Stefan Schilling:
Hallo!
Vielleicht hat´s ja jemand gesehen, ich bin grad dabei, einen CVS einzurichten. Dies habe ich jetzt geschafft, nun geht´s um die Nutzerverwaltung im CVS.
Da in unserer Gruppe insgesamt 5 Leute schon drin sind (und es eventl. noch mehr werden), möchte ich nicht bei jeder neuen Aufg, (Aufg. = neues Projekt = neues Repository) den ganzen Quatsch immer von Hand machen müssen. Deshalb hatte ich mir überlegt, ich pack das einfach in eine bash-Datei, übergebe ihr als Parameter den Namen des jeweiligen Repositorys und fertig. Leider klappt das nicht so, wie gewünscht. Deshalb habe ich´s mal aufgeschrieben (das u.s. muss also erledigt werden):
su -l stefan cd /home/stefan/cvs /usr/local/bin/cvs checkout $1 cd $1 ln -s CVS CVSROOT exit
das Ganze soll als root aufgerufen werden. $1 soll die Variable sein, die den übergebenen Namen des Repositorys enthält. Dies klappt auch für einen User, leider nicht für den dahinter eingetragenen (so, als könnte er sich nicht ausloggen, um den zweiten Teil dann wieder als root ausführen zu können).
Weiss jemand Rat? Bitte.
Danke! ;)
Ciao!
Stefan
-- ---------------- dominik schopper jordanstr. 39 60486 frankfurt 0177.72 27 773 069.719 140 44 dominikschopper@web.de dschopper@synergie-gmbh.de
Hallo Stefan, hallo Leute, Am Montag, 26. April 2004 20:33 schrieb Stefan Schilling: [...]
Deshalb hatte ich mir überlegt, ich pack das einfach in eine bash-Datei, übergebe ihr als Parameter den Namen des jeweiligen Repositorys und fertig. Leider klappt das nicht so, wie gewünscht. Deshalb habe ich´s mal aufgeschrieben (das u.s. muss also erledigt werden):
su -l stefan cd /home/stefan/cvs /usr/local/bin/cvs checkout $1
Du vergisst (vermutlich) das Setzen von $CVSROOT. Geht aber auch anders: cvs -d /pfad/zum/cvsroot checkout $1
cd $1 ln -s CVS CVSROOT
Blöde Frage: Was willst Du mit der Verlinkung CVSROOT->CVS bezwecken? Irgendwie sehe ich da keinen Sinn, sondern eher die vorprogrammierte Verwirrung.
exit
Die genannten Befehle sollen also komplett als User laufen? Nur zu: su -l stefan -c " befehl ; befehl " Den exit-Befehl musst Du dabei nicht mit angeben. Für Deinen Fall würde ich allerdings eine UND-Verknüpfung empfehlen, damit die folgenden Befehle nur ausgeführt werden, wenn vorher kein Fehler aufgetreten ist. Also: su -l stefan -c \ "cd /home/stefan/cvs && /usr/local/bin/cvs checkout $1 && [...]" Noch ein Tipp, der möglicherweise Dein Script überflüssig macht: Wenn Du statt $1 einfach einen Punkt einsetzt (also "cvs checkout ."), bekommst Du *alle* Repositories, die derzeit im CVS stecken, und mittels cvs update (im Hauptverzeichnis der ausgecheckten Version) auch neu hinzugekommene. Voraussetzung für letzteres ist eine passende ~/.cvsrc [1] oder die Verwendung von cvs update -d Gruß Christian Boltz [1] hier meine ~/.cvsrc, die wohl die wichtigsten Optionen enthält. Die wichtigste Einstellung ist update -d - der Rest ist eher Kosmetik. cvs -q -z4 # -q quiet - unwichtige Meldungen unterdrücken # -z4 Kompression Stufe 4 diff -Nup # diff-Optionen -N und -u siehe man diff # -p --show-c-function Show which C function each change is in. [2] update -d -P # -d hole auch Verzeichnisse, die lokal noch nicht vorhanden sind # -P lösche leere Verzeichnisse checkout -P # -P keine leeren Verzeichnisse [2] diff -p liefert auch mit PHP und Perl brauchbare Ergebnisse. -- [ACPI] Du kannst da Deinen Power-Knopf konfigurieren wie Du willst. Du kannst den auch so konfigurieren, daß der PC anfängt zu singen ... [Ekkard Gerlach in suse-linux]
Guten Tag Christian Boltz, Am Dienstag, 27. April 2004 um 23:13 schrieb Christian Boltz:
Hallo Stefan, hallo Leute,
Am Montag, 26. April 2004 20:33 schrieb Stefan Schilling: [...]
Deshalb hatte ich mir überlegt, ich pack das einfach in eine bash-Datei, übergebe ihr als Parameter den Namen des jeweiligen Repositorys und fertig. Leider klappt das nicht so, wie gewünscht. Deshalb habe ich´s mal aufgeschrieben (das u.s. muss also erledigt werden):
su -l stefan cd /home/stefan/cvs /usr/local/bin/cvs checkout $1
Du vergisst (vermutlich) das Setzen von $CVSROOT. Geht aber auch anders: cvs -d /pfad/zum/cvsroot checkout $1
ich habe wohl eher vergessen, noch ein bischen drüber nachzudenken: das, was ich hier mühselig per Kommandozeile machen wollte, machte Eclipse mit einem Klick auf "Checkout" für mich automatisch. Mann, hab ich lange gebraucht, bis das funktioniert hat. Nun muss ich noch eine "richtige" Gruppenverwaltung aufbauen, um eine gute Nutzerzugriffsverwaltung zu gestalten.
cd $1 ln -s CVS CVSROOT
Blöde Frage: Was willst Du mit der Verlinkung CVSROOT->CVS bezwecken? Irgendwie sehe ich da keinen Sinn, sondern eher die vorprogrammierte Verwirrung.
siehe oben.
exit
Die genannten Befehle sollen also komplett als User laufen? Nur zu: [...] die merk ich mir... :)
Noch ein Tipp, der möglicherweise Dein Script überflüssig macht:
Wenn Du statt $1 einfach einen Punkt einsetzt (also "cvs checkout ."), bekommst Du *alle* Repositories, die derzeit im CVS stecken, und mittels cvs update (im Hauptverzeichnis der ausgecheckten Version) auch neu hinzugekommene. Voraussetzung für letzteres ist eine passende ~/.cvsrc [1] oder die Verwendung von cvs update -d
genau das war´s, was ich nicht wollte: im Grunde genommen sollte jeder Nutzer Zugriff nur auf bestimmte Repositorys haben. Hintergrund: der gesamte Studienkurs hat dieselbe Aufgabe bekommen und -es war geplant, dass- mehrere Gruppen mit meinem CVS arbeiten. Allerdings wollte ich verhindern, dass die Gruppen beim jew. anderen abschauen können. Ich denke, ich werd das wohl eher über Gruppenberechtigungen für die einzelnen Repositorys lösen. Danke nochmal und sorry, dass die Antwort so lange gedauert hat, ich hatte viel zu tun. cu Stefan
Stefan Schilling wrote:
genau das war´s, was ich nicht wollte: im Grunde genommen sollte jeder Nutzer Zugriff nur auf bestimmte Repositorys haben. Hintergrund: der gesamte Studienkurs hat dieselbe Aufgabe bekommen und -es war geplant, dass- mehrere Gruppen mit meinem CVS arbeiten. Allerdings wollte ich verhindern, dass die Gruppen beim jew. anderen abschauen können.
Ich denke, ich werd das wohl eher über Gruppenberechtigungen für die einzelnen Repositorys lösen.
nutz doch den pserver-Zugang und vergib die Rechte in der entsprechenden Datei (lese, lese-schreib, nix) über CVS-User Gruss, Andreas
Guten Tag Andreas Loesch, Am Donnerstag, 13. Mai 2004 um 19:30 schrieb Andreas Loesch:
Stefan Schilling wrote:
genau das war´s, was ich nicht wollte: im Grunde genommen sollte jeder Nutzer Zugriff nur auf bestimmte Repositorys haben. Hintergrund: der gesamte Studienkurs hat dieselbe Aufgabe bekommen und -es war geplant, dass- mehrere Gruppen mit meinem CVS arbeiten. Allerdings wollte ich verhindern, dass die Gruppen beim jew. anderen abschauen können.
Ich denke, ich werd das wohl eher über Gruppenberechtigungen für die einzelnen Repositorys lösen.
nutz doch den pserver-Zugang und vergib die Rechte in der entsprechenden Datei (lese, lese-schreib, nix) über CVS-User
Ja, schon möglich: aber ich wollts doch verschlüsselt machen (ein bischen ausprobieren gehört doch dazu). Stefan
participants (4)
-
Andreas Loesch
-
Christian Boltz
-
Dominik Schopper
-
Stefan Schilling