Calocybe: Permission-Check von Dateien mit Perl

Beitrag lesen

Hi Klaus!

use Fcntl ':mode';
$mode = (stat($filename))[2];

>>6 schiebt die Bits um 6 stellen nach links, um so die gleichen

Werte für user,group und other zu erhalten

$user_rights  = ($mode & S_IRWXU) >> 6;
$user_read    = ($mode & S_IRUSR) >> 6;
$user_write   = ($mode & S_IWUSR) >> 6;
$user_execute = ($mode & S_IXUSR) >> 6;

für group wird nur um 3 Bits verschoben

$group_rights  = ($mode & S_IRWXG) >> 3;
$group_read    = ($mode & S_IRGRP) >> 3;
$group_write   = ($mode & S_IWGRP) >> 3;
$group_execute = ($mode & S_IXGRP) >> 3;

hier wird nichts mehr geschoben, weil das sowieso schon links ist

$other_rights  = ($mode & S_IRWXO);
$other_read    = ($mode & S_IROTH);
$other_write   = ($mode & S_IWOTH);
$other_execute = ($mode & S_IXOTH);

Warum shiftest Du hier gruppenweise nach rechts? Sehe nicht so ganz den Punkt. Wenn Du der Reihe nach um 8, 7, 6, 5, 4, 3, 2, 1, 0 shiften wuerdest, wuerde ich es einsehen, weil dann das betreffende Bit jeweils an der Stelle der 1 steht und man die u.U ausgeben will. Aber so, ist doch fuer einen boolschen Test egal, an welcher Stelle die 1 steht oder auch nicht.

So long