![]() |
Linux: Besitzer einer Datei ermitteln
Hi,
ich mache mir mit FreePascal ein kleines Tool, das unter Ubuntu laufen soll. Jetzt stehe ich irgendwie vor dem Problem, dass ich entweder zu blöd bin zum Gucken, oder dass die Delphi-/Pascal-Befehlsreferenzen nicht mehr so gut sind wie zu Zeiten, als es diese RAD Studios noch nicht gab. Ich suche nach einer Möglichkeit, den Besitzer einer Datei zu ermitteln, werde aber einfach nicht fündig. Geht das überhaupt? Oder müsste ich mir dafür irgendeine Art Shellscript machen? Danke schonmal, Stefan |
Re: Linux: Besitzer einer Datei ermitteln
Es gibt eines Systemcall namens chown:
![]() |
Re: Linux: Besitzer einer Datei ermitteln
Zitat:
@S - tefano: Versuche es mal mit ![]() ![]() |
Re: Linux: Besitzer einer Datei ermitteln
Wow, das ging schnell :)
Ich probiers nachher aus und melde mich dann. Dankeschön, Stefan |
Re: Linux: Besitzer einer Datei ermitteln
Du könntest auch die Ausgabe von "ls -l" parsen.
Spuckt dann sowas hier aus:
Code:
insgesamt 44
-rw------- 1 root root 10849 2009-03-17 14:33 .bash_history -rw-r--r-- 1 root root 19 2007-10-11 10:57 .bash_profile drwxr-xr-x 2 root root 4096 2006-04-23 03:51 bin -rw-r--r-- 1 root root 1332 2005-11-23 17:06 .exrc drwx------ 2 root root 4096 2007-09-29 23:24 .gnupg -rw-r--r-- 1 root root 541 2009-01-23 14:19 .htoprc drwxr-xr-x 3 root root 4096 2009-02-04 19:37 .mc -rw------- 1 root root 760 2007-10-11 10:52 .viminfo drwxr-xr-x 2 root root 4096 2007-10-09 17:50 .wapi |
Re: Linux: Besitzer einer Datei ermitteln
Zitat:
Code:
Also wofür gibt es Funktionen dafür? ;-)
ls: cannot open directory .: Permission denied
Achja, eines wäre noch. Der Eigentümer einer Datei ist immer nur seine UID. Das heißt, du solltest dich nicht wundern, wenn du eine Zahl als Rückgabe bekommst. Um den Namen des Users mit dieser UID herauszufinden, gibt es auch einen System-Call. Ich weiß allerdings nicht, wie dieser heißt, da ich nichts mit Lazarus und Delphi zutun habe. :gruebel: Edit:// Schau dir ![]() Mit freundlichen Grüßen, Valle |
Re: Linux: Besitzer einer Datei ermitteln
Jo, für den Namen hatte ich schon überlegt ob ich dazu vllt in der Users-Datei nachgucken kann. Zumindest wenn man die als normaler User zum Lesen öffnen kann... ausprobieren ;)
ls -l? Das wirft die Frage auf (weil ich zum ersten mal mit FreePascal arbeite): Kann ich etwa auf irgendeine Weise ganz normale Konsolenbefehle in den Code einbauen? |
Re: Linux: Besitzer einer Datei ermitteln
Zitat:
Zitat:
Mit freundlichen Grüßen, Valle |
Re: Linux: Besitzer einer Datei ermitteln
Das kannst Du mit TProcess. Hier ein Beispiel aus meinem einzigen Linux-Programm (Prüfung, ob der ausführende Benutzer Root-Rechte hat):
Delphi-Quellcode:
function CheckRoot: Boolean;
var aProcess: TProcess; sl : TStringList; begin Result := false; aProcess := TProcess.Create(nil); try aProcess.CommandLine := 'id -u'; aProcess.Options := aProcess.Options + [poWaitOnExit, poUsePipes]; sl := TStringList.Create; try aProcess.Execute; sl.LoadFromStream(aProcess.Output); if sl.Count > 0 then Result := StrToIntDef(sl[0],1) = 0; finally sl.Free; end; finally aProcess.Free; end; end; |
Re: Linux: Besitzer einer Datei ermitteln
Ui. :shock:
Wie wäre's damit?
Delphi-Quellcode:
Mit freundlichen Grüßen,
if geteuid() == 0 then
Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz