ããã«ã¡ã¯ ADSIããã³PowerShellã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠããªãœãŒã¹ãžã®ãŠãŒã¶ãŒæš©å©ã®å²ãåœãŠãèªååããæ¹æ³ãæ€èšããŠãã ããã æåã¯ãå€ãWindows 2003ãã¡ã€ã³ã³ã³ãããŒã©ãŒã䜿çšããã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãå¶éãããšãã«åé¡ãçºçããŸããã ãã®ãããã¯ã¯ã以åã«Habréã§åãäžããããŸããã ç§ã説æããã±ãŒã¹ã§ã¯ãWindows 2008 OSãžã®ç§»è¡ã¯éšåçã«ããè¡ãããŸããã§ããããããã»ã¹ã®è€éããšé·ãã®ç¹ã§ã¯ãããããç«æãžã®ããã·ã§ã³ã«å¹æµããŸãã
åé¡æïŒ
倧èŠæš¡ãªçµç¹ã§æ°ãããŠãŒã¶ãŒãäœæãããšããã®ã¢ã«ãŠã³ãã®ã¡ã³ããŒã§ããADã°ã«ãŒããå«ãããã®ã¢ã«ãŠã³ãã®ãã¹ãŠã®ç¹æš©ã説æããããã¥ã¡ã³ããäœæãããŸãã
å€æ°ã®å
±æãªãœãŒã¹ãæã€ãŠãŒã¶ãŒã®ãã¡ã€ã«ã¹ãã¬ãŒãžãšããŠäœ¿çšãããã¹ãã¬ãŒãžã·ã¹ãã ããããŸãã ã¹ãã¬ãŒãžã·ã¹ãã äžã®åå
±æãªãœãŒã¹ïŒãŸãã¯ããŒã«ïŒã«ã¯ãå°ãªããšã2ã€ã®ADã¢ã¯ã»ã¹ã°ã«ãŒããå«ãã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ãïŒACLïŒãå«ãŸããŠããŸã-ãŠãŒã¶ãŒïŒèªã¿åãããã³å®è¡æš©éïŒãšç®¡çïŒç·šéããã³åé€ïŒã ADã®äž¡æ¹ã®ã°ã«ãŒãã®ååã«ã¯ãæ€çŽ¢ã容æã«ããããã«ãªãœãŒã¹èªäœã®ååãå«ãŸããŠããŸãã ãããã£ãŠããªãœãŒã¹ãžã®ãã«ã¢ã¯ã»ã¹ã«ã¯ãäž¡æ¹ã®ã°ã«ãŒãã®ã¡ã³ããŒã·ãããå¿
èŠã§ãã
ã¹ãã¬ãŒãžã·ã¹ãã ã«ã¯ããããªãã¯ãã¡ã€ã³ã®ãªãœãŒã¹ãžã®ãªã³ã¯ãžã®ã·ã§ãŒãã«ãããå«ããã£ã¬ã¯ããªããããŸãã ãã¡ã€ã³ã®æ°ãããšã³ããªããã°ã€ã³ãããšãStartup.scriptãå«ãã°ã«ãŒãããªã·ãŒãåŠçãããŸãã ã¹ã¯ãªããã¯ãå¿
èŠãªãã¹ãŠã®ã·ã§ãŒãã«ããããŠãŒã¶ãŒã®ãã¹ã¯ãããã«ã³ããŒããŸãã ãŠãŒã¶ãŒã¯äœãæ€çŽ¢ãããããã«å¿
èŠãªãã¹ãŠã®ããã¥ã¡ã³ãã«ã¢ã¯ã»ã¹ã§ããŸãã
ç§ãã¡ã®ã¿ã¹ã¯ã¯æ¬¡ã®ãšããã§ãã
- ãŠãŒã¶ãŒãäœæããŸãã
- ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ããå¿
èŠããããã£ã¬ã¯ããªã®ãªã¹ããå®çŸ©ããŸãã
- ãã£ã¬ã¯ããªåãå«ãååã§ã°ã«ãŒããäœæããŸãã
- ã°ã«ãŒããACLãã£ã¬ã¯ããªã«è¿œå ããŸãã åã°ã«ãŒãã«é©åãªNTFSæš©éãå²ãåœãŠãŸãã
- äœæãããã°ã«ãŒãã«ãŠãŒã¶ãŒãå«ããŸãã
- ã¿ã€ãã«ã«ãã£ã¬ã¯ããªåã䜿çšããŠã·ã§ãŒãã«ãããäœæããŸãã
- Startup.scriptãæŽæ°ããŸãããŠãŒã¶ãŒãã°ã«ãŒãã®ããããã«ããå Žåã¯ã察å¿ããã·ã§ãŒãã«ããããã¹ã¯ãããã«ã³ããŒããŸãã
- å©çšå¯èœãªæè¡çæ段ã䜿çšããŸãã
Windowsã·ã¹ãã ã§äžèšã®ã¢ã¯ã·ã§ã³ãå®è¡ããã«ã¯ãå°ãªããšã4ã€ã®æ¹æ³ããããŸãã èšããŸã§ããªãã1人ã®æ°ãããŠãŒã¶ãŒã§ãæšæºã®ã¹ãããã€ã³ã䜿çšããŠãããã®ã¢ã¯ã·ã§ã³ãå®è¡ãããšãããŠã¹ã®100åã®ã¯ãªãã¯ã«å¯Ÿå¿ã§ããªããªããŸãã 50人ã®ãŠãŒã¶ãŒãšã¢ã¯ã»ã¹æš©éãããå Žåã1æ¥ã§ãããè¡ãããšã¯ã§ããŸããã åã¢ã€ãã ãåå¥ã«èªååããããšããŸãã ãŠãŒã¶ãŒã®äœæã«ã€ããŠã¯è©³ãã説æããŸãããããã¯ç°¡åã«ã¢ã¯ã»ã¹ã§ããæ
å ±ã§ãã
ãã€ã³ã7ãèšäºã®ç¯å²ãè¶
ããŠããŸããå®éãGPOããªã·ãŒã®ç®¡ççšãã³ãã¬ãŒãã§ãã ã¹ã¯ãªããã®å
容ã¯æ¬¡ã®ãšããã§ãããŠãŒã¶ãŒãã°ã«ãŒãã«å±ããŠããå Žåãç¹å®ã®ãã£ã¬ã¯ããªãããã¹ã¯ãããã«å¯Ÿå¿ããã·ã§ãŒãã«ãããã³ããŒããå¿
èŠããããŸãã ä»ã®ãã¹ãŠãPowerShellã§ããªãèªååãããŠããŸãã
ãšã©ãŒããã®ä»ã®ãã¥ã¢ã³ã¹ããã§ãã¯ããã«ãã¹ãã¹ã¯ãªãããèšè¿°ããŸãã
ãã¹ãã®å€æ°ãæåã§æ±ºå®ããŸãã ãŠãŒã¶ãŒã®æ°åãšå©çšå¯èœãªãªãœãŒã¹ã®ãªã¹ãã¯ãã¢ã«ãŠã³ãäœæããã¥ã¡ã³ãããååŸãããŸãã
$server_name = read-host -prompt "Enter fileserver" $share_name = read-host -prompt "Enter share_name" $UNC="\\$server_name"+"\$share_name"+"$"
ãã¹ãŠãæ£ããå
¥åããããæåã«ãã£ã¬ã¯ããªãšãããåç
§ããã·ã§ãŒãã«ãããäœæããŸãã
if ($server_name -eq ){ $path = + #Check if the directory exists. Skip if true. if(!(Test-Path($UNC))) { #Create directories Write-Host New-Item -path $path -name $share_name -Type directory
COMãªããžã§ã¯ããä»ããŠã·ã§ãŒãã«ãããäœæããŸãã
Write-Host "Creating shortcut" New-Item -path $path\E182_P_GroupWare\Projets_Specifiques\$share_name -Type directory $wsh = New-Object -com 'WScript.Shell' $dir = "$path\E182_P_GroupWare\Projets_Specifiques\$share_name" $sct = $wsh.CreateShortcut("$dir" +"\$share_name.lnk") $sct.TargetPath =$UNC $sct.Save()
ã»ãã¥ãªãã£ã°ã«ãŒããäœæããŸãã
ãŸããã¡ãã£ãšããçè«ïŒ
ADã«ã¯ã»ãã¥ãªãã£ã°ã«ãŒããšé
åžã°ã«ãŒãããããŸãã é
åžã°ã«ãŒãã¯ãäž»ã«MS Exchangeã®ã¡ãŒãªã³ã°ãªã¹ãã«äœ¿çšãããŸãã
ã°ã«ãŒãã¯ãããŒã«ã«ãã°ããŒãã«ããŠãããŒãµã«ã«åããããŸãã
- ããŒã«ã«ã°ã«ãŒã-ãã¡ã€ã³ã®æš©éã管çããŸãã ä»ã®ãã¡ã€ã³ã®ãªããžã§ã¯ããå«ããããšãã§ããŸãã
- ã°ããŒãã«-ä»»æã®ãã¡ã€ã³ã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸããã1ã€ã®ãã¡ã€ã³ã®ãŠãŒã¶ãŒã®ã¿ãå«ããŸãã
- ãŠãããŒãµã«-å€ãã®ãã¡ã€ã³ã®ãã©ã¬ã¹ãã§äœ¿çšããããã¹ãŠã倧ããæ··ä¹±ãããŸãã ãããã䜿çšããå¿
èŠã¯ãããŸããã§ããã
å±æ§ã調ã¹ãŠã¿ããšãããŒã«ã«ã°ã«ãŒãã®èå¥åãgroupType -2147483644ã§ãããã°ããŒãã«ã-2147483646ã§ããããšãããããŸãã
ã°ã«ãŒãèªäœã®ç®çã¯ãæ°ã®äžéšã«ãã£ãŠæ±ºå®ãããããã§ãã èŠã«ããå Žåã¯ãTechNetã§èå¥åã確èªã§ããŸãã
ãã¡ã€ã³ã«ããŒã«ã«ã°ã«ãŒããæå®ããŠäœæããŸããã³ã¡ã³ãã«è¿œå æ
å ±ãæå®ããŸãïŒã°ã«ãŒããªãœãŒã¹ãžã®ãã¹ãããã³ã°ã«ãŒãèªäœãäžããæš©å©ã
ãŠãŒã¶ãŒãè¿œå ïŒ
#Create security_group $ADS_GROUP_TYPE_LOCAL_GROUP = -2147483644 $objOU = [ADSI] $GroupName = $objGroup = $objOU.Create(, + $GroupName) $objGroup.Put(, $ADS_GROUP_TYPE_LOCAL_GROUP ) $objGroup.Put(, $UNC ) $objGroup.Put(, $GroupName ) $objGroup.SetInfo() }}
ãªãœãŒã¹ã®æš©å©ã¯ãSMBã¢ã¯ã»ã¹èš±å¯ãšNTFSã«åããããŸãã ããã¯ãããããããã©ã«ããŒã¬ãã«ã§ã®ã¢ã¯ã»ã¹ãšãã¡ã€ã«ã·ã¹ãã ã¬ãã«ã§ã®ã¢ã¯ã»ã¹ã§ãã å®éããããã¯ç¬ç«ããŠããŸãã FATã䜿çšããå ŽåãSMBæš©éã®ã¿ãåŠçããå¿
èŠããããŸãã ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã¯ãæçµçã«SMB + NTFSã¢ã¯ã»ã¹èš±å¯ã®åèšã§æ§æãããŸãã
ãªãœãŒã¹ã«å¯Ÿããæš©å©ãšã®æ··åãé¿ãããããNTFSã®æš©å©ã®ã¿ã§éå¶ããŠããŸãã SMBã®æš©å©ã§ã¯ããã¹ãŠã®ãŠãŒã¶ãŒã«äžè¬çãªã¢ã¯ã»ã¹ãèšå®ããŸãã çè«ãæãåºããŠãã ããïŒ
ã·ã¹ãã å
ã®åãŠãŒã¶ãŒã¯ãç¹å®ã®ãã°ã€ã³ã»ãã·ã§ã³ã®ã»ãã¥ãªãã£æ
å ±ãå«ãã¢ã¯ã»ã¹ããŒã¯ã³ãæã£ãŠããŸãã ã·ã¹ãã èªäœã¯ããã°ã€ã³æã«ã¢ã¯ã»ã¹ããŒã¯ã³ãäœæããŸãã ãŠãŒã¶ãŒã«ä»£ãã£ãŠå®è¡ãããåããã»ã¹ã«ã¯ããã®ã¢ã¯ã»ã¹ããŒã¯ã³ã®ã³ããŒããããŸãã ããŒã¯ã³ã¯ããŠãŒã¶ãŒããŠãŒã¶ãŒã°ã«ãŒããããã³ç¹æš©ãèå¥ããŸãã ããŒã¯ã³ã«ã¯ãçŸåšã®ãã°ã€ã³ã»ãã·ã§ã³ãèå¥ãããã°ã€ã³SIDïŒã»ãã¥ãªãã£èå¥åïŒãå«ãŸããŠããŸãã ãŠãŒã¶ãŒãä¿è·ããããªããžã§ã¯ãã«ã¢ã¯ã»ã¹ããããšãããšãã·ã¹ãã ã§èªèšŒãè¡ããããã®çµæããŠãŒã¶ãŒã¯ã¢ã¯ã»ã¹èš±å¯ãŸãã¯ã¢ã¯ã»ã¹æåŠãåãåããŸãã ãã®å Žåãæ¿èªã¯ACLïŒã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ãïŒã®æ€çŽ¢ã«åºã¥ããŠããŸãã
ãªããžã§ã¯ãACLã®åãšã³ããªïŒãŸãã¯ACE-Access Control EntryïŒã¯ãã¢ã¯ã»ã¹æš©ãå®çŸ©ããŸãã ãšã³ããªã«ã¯3ã€ã®èŠçŽ ãå«ãŸããŸãã
- SID-ãšã³ããªãé©çšããããŠãŒã¶ãŒãŸãã¯ã°ã«ãŒãã®èå¥åã
- ã¢ã¯ã»ã¹ã®çš®é¡-èªã¿åããæžã蟌ã¿ãªã©
- ã¬ã³ãŒãã¿ã€ã-èš±å¯ãŸãã¯æåŠã
ãªããžã§ã¯ãã®ææè
ããªããžã§ã¯ãACLã«ãšã³ããªãäœæããŠããªãå Žåãã·ã¹ãã ã¯ããã«ã¢ã¯ã»ã¹ãæäŸããŸãã ãããã£ãŠãã¢ã¯ã»ã¹ããŒã¯ã³ã®ãã¹ãŠã®SIDãšã³ããªãæ¯èŒãããŸãã ãšã³ããªã®é åºãéèŠã§ãã
èŠæ±ãããã¢ã¯ã»ã¹ãæ瀺çã«èš±å¯ãŸãã¯æåŠããããšãã·ã¹ãã ã¯ACEãšã³ããªã®ãã§ãã¯ãåæ¢ããŸãã ããšãã°ãæ瀺çãªã¢ã¯ã»ã¹æåŠã¯ã芪ãã£ã¬ã¯ããªããç¶æ¿ãããã¢ã¯ã»ã¹èš±å¯ãããåªå
ãããŸãã 2çªç®ã¯ã芪ãã£ã¬ã¯ããªããèš±å¯ãç¶æ¿ãããã£ã¬ã¯ããªããªãŒã®ãã¹ãŠã®èš±å¯ã§ãã ãŸãããªããžã§ã¯ãã®ææè
ããªããžã§ã¯ãã«å¯Ÿããç¬èªã®æš©éã決å®ã§ããããšãæå³ããŸããããã«ããããŠãŒã¶ãŒã®ã°ã«ãŒããžã®ã¢ã¯ã»ã¹ãèš±å¯ãããã°ã«ãŒãã®ãµãã°ã«ãŒããžã®ã¢ã¯ã»ã¹ãæåŠãããŸãã ãªããžã§ã¯ãã®ç¶æ¿ãã©ã¡ãŒã¿ãŒã¯æ¬¡ã®å€ãåãããšãã§ããŸãã
äŸ¡å€ | 説æ |
---|
ããªãããããªãã | æš©å©ã¯ãã®ãã©ã«ãã«ã®ã¿é©çšãããŸãã |
ContainerInheritããªã | ãã®ãã©ã«ããŒãšãã®ãµããã©ã«ããŒã«æš©å©ãé©çšãããŸã |
ObjectInheritããªã | ãã®ãã©ã«ããŒãšãã®ãã¡ã€ã«ã«ã¯æš©å©ãé©çšãããŸãã |
ãContainerInheritãObjectInheritããããªãã | ãã®ãã©ã«ããŒã®ãµããã©ã«ããŒãšãã¡ã€ã«ã®æš©å©ãé©çšãããŸãã |
ContainerInheritãInheritOnly | æš©å©ã¯ãµããã©ã«ããŒã«ã®ã¿é©çšãããŸãã |
ObjectInheritãInheritOnly | æš©éã¯ãã¡ã€ã«ã«ã®ã¿é©çšãããŸãã |
ãContainerInheritãObjectInheritãããInheritOnlyã | æš©éã¯ãµããã©ã«ããŒãšãã¡ã€ã«ã«ã®ã¿é©çšãããŸãã |
ãã¹ãã§ã¯ã次ã®ã¹ããããå®è¡ãããåã«ãã°ã«ãŒãããã¡ã€ã³å
ã«åžžã«äœæããããšã¯éããªãããšãæããã«ãªããŸããã ãŸã 確èªããŠããªãã®ã§ã5ç§ã®ååãªäŒæ¢æéãèšå®ããŠãã ããã 次ã«ããã£ã¬ã¯ããªACLãååŸããŸãã ACLã¢ã¯ã»ã¹ãªã¹ãã«æ°ãããšã³ããªãäœæããŠä¿åããŸãã
start-sleep 5 $dirpath=$path+$share_name $acl = get-acl $dirpath $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$share_name","ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.SetAccessRuleProtection($True, $True) $acl.AddAccessRule($rule) Set-Acl $dirpath $acl
2çªç®ã®ã°ã«ãŒãã管çè
ãç°ãªãã¢ã¯ã»ã¹æš©ã§åãããšãç¹°ãè¿ããŸãã
start-sleep 5 #$objOU = [ADSI]"LDAP://OU=Groups,OU=MPC,OU=E182,DC=emea,DC=corpdir,DC=net" $GroupName = "$share_name"+"_ADM" $objGroup = $objOU.Create("group", "CN=" + $GroupName) $objGroup.Put("groupType", $ADS_GROUP_TYPE_LOCAL_GROUP ) $objGroup.Put("description", $UNC ) $objGroup.Put("sAMAccountName", $GroupName ) $objGroup.SetInfo() start-sleep 20 $dirpath=$path+$share_name $acl = get-acl $dirpath $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$GroupName","Modify", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.SetAccessRuleProtection($True, $True) $acl.AddAccessRule($rule) Set-Acl $dirpath $acl Write-Host " $share_name created"
åã«ãã£ã¬ã¯ããªããå
±æãããã ãã§ãã
$dirpath=$path+"\$sharename" $Shares=[WMICLASS]âWIN32_Shareâ If (!(GET-WMIOBJECT Win32_Share -filter âname='$share_name'â) { $Shares.Create(â$dirpathâ,â$share_nameâ,0) }
ãããã«PowerShellã«ã¯ãè¿œå ã®äŸ¿å©ãªActive Directoryã¢ãžã¥ãŒã«ãšãã¡ã€ã«ã·ã¹ãã ã»ãã¥ãªãã£PowerShellã¢ãžã¥ãŒã«ããããŸãã éåžžã®ç®¡çè
ã¯ãPowerShellã§æš©éãå²ãåœãŠãéã«ãªããžã§ã¯ãã¯ã©ã¹ã®ãžã£ã³ã°ã«ããããããšããèããªããããããŸãããããããªããšã管çè
ã§ã¯ãªãããã°ã©ããŒã«ãªããŸãã ADã¢ãžã¥ãŒã«ã䜿çšããããŒã«ã«ã°ã«ãŒãã®ãªã¹ãã¯ãããšãã°æ¬¡ã®ããã«ããŠååŸã§ããŸãã
get-qadgroup -GroupScope DomainLocal | Get-QADGroupMember -Type group | Where{$_.GroupScope -eq "Local"}
äžæ¹ãADSIã®äœ¿çšã¯ãããæ®éçãªã¢ãããŒãã§ãã ã¡ãªã¿ã«ãWindows XPããæåŠããããšãçŽåŸãããããªãä¿å®çãªé¡§å®¢ãå€æ°ããŸãã
ãã®å ŽåããããŠãŒã¶ãŒã®ãã¹ãŠã®æš©éãå¥ã®ãŠãŒã¶ãŒã«è€è£œããã«ã¯ãã³ãã³ãã©ã€ã³ããæšæºãŠãŒãã£ãªãã£ã䜿çšããŸãã
dsquery user -samid Person |dsget user -memberof |dsmod group -addmbr "CN=Some Other Person(222),OU=Users,OU=_GlobalResources,OU=222,OU=E777,DC=emea,DC=corpdir,DC=net" âc
è¯ãèªååïŒ