2

DIRECTORY パーミッションを検証できるように、コードを記述する必要があります。'Google' の周りにいて、File::stat の使用が私のニーズに合っているように見えます。ただし、以下のようにコードを試してみると、アスペクトどおりの結果が得られません。ディレクトリに読み取りおよび実行権限がないかどうかを探しています。ディレクトリ名が表示されます。誰でも助けることができますか?以下は、私がウェブから見つけたコード行です。試してみましたが、好意的な出力が得られないようです。

#! /usr/bin/perl

use strict ;
use warnings ;
use File::stat ;

my $path = "/nfs/ch/test_dir" ;

opendir (DH, $path) || die "Fail to open dir:$!\n" ; ;
my @dir = readdir (DH) ;
closedir (DH) ;

foreach my $dir (@dir) {
 print "DIR: $dir\n" ;
 $dirmode = (stat($dir)) [2] ;
 printf "Permissions are %04o\n", $dirmode & 07777;
 print "DIRmode= $dirmode\n" ;
 }

出力は次のようになります:- DIR: groupA 権限は 0000 DIRmode= DIR: groupB 権限は 0000 DIRmode=

検索パスのディレクトリに読み取りと実行のための GROUP と WORLD PERMISSION がないことがわかったときに、ディレクトリ名を出力できるコードを実際に探しています。ありがとうございます。

4

3 に答える 3

1
#! /usr/bin/perl

use strict ;
use warnings ;
use File::stat ;
use Fcntl ':mode';

my $path = "/nfs/ch/test_dir" ;

opendir (DH, $path) || die "Fail to open dir:$!\n" ; ;
my @dir = readdir (DH) ;
closedir (DH) ;

foreach my $dir (@dir) {
 print "DIR: $dir\n" ;
 $dirmode = (stat($dir)) [2] ;
 printf "Permissions are %04o\n", $dirmode & 07777;
 $group_read = ($dirmode & S_IRGRP) >> 3; // group read permission
 $group_exe = ($dirmode & S_IXGRP) >> 3; // group execute permission 
print "group read = $group_read\n" ; // 0 for not set
print "group execute = group_exe\n" ; // 0 for not set
 }
于 2013-06-25T05:37:49.667 に答える
1

と を使用File::Findstatます。

#!/usr/bin/perl

use warnings;
use strict;

use File::Find;

my $full_path = "/Users/chrisblack/Misc";

find(\&wanted, $full_path);

sub wanted {
    if (! -e || ! -d) {
        return;
    }

    my $mode = (stat($File::Find::name))[2];
    $mode = $mode & 0777;
    if(($mode & 060) == 060 || ($mode & 070) == 070) {
        print $File::Find::name, " has read and write perms\n";
    }
}

テスト実行は次のとおりです。

$ ls -l
drwxrwxrwx  2 chrisblack  staff   68 Jun 24 22:40 a_dir
drwxr--r-x  2 chrisblack  staff   68 Jun 24 22:26 b_dir
drwx--xr-x  2 chrisblack  staff   68 Jun 24 22:26 c_dir
drwxrw-r-x  2 chrisblack  staff   68 Jun 24 22:26 d_dir
-rwxr--r--  1 chrisblack  staff  395 Jun 24 22:53 test.pl
-rwxrwx---  1 chrisblack  staff  191 May 17 08:36 test.py
$ ./test.pl
/Users/chrisblack/Misc/a_dir has read and write perms
/Users/chrisblack/Misc/d_dir has read and write perms
于 2013-06-25T05:56:57.920 に答える
0

私のために働くPerlコード。ディレクトリに「書き込み」権限があるかどうかを確認するには、

open(FH, ">check_write.txt") 
or die("Cannot write. Check write permission!");
close(FH);
system "rm check_write.txt";
于 2016-04-28T03:42:47.240 に答える