Welcome Guest ( Log In | Register )



 
Reply to this topicStart new topic
> Lightweight Directory Access Protocol (ldap), Interfacing Microsoft's Active Directory over LDAP
Mr. Matt
post Mar 24 2008, 10:14 PM
Post #1


Newbie [ Level 2 ]
Group Icon

Group: Members
Posts: 13
Joined: 22-March 08
From: Arizona
Member No.: 29,306



This was a script I wrote for automating the creation of over 1000 some accounts within Active Directory over summer before the new fiscal year in 2007. It is not intended for direct use. Please make changes necessary to reflect your user management or production environment.

#!/usr/bin/perl
use strict;
# use Tk;
# use Tk::DialogBox;
# use Tk::Carp qw/cluck warningsToDialog fatalsToDialog/;
use Win32::FileSecurity qw(MakeMask Get Set);
use Win32::OLE;

/*
my $adp_acct = 'USERNAME';

use constant ADP_DOMAIN = 'DOMAIN';
use constant ADP_PARENT_OU => 'ou=Sub Organizational Unit, ou=Organizational Unit, dc=' . ADP_DOMAIN;
use constant ADP_GROUP_OU => 'cn=Group Name, dc=DOMAIN';
use constant CHANGE_PASSWORD_GUID => '{ab721a53-1e2f-11d0-9819-00aa0040529b}'; # User cannot change password
use constant ADS_UF_DONT_EXPIRE_PASSWD => 0x10000; # Password does not expire
use constant ADS_CUSTOM_ACCOUNT_ENABLED => 0x512; # Account is enabled
use constant ADS_RIGHT_DS_CONTROL_ACCESS => 0x100;
use constant ADS_ACETYPE_ACCESS_DENIED => 0x1;
use constant ADS_ACETYPE_ACCESS_ALLOWED_OBJECT => 0x5;
use constant ADS_ACETYPE_ACCESS_DENIED_OBJECT => 0x6;
use constant ADS_ACEFLAG_OBJECT_TYPE_PRESENT => 0x1;

my $ADP_USER_OU = "ou=Container, " . ADP_PARENT_OU;
my $adp_domain = 'DOMAIN';

print LOG "Adding $adp_acct...\n";

my $objDomain = Win32::OLE->GetObject("LDAP://$ADP_USER_OU");
my $objUser = $objDomain->Create('user', 'cn=' . $adp_acct);

$objUser->Put('sAMAccountName', "$adp_acct");
$objUser->Put('userPrincipalName', "$adp_acct\@" . ADP_DOMAIN);
$objUser->Put('userAccountControl', ADS_UF_DONT_EXPIRE_PASSWD);
$objUser->SetInfo;

my %current_acl;
mkdir $adp_homedirectory;
my $acl_admin = MakeMask(qw(GENERIC_ALL FULL));
my $acl_user = MakeMask(qw(CHANGE GENERIC_WRITE GENERIC_READ GENERIC_EXECUTE));

$current_acl{Administrator} = $acl_admin;
$current_acl{$adp_acct} = $acl_user;
delete $current_acl{Everyone};

Set($adp_homedirectory, \%current_acl);

my $objGroup = Win32::OLE->GetObject('LDAP://' . ADP_GROUP_OU);
$objGroup->Add("LDAP://cn=$adp_acct, " . $ADP_USER_OU);

my $objACESelf = Win32::OLE->new('AccessControlEntry');
my $objACEEveryone = Win32::OLE->new('AccessControlEntry');
$objACESelf->{Trustee} = 'NT AUTHORITY\SELF';
$objACEEveryone->{Trustee} = 'EVERYONE';
$objACESelf->{AceFlags} = 0;
$objACESelf->{AceType} = ADS_ACETYPE_ACCESS_DENIED_OBJECT;
$objACESelf->{Flags} = ADS_ACEFLAG_OBJECT_TYPE_PRESENT;
$objACESelf->{ObjectType} = CHANGE_PASSWORD_GUID;
$objACESelf->{AccessMask} = ADS_RIGHT_DS_CONTROL_ACCESS;
$objACEEveryone->{AceFlags} = 0;
$objACEEveryone->{AceType} = ADS_ACETYPE_ACCESS_DENIED_OBJECT;
$objACEEveryone->{Flags} = ADS_ACEFLAG_OBJECT_TYPE_PRESENT;
$objACEEveryone->{ObjectType} = CHANGE_PASSWORD_GUID;
$objACEEveryone->{AccessMask} = ADS_RIGHT_DS_CONTROL_ACCESS;

my $objACEUser = Win32::OLE->GetObject("LDAP://cn=$adp_acct, $ADP_USER_OU");
my $objSecDescriptor = $objACEUser->Get('ntSecurityDescriptor');
my $objDACL = $objSecDescriptor->DiscretionaryAcl;
$objDACL->AddAce($objACESelf);
$objDACL->AddAce($objACEEveryone);
$objUser->Put('ntSecurityDescriptor', [$objSecDescriptor]);
$objUser->SetInfo;
*/


This post has been edited by Mr. Matt: Mar 24 2008, 10:43 PM
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

Collapse

> Similar Topics

Topics Topics
  1. Broadband Connection Monitoring(3)
  2. Permission Denied In Creating A Directory(6)
  3. Yahoo! Protocol: Part 11 - Booters Introduction(4)
  4. VB6-MS Access Question(7)
  5. FTP Access: Login Failure Problems(10)
  6. Easy Message: The Ultra Light Multi-Protocol Messenger(3)
  7. VB.NET: MS-Access Interaction Tutorial (Part I)(17)
  8. Connecting Ms Access To Php Using Odbc(5)
  9. The Zune(34)
  10. Help: XP Pro Admin Account Deleted! Only Guest Access(40)
  11. Firefox 2(3)
  12. SMTP Access?(3)
  13. C++: Basic Classes(4)
  14. Url File-access Is Disabled In The Server Configuration(7)
  15. Cracking Wireless Access Point Password?(20)
  1. Access(17)
  2. Access 97 To Access 2003(15)
  3. Three Ways To Access Linux Partitions From Windows On Dual-boot Systems(5)
  4. Can't Access My Site.(2)
  5. Microsoft's Virtual Server & Wsus(0)
  6. Can't Access Root Anymore =((5)
  7. Flashget Download Manage(0)
  8. Can't Access Any Site Hosted On The Server(4)
  9. Access Linux Box From Windows Machine- Putty Tool(2)
  10. Integrate Access Database Onto Intranet Site(5)
  11. Domain Name Is Not Assigned To Ip. Access Cpanel With Ip Not With Domain Name.(5)
  12. Main Trap17 Site Is Down?(0)
  13. Accessing Ms Access Database From A Centralized Location?(3)


 



- Lo-Fi Version Time is now: 7th July 2008 - 01:00 AM