Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Home Verzeichnis des Programmaufrufenden ermitteln

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gast






BeitragVerfasst am: 21.12.2005, 18:38    Titel: Home Verzeichnis des Programmaufrufenden ermitteln Antworten mit Zitat

Hallo Forum.

Mich würde mal interessieren ob es möglich ist, das Home-Verzeichnis (/home/user) desjenigen users herauszufinden, der das kompilierte Programm aufruft.
Pauschal kann man ja von /home/user ausgehen, aber ich hab auch schon auf Servern gearbeitet, dessen Home-Verzeichnis ein ganz anderes ist, man also nicht einfach per Hard-Code von /home ausgehen kann.

Gibt es da eine Möglichkeit ?

Mir geht es nämlich darum, dass ein Programm von mir Teile von verschiedenen Files (/etc u.s.w.) verarbeitet in eine datei zusammenfügt, und diese in dem Home des aufrufenden Users gespeichert werden soll.
Nach oben
Eastler_dart



Anmeldungsdatum: 24.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 21.12.2005, 21:36    Titel: Antworten mit Zitat

Hallo Gast,

du willst also mit deinem Programm Daten aus /etc einlesen und im Home-Verzeichnis abspeichern.

Hoffe doch, daß dein Programm dann nur der Administrator verwenden darf ?

In /etc liegen auch Daten, die sonst niemanden etwas angehen!

Zu deinem eigentlichen Problem kann ich nicht konkret helfen, ich kenn zwar Linux, aber programmiere mit FB unter Windows.

Dort kann man mit dem "Command" Befehl Konsolenbefehle ausführen lassen. Es gibt auch Befehle, mit denen man die Parameter beim Aufruf deines Programmes bekommt, und dabei erhälst du auch den Programmnamen und das Verzeichnis.

Wie diese Befehle heißen, weiß ich nicht genau, aber mit der Forum-Suche findest du die bestimmt, such mal nach "command".

Hoffe es hilft, und denk an die Datensicherheit

Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
DOSe
aka EXP-S


Anmeldungsdatum: 05.07.2005
Beiträge: 96

BeitragVerfasst am: 22.12.2005, 01:12    Titel: Antworten mit Zitat

http://www.fbarchiv.de/index.php?page=showcode&id=19

Da findest nen tipp, wie du an das Homeverzeichniss drankommen könntest...

ist zwar nicht die beste Art aber hab bis dato keine bessere Methode gefunden.

Greez DOSe

P.s:
Eastler_dart hat Folgendes geschrieben:

Hoffe doch, daß dein Programm dann nur der Administrator verwenden darf ?

In /etc liegen auch Daten, die sonst niemanden etwas angehen!

Eastler


1. Was soll ein User prg denn schon groß anrichten, wenn der aus zu führende user net gerade die nötigen rechte hat?

2. stimmt net ganz, die fstab ist auch für den user relewand zwinkern und auch sonst so einiege daten... /etc is ja eh meist nur dafür da um da die conf files zu lagern... lächeln
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 22.12.2005, 21:43    Titel: Antworten mit Zitat

Eastler_dart hat Folgendes geschrieben:
du willst also mit deinem Programm Daten aus /etc einlesen und im Home-Verzeichnis abspeichern.

Da wurde eindeutig etwas zu weit gesucht, die Lösung ist viel einfacher: Umgebungsvariable $HOME ! Brauchte ich auch schon mehr als einmal in Shellscripts.

Falls sich FreeBASIC dort an die QB-Syntax hält, müsste es ENVIRON$("HOME") heissen.

Übrigens ist /etc/passwd normalerweise für jedermann lesbar, dagegen /etc/shadow kann nur der "root" lesen. Vom direkten Einlesen dieser Datei rate ich jedoch ab, denn schliesslich kann das Programm auch einmal in einem UNIX/Linux-Umfeld mit NIS-Domäne ausgeführt werden, wo man nur mit "ypcat passwd" die Benutzerliste bekommt.

Manual-Pages bekannter C-Standardfunktionen:

man 3 getpwuid
man 3 getpwnam

=> nur damit sollte man auf die in /etc/passwd abgelegten Daten zurückgreifen, weil sich dann das Betriebssystem darum kümmert, ob es nun lokale Benutzer oder NIS-Benutzer sind. Bestimmt hat die Linux-Portierung von FreeBasic eine Schnittstelle auf diese Standard-C-Library-Funktionen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
M-ichael



Anmeldungsdatum: 24.12.2005
Beiträge: 4

BeitragVerfasst am: 24.12.2005, 01:38    Titel: Erledigt Antworten mit Zitat

Hallo Forum!

Erstmal Danke für die hilfreichen antworten. Da ich nicht als Gast antworten konnte, und ich eh schon vor hatte mich zu registrieren, hab ich es einfach mal gemacht !

So, nun zu dem Thema home-verzeichnis

Ich hab es tatsächlich 10 Minuten später mittels HOME-Environment gelöst, was am einfachsten war. Zu mal diese Variable vom System als read-only gesetzt ist, dürfte es keine Probleme geben.

Nun zum Hintergrund der Frage: Ich kann euch beruhigen.
Das Programm ist sicherheitstechnisch unbedenklich. Im Gegenteil, es ist ziemlich nützlich für unser Intranet.
Das Programm heisst blackmail.
Es ist ein dynamischer Mailfilter, den ich mir gebaut habe, der alle Stunde die ~/.procmailrc aktualisiert (mittels cronjob), daher ja auch die Sache mit dem Home-Verzeichnis..
Zur Zeit ist es nur ein Domain-Filter, und die Domains liegen eben in /etc/blackmail/blackmail.domains

Der User hat seine eigenen Regeln in ~/.blackmail.procmailrc

So, nun startet das Programm (sofern der User seinen Cronjob eingerichtet hat) und macht folgendes:
Erstelle eine neue Temporäre Datei in /tmp
Kopiere die Userdefined-Rules rein (~/.blackmail.procmailrc)
Jetzt erstelle den dynamischen Domain-Filter anhand der Liste aus blackmail.domains
was so abläuft:
Code:

 !pseudocode
  loop
   lese zeile aus /etc/blackmail/blackmail.domains (=> $DOMAIN)
   schreibe in /tmp/tempfile
 
    :0:
    ^From.:*@$DOMAIN
    /dev/null
   solange bis liste fertig
!pseudocode ende


erstelle ein ~/.blackmail.procmail backup
verschiebe die temporäre regel(rezept)-datei nach ~/.procmailrc

Was ist der Sinn dieses Programms ?
Nun, ich hätte genausogut junkmail bzw. spamassassin verwenden können, aber so hab ich doch schon bissl mehr kontrolle drüber, was mit den Mails passiert.

Und natürlich ist die domain-liste lesbar von jedem, damit er schauen kann, welche domains geblockt bzw. ausgefiltert werden.
Der Grund warum in /etc/ ist einfach, da sie ja systemweit gilt happy aber natürlich auch die regeln der User (s.o.) berücksichtigt.
Deswegen kommen auch die systemweiten regeln erst NACH den UserRegeln, damit evtl. Domains, die geblockt sind, doch durchgelassen werden.


Hab grad 5h an einer eigenen cgi-lib verbracht, da cgi-utils irgendwie nicht funzt.
GET funktioniert schon wunderbar, nur POST will noch ned so...wie funzt bei fb eigentlich stdin ??

...nicht wundern das ich so komisch schreibe durchgeknallt

bei bedarf veröffentlcihe ich auch mal den quellcode...von beiden (wobei das cgi-teil noch bissl dauert und noch nicht so ganz fertig ist, aber welcher code ist das schon....lächeln
n8in8
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz