You should be able to use Win32::Perms for shares also. Here is a script where I remove permission that others may have set up on shares.
#--------------------------------------------------------------------------- --- # Author: Howard A. Bullock [[EMAIL PROTECTED]] # Created: 05-Nov-1999 # Modified: 09-Jan-2000 # # Usage: perl NullDACL.pl # # This script write a Null DACL to hidden shares on NT. This is very useful # when you inherit a system that has a large number of user shares in which # permission were assigned to shares that you want to remove. The result of # running this script against an NT computer is that Everyone will have FULL # control at the share level. Philosophically, I belong to the school of # thought where virtually all permissions should exist at the file system and # not at the share level. # # As currently written, this script target all non-administrative hidden shares # which are primarily the hidden user home shares in our environment. The # script can easily be altered to process other shares. # # Known Issues: The SetDacl method fails when $Server is the local computer. # This program works correctly against remote computers. #--------------------------------------------------------------------------- --- use Getopt::Std; use Win32::Lanman; use Win32::Perms; use strict; my (%opts, $Server); if ( ! getopts('c:', \%opts)) { # Check commandline options print "\noptions [-c computer_name]\n"; print "options [[-c] \"name1 name2 name3 ...\"]\n"; exit; } my @server = split / /, $opts{c}; # Put computer names into an array foreach $Server (@server) { # Loop for each computer my $LogFile = "Perms-HiddenShares-$Server.log"; my (@shares, @SortedShares, $share, $ShareName, @ShareNames, $NullDACL, $i); open (LOG, ">\\\\$Server\\c\$\\$LogFile") || die "Can not open \\\\$Server\\c\$\$LogFile"; if(!Win32::Lanman::NetShareEnum("\\\\".$Server, \@shares)) { print LOG "Error enumerating shares: " . Win32::Lanman::GetLastError() . "\n";; print "Error enumerating shares: " . Win32::Lanman::GetLastError() . "\n";; exit 1; } $i = 0; $NullDACL = new Win32::Perms(); # Create Null Dacl foreach $share (@shares) { # The Lanman function above returns push (@ShareNames, ${$share}{'netname'}); # an array of hashes. Create an array } # of just share names and discard the undef @shares; # the array of hashes. foreach $ShareName (sort @ShareNames) { # Regular expressions are used for matching those shares to ignore. # Adjust this criteria for share selection. Yes these could be combined but # were listed separately for readability and manageability. next if $ShareName !~ /\$$/; # Skip non-hidden shares next if $ShareName =~ /^[A-Z]\$$/; # Skip C$ etc drive shares next if $ShareName =~ /(^IPC\$|^ADMIN\$|^REPL\$)/i; # Skip Admin shares $i++; if ($NullDACL->SetDacl("share:\\\\$Server\\$ShareName")) { # Set Null Dacl print "$i share:\\\\$Server\\$ShareName\n"; print LOG "$i share:\\\\$Server\\$ShareName\n"; } else { print "$i ERROR share:\\\\$Server\\$ShareName\n"; print LOG "$i ERROR share:\\\\$Server\\$ShareName\n"; } } close LOG; } -----Original Message----- From: Sibi John [mailto:[EMAIL PROTECTED]] Sent: Tuesday, August 13, 2002 11:42 AM To: Perl (E-mail) Subject: Permissions on shares. Is there a way to find out using perl, permissions on network shares on w2k ?? I need to know just the share permissions, the security permissions on the folders itself have been found using Win32::Perms ~~~~~~~~~~~~~~~~~~~~ Sibi John. Systems Adminstrator. Deerfield Capital Management. E: [EMAIL PROTECTED] ~~~~~~~~~~~~~~~~~~~~~ _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs