|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Gast
|
Verfasst am: 21.12.2005, 18:38 Titel: Home Verzeichnis des Programmaufrufenden ermitteln |
|
|
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
|
Verfasst am: 21.12.2005, 21:36 Titel: |
|
|
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 |
|
|
DOSe aka EXP-S
Anmeldungsdatum: 05.07.2005 Beiträge: 96
|
Verfasst am: 22.12.2005, 01:12 Titel: |
|
|
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 und auch sonst so einiege daten... /etc is ja eh meist nur dafür da um da die conf files zu lagern... _________________
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2514 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.12.2005, 21:43 Titel: |
|
|
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 |
|
|
M-ichael
Anmeldungsdatum: 24.12.2005 Beiträge: 4
|
Verfasst am: 24.12.2005, 01:38 Titel: Erledigt |
|
|
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 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
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....
n8in8 |
|
Nach oben |
|
|
|
|
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.
|
|