piet: im Perlscript aufrufenden user abfragen.

Hi,

ich habe eine Perllib die mir Einträge in eine Logdatei schreibt.

Diese lib wird aber von user x.y genauso von root (Linux) aufgerufen.

Wenn nun die Logdatei nicht existiert und der erste Eintrag von root geschrieben wird, ist der Besitzer der Datei "root". Der 2. Eintrag kommt von "user x.y" .... der kann die Datei nicht schreiben weil er nicht in der Gruppe "root" ist. (Schreibberechtigung für alle möchte ich nicht machen.)

Wenn ich nun den Benutzer der die lib aufruft in der Lib abfragen könnte, kann ich die Datei nicht unter "root" erstellen sondern der Gruppe aller "user".

Puh ... ich hoffe ich habe es gut erklärt.

Nochmals
-> lib Aufruf root -> erzeuge Datei und setze mit "chown" Berechtigung auf "user x.y"
-> lib Aufruf user y.x -> erzeuge Datei lasse Berechtigung auf "user x.y"
da alle user in der selben Gruppe sind.

Gruß
     piet

  1. Hallo,

    Wenn ich nun den Benutzer der die lib aufruft in der Lib abfragen könnte, kann ich die Datei nicht unter "root" erstellen sondern der Gruppe aller "user".

    hilft Dir getpwuid?

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      gelöst habe ich es so,

      sub isroot  
      {  
      my $tmp=`whoami`;  
      chomp($tmp);  
        
      	if ($tmp eq 'root')  
      	{return 1;}  
      	else  
      	{return 0;}  
      }
      

      gruß
             piet

      1. Moin Moin!

        Hallo,

        gelöst habe ich es so,

        sub isroot

        {
        my $tmp=whoami;
        chomp($tmp);

        if ($tmp eq 'root')
        {return 1;}
        else
        {return 0;}
        }

        
        >   
        >     gruß  
        >        piet  
          
        Oder kurz, ohne Extra-Prozess und ohne Angriffsmöglichkeiten über $ENV{'PATH'}:  
          
        $<==0  
          
        Siehe [perlvar](http://perldoc.perl.org/perlvar.html).  
          
        Alexander
        
        -- 
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        
        1. Hallo,

          Oder kurz, ohne Extra-Prozess und ohne Angriffsmöglichkeiten über $ENV{'PATH'}:

          $<==0

          Siehe perlvar.

          Bitte helf mir auf die Sprünge, ich weiß nicht was du meinst.

          Gruß
                  piet

          1. Moin Moin!

            Hallo,

            Oder kurz, ohne Extra-Prozess und ohne Angriffsmöglichkeiten über $ENV{'PATH'}:

            $<==0

            Siehe perlvar.

            Bitte helf mir auf die Sprünge, ich weiß nicht was du meinst.

            Schritt 1: Folge dem Link.
            Schritt 2: Suche auf der angezeigten Seite nach der Zeichenfolge $<.
            Schritt 3: Überlege, welchen Wert $< für root hat.

            Alexander

            --
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
  2. Wenn ich nun den Benutzer der die lib aufruft in der Lib abfragen könnte, kann ich die Datei nicht unter "root" erstellen sondern der Gruppe aller "user".

    Da hast du dir ja einen abenteuerlichen Hack für dein Problem einfallen lassen. Der Ansatz ist unterdurchschnittlich gut.

    Ersetze dein selbstgestricktes Dateilogging mit dem Standardmechanismus Syslog. Das mag kurzfristig aufwändiger ausfallen als der beabsichtigte Bugfix, aber spart dir Nerven auf lange Sicht.