Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [PERL] CHOWN auf symbolische Links macht Probleme

  1. #1
    Registrierter Benutzer Avatar von ClausVB
    Registriert seit
    05.08.2005
    Ort
    NRW - Deutschland
    Beiträge
    106

    Question [PERL] CHOWN auf symbolische Links macht Probleme

    Ich habe einen erfolgreichen CHOWN und einen nicht erfolgreich durchgeführt wird:

    Code:
    if (chown($ug_id, $ug_id, $dir_virtual_statistik))
    {
    	print chown($ug_id, $ug_id, $dir_virtual_statistik . '/webalizer');
    	print "Der CHOWN für die SYMLINKs \"webalizer\" und \"logfiles\" war erfolgreich!\n";
    }
    $ug_id = 1120 # ug_id => u = user, g = group

    Der zweite CHOWN gibt zwar eine 1 zurück, aber er ändert die Rechte nicht.

    Code:
    drwxr-xr-x    2 1120     1120          104 Sep  9 14:23 .
    drwxr-xr-x    3 1120     1120           88 Sep  9 14:23 ..
    lrwxrwxrwx    1 root     root           62 Sep  9 14:23 logfiles -> /home/user120/webspace/logfiles/session.user120.de/apache2
    lrwxrwxrwx    1 root     root           70 Sep  9 14:23 webalizer -> /home/user120/webspace/statistics/web/session.user120.de/webalizer
    (...)
    drwxr-xr-x    2 1120     1120          104 Sep  9 14:23 session.user120.de
    pcl3129:/htdocs/perl_einfuehrung/sessionnet #
    Hinweis: Da die UID=1120 (und GID ebenfalls) nur auf dem Produktionsystem existieren, steht hier als Eigentümer wirklich die Zahl und nicht irgendein Name.

    Fragen: Während das Verzeichnis ordentlich geändert werden, bleibt "webalizer" auf ROOT-Rechten stehen. Liegt das an den symbolischen Links?
    Was muss ich tun, damit beide symbolischen Links auch 1120 gehören?

    Danke und Gruß
    Claus

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Kennt das Perl module --dereference?
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer Avatar von ClausVB
    Registriert seit
    05.08.2005
    Ort
    NRW - Deutschland
    Beiträge
    106
    Zitat Zitat von undefined
    Kennt das Perl module --dereference?
    Nein, ich fürchte nicht.

    perldoc -f chown
    chown LIST
    Changes the owner (and group) of a list of files.
    The first two elements of the list must be the
    numeric uid and gid, in that order. A value of -1
    in either position is interpreted by most systems
    to leave that value unchanged. Returns the number
    of files successfully changed.

    $cnt = chown $uid, $gid, 'foo', 'bar';
    chown $uid, $gid, @filenames;

    Here's an example that looks up nonnumeric uids in
    the passwd file:

    print "User: ";
    chomp($user = <STDIN>);
    print "Files: ";
    chomp($pattern = <STDIN>);

    ($login,$pass,$uid,$gid) = getpwnam($user)
    or die "$user not in passwd file";

    @ary = glob($pattern); # expand filenames
    chown $uid, $gid, @ary;

    On most systems, you are not allowed to change the
    ownership of the file unless you're the superuser,
    although you should be able to change the group to
    any of your secondary groups. On insecure sys-
    tems, these restrictions may be relaxed, but this
    is not a portable assumption. On POSIX systems,
    you can detect this condition this way:

    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
    $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);

  4. #4
    Registrierter Benutzer Avatar von ClausVB
    Registriert seit
    05.08.2005
    Ort
    NRW - Deutschland
    Beiträge
    106
    Google zeigt zum oben genannten Stichwort in Verbindung mit Perl auch keine Hilfe.

    Ich habe es jetzt jedoch einen Workaround hinbekommen:

    Code:
    print system("chown -h $ug_id.$ug_id $dir_virtual_statistik/*") . "\n";
    ergibt

    Code:
    drwxr-xr-x    2 1120     1120          104 Sep  9 15:34 .
    drwxr-xr-x    3 1120     1120           88 Sep  9 15:34 ..
    lrwxrwxrwx    1 1120     1120           62 Sep  9 15:34 logfiles -> /home/user120/webspace/logfiles/session.user120.de/apache2
    lrwxrwxrwx    1 1120     1120           70 Sep  9 15:34 webalizer -> /home/user120/webspace/statistics/web/session.user120.de/webalizer
    und das ist natürlich dann auch richtig, aber ich wäre schon an einer "richtigen" Perl-Lösung interessiert.

    Gruß
    Claus

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •