FTP user

R

ReduX08

Foren As
Hi,
Ich stehe hier grad aufm Schlauch und komme nicht weiter.
Was ich machen will.

Ein PHP Webinterface das sich via SSH2 auf einen Server verbindet und dort ein Programm, dass in C++ geschrieben wird mit parametern aufruft.

So, das Programm muss jetzt einen neuen User anlegen, der gleichzeitig einen FTP Zugang hat, dieß habe ich mit vsftp realisiert, da sich dort jeder lokale user einloggen kann und in seinem Home verzeichniss eingesperrt ist.
Aber ich möchte das Passwort für den FTP User ändern aber nicht das für den SSH user, wie bekomme ich das hin bzw. ist in meinem oben geschriebenen ein Denkfehler?

Sollte ich das Unter C++ immer mit dem system() call machen und immer sudo vorschreiben oder das Programm als root laufen lassen (dafür werdet ihr mir wahrscheinlich den Kopf abreißen :devil:)

MFG ReduX
 
moin moin,

Ein PHP Webinterface das sich via SSH2 auf einen Server verbindet und dort ein Programm, dass in C++ geschrieben wird mit parametern aufruft.
Wenn das mal gut geht ... :oldman

Sollte ich das Unter C++ immer mit dem system() call machen und immer sudo vorschreiben oder das Programm als root laufen lassen ...
besser nicht, abgesehen dass du das Passwort d. Users schlecht auf die Standardeingabe streamen kannst (oder besser, WILLST :) ), hättest Du auf Seite des SSH-Ziels eine shell-befehl der Dein PW im Klartext enthällt sichtbar in der processtable.

Wenn es unbedingt sein muss, dass Deine anwendung Dinge mit Rootprivilegien tun soll, dann setz einfach via chmod ein suid-flag.
Leg einen extra User, z. Bleistift: 'remote_buddy' an, der nicht viel tun dürfen sollte, als Deine anwendung ausführen zu können.
Laß nur diesen User die Anwendung ausführen (überprüf seine UID!),

Code:
man 2 getuid
man 2 setuid
und http://de.wikipedia.org/wiki/Unix-Dateirechte sowie
http://www.unixboard.de/vb3/showthread.php?t=23050&highlight=suid

geben mehr Informationen...
Mfg
 
Zuletzt bearbeitet:
Hi,
Danke für deine Antwort.
Habe nochmal nachgedacht und dabei festgestellt das ich es komplett falsch erklärt habe.
Mein Programm das via SSH aufgerufen wird gehört einem normalen User.
Dieser Startet verschiedene Dämons in unterordner. Nun muss das Programm aber auch für jeden gestarteten Dämon ein FTP user anlegen der in das Unterverzeichnis des Dämons eingesperrt ist. Ich würde dann gerne noch den max. nutzbaren Festplattenplatz für den FTP User einstellen, sprich das er nur max. 200MB uploaden darf. Darüber hinaus wäre es noch nett den FTP Traffic pro User einzustellen.
Mein Problem ist jetzt das ich mich mit FTP nicht sonderlich beschäftigt habe.
Ich habe bisher ProFTPD genutzt und habe für jeden neuen user einen in die Gruppe proftpd reingetan und die Shell auf false geleitet.
Wäre dankbar für ein bisschen Hilfe, es muss auch nicht Proftpd sein nutze auch gerne etwas anderes, der Server muss nur unter vielen Distros verfügbar sein.

Wenn das mal gut geht ...
Was soll das explizit heißen? Nutze in PHP libSSH2 und man hat mir gesagt das es sicher sei (hoffe ich zumindest:think:).
MFG ReduX08

Edit:
Habe nun herausgefunden das man User einfach mit ftpasswd anlegen kann, jedoch wie kann ich es machen das er nicht nach dem passwort frägt? Weil das kann ich ja hinterher mit dem system call nicht eingeben.
 
Zuletzt bearbeitet:
Nutze in PHP libSSH2 und man hat mir gesagt das es sicher sei ...
Gewiss ... ist es auch.
Ich hatte nur einen anderen Eindruck von dem was Du zu tun gedenkst,
als ich dies:
Ein PHP Webinterface das sich via SSH2 auf einen Server verbindet und dort ein Programm, dass in C++ geschrieben wird mit parametern aufruft.
... und dies ...
Sollte ich das Unter C++ immer mit dem system() call machen und immer sudo vorschreiben oder das Programm als root laufen lassen
gelesen hatte. Nix für Ungut.
Zu Deinen Fragen: Ich trau' mich fast gar nicht, das zu posten, aber alle Deine Wunschfunktionen sind in Proftpd implementiert.
Mußt dann mit den Direktiven ein bisserl herumspielen ( ProFTPd-FAQ )

Hat dann allerdings auch nicht mehr viel mit C/C++ zu tun :)

MfG
 
Damit es wieder etwas mit C++ zu tun hat:

Ich habe das jetzt so verstanden das ich am besten ein AuthUserFile anlege und dann mit C++ da drin rumfummle :devil:.

Nur die Frage ist die Syntax lautet(nach Google) ja:
username:password:uid:gid:gecos:homedir:shell

1.) Nur die Frage ist wie wird das Passwort verschlüsselt bzw. wie geht es unter C++.
Dann geht es noch um die Disk Quota, leider finde ich dazu IMHO nichts wie ich mit AuthUserFile die Disk Quota des jeweiligen Users einstelle.
Ferner noch die Frage was eigentlich uid,gid und gecos bedeutet?
Bzw. muss ich diese speziell setzen?

2.) Wie kann ich unter C++ wenn ich mit useradd einen User anlege Fragt er mich ja dann in der Konsole nach dem Passwort. Aber wie kann ich auf die Anfrage reagieren da der sys call ja nur den Befehl ausführt und dannach den "virutellen" Terminel wieder dicht macht.

MFG ReduX
 
Nur die Frage ist die Syntax lautet(nach Google) ja:
username:password:uid:gid:gecos:homedir:shell
Nicht wenn shadow-passwords vewendet werden, was mittlerweile Standard ist.
1.) Nur die Frage ist wie wird das Passwort verschlüsselt bzw. wie geht es unter C++.
man 3 crypt

2.) Wie kann ich unter C++ wenn ich mit useradd einen User anlege Fragt er mich ja dann in der Konsole nach dem Passwort. Aber wie kann ich auf die Anfrage reagieren da der sys call ja nur den Befehl ausführt und dannach den "virutellen" Terminel wieder dicht macht.
adduser hat die -p Option, das Passwort wird einfach crypt-veschlüsselt mitgegeben ;)
 
Zuletzt bearbeitet:
Nicht wenn shadow-passwords vewendet werden, was mittlerweile Standard ist.

Bedeutet das, dass ich es so nicht machen kann oder das es noch geht aber nicht gern gesehen ist?
Bzw. wie stell ich es an Shadow passwords da reinzubringen?

MFG ReduX08
 
ReduX08 schrieb:
Bedeutet das, dass ich es so nicht machen kann oder das es noch geht aber nicht gern gesehen ist?
Bzw. wie stell ich es an Shadow passwords da reinzubringen?
wurde doch schon gesagt: :)
der_Kay schrieb:
adduser hat die -p Option, das Passwort wird einfach crypt-veschlüsselt mitgegeben

Soll heißen, Du machst einen syscall (useradd) um Deinen Nutzer anzulegen. Den String für den syscall 'strcat'-test Du aus dem 'useradd' inkl. Parameter -p dem von crypt() zurückgeliferten String für das Passwort und einem Usernamen.

Wenn der Nutzer im System angelegt ist, kann man sich in aller Regel auch via ft dann anmelden.
Was die quotas betrifft fällt mir spontan mod_quotatab ein. Hier, ein Statement der Proftpd-Entwickler:
http://www.castaglia.org/proftpd/ ... schrieb:
This module is contained in the mod_quotatab.c, mod_quotatab.h, and in its submodule source files, for ProFTPD 1.2.x/1.3.x, and is not compiled by default
Mußt wohl dann die sourcen nochmal neu compilieren. Siehe hier:
http://www.castaglia.org/proftpd/modules/mod_quotatab.html

Hoffe das hilft Dir, mfg
 
Zurück
Oben