AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Linux: Besitzer einer Datei ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Linux: Besitzer einer Datei ermitteln

Ein Thema von S - tefano · begonnen am 17. Mär 2009 · letzter Beitrag vom 17. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 15:20
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
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 15:21
Es gibt eines Systemcall namens chown: http://linux.die.net/man/3/chown
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#3

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 15:30
Zitat von Dax:
Es gibt eines Systemcall namens chown: http://linux.die.net/man/3/chown
Er will den Besitzer herausfinden, nicht ändern.


@S - tefano:
Versuche es mal mit FpStat aus der Unit BaseUnix
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 15:33
Wow, das ging schnell
Ich probiers nachher aus und melde mich dann.

Dankeschön,

Stefan
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#5

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 15:42
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
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 16:02
Zitat von H4ndy:
Du könntest auch die Ausgabe von "ls -l" parsen.
Das ist aber sehr dreckig! Zumal ls -l auch nicht zwingend funktioniert. Wenn ich einem Ordner die Rechte "111" gebe (Nur Execution Bit), dann gib ls folgende Fehlermeldung aus.

Code:
ls: cannot open directory .: Permission denied
Also wofür gibt es Funktionen dafür?

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.

Edit:// Schau dir das hier mal an.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 17:37
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?
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 17:43
Zitat von S - tefano:
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
Users-Datei? Meinst du /etc/passwd? Auch davon würde ich dir abraten! Das funktioniert nicht immer, zum Beispiel bei mir. Es gibt Umgebungen, in denen die System-Benutzer in einer Datenbank oder zum Beispiel auf einem LDAP-Server gespeichert sind. In /etc/passwd wirst du dann nicht viel finden. Benutze also am besten die System-Calls!

Zitat von S - tefano:
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?
Ja, du kannst Konsolenbefehle über den Code ausführen. Unter Linux und Lazarus geht das auch relativ einfach, da es dafür einige Befehle gibt. Aber: Bitte benutze nicht die Ausgabe von ls. Das ist sehr schlechter Coding-Stil und muss eben auch nicht immer funktionieren.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 17:44
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#10

Re: Linux: Besitzer einer Datei ermitteln

  Alt 17. Mär 2009, 17:48
Ui.

Wie wäre's damit?

if geteuid() == 0 then Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz