
ãã®ãããç§åŠçãªçªé²ã®æ¹æ³ãæ°äººã®è³¢ã人ãæ°æéã®èªç±æéã䜿çšããŠãåã®ç®¡çè ãäœæãããã¡ã€ã³ãSAMBAããActiveDirectoryã«ç§»è¡ããæ¹æ³ã«ã€ããŠèª¬æãããšããããŸããã
å€ãã®äººãSAMBAããã¡ã€ã³ãšããŠäœ¿çšããæ©äŒãç¥ã£ãŠããã䜿çšããŠããŸãããç§ã®æèŠã§ã¯ãããã¯å®éšå°ãšããŠã®ã¿äœ¿çšã§ããå®éã«ã¯äœ¿çšããªãæ¹ãè¯ããšèããŠããŸãã ããã¯èª°ããèªåèªèº«ã§æ±ºå®ããŸããã°ã«ãŒãããªã·ãŒã®æ¬ åŠãèš±å¯ã®çµ¶ãéãªãããªãŒãºãé »ç¹ãªããªãŒãºãä¿¡ããããªãã»ã©ã®ã¡ã¢ãªãªãŒã¯ïŒ30æ¥éã®é£ç¶æäœã®åŸãæã 16 GBã®RAMããã¹ãŠæ¶è²»ãããã¹ã¯ããã»ã¯ã·ã§ã³å šäœã䜿çšãããŸãïŒã«ã¯æºè¶³ããŠããŸããã§ããã ãããã£ãŠãç§ã®å¿èã¯çµãããæèãéããŠä»®æ³ç°å¢ã§ã®ç§»è¡ããšãã¥ã¬ãŒãããããšæ°åè©Šã¿ãŸããããã·ããªã¢ã®ãµããµãããåç©ãæ¥ãŠäœããã®æªç¥ã®çç±ã§æ§é å šäœãšãã€ã³ã9ãå®å šã«éº»çºããããŸã§æéããããŸããã§ãã70人ã®äºåã ãããç·æ¥ç§»è¡ã®æãæ¥ãå Žæã§ãããããŸããŸãªããã¥ã¢ã«ãèªãã 2æ¥éãActiveDirectoryã«é£ã¶2æ¥éã¯ã ãã®èšäºã«åºäŒã£ãŠTechNetã« æ²èŒããããŸã§äœãããŸããã§ããã
ãã¡ã€ã³ã®åœ¹å²ãå€æŽããããšãããã€ãŸã Linuxãã¡ã€ã³ã«Windows Serverãå ¥åããŠããã¯ã¢ããã³ã³ãããŒã©ãŒã«ãããã®åœ¹å²ãpdcã«ã¢ããã°ã¬ãŒãããŸãããä»®æ³ç°å¢ã§1ã€ã®ãã¹ãã瀺ããããã«ãããã¯æªãèãã§ããã ãã¹ãŠã®GPOã°ãªããã転éãããïŒåã«ååšããªãã£ãïŒã ãã§ãªãããã®ä»ã®èª€è§£ãããå¯èœæ§ããããŸãã
ç§ã¯ãŸã ãã¹ãŠãã·ã³ã°ã«ã¯ãªãã¯ã«æžããããšãã§ããªãã£ãããã Active PerlïŒx86ïŒ ãMicrosoft Office ExcelïŒ2003ããã³2007çšïŒãBatchãVBSãããã³newsidãŠãŒãã£ãªãã£ïŒ ãµã€ãã§æ£åžžã«åé€ãããŸãã ïŒã䜿çšãããã¢ããªã³ã¢ãžã¥ãŒã«acctinfo ã
ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ã¯ãŒã¯ã¹ããŒã·ã§ã³äžã®Windowsç°å¢ã§å®è¡ããã次ã«Windows ServerïŒããã§ã¯Windows Serverãäœããã®çç±ã§2003 R2 SP2ã§ãã£ãããšãæ確ã«ãããã®ã§ãææ°ã®ã·ã¹ãã ã§ã®äœæ¥ã¯ãã¹ããããŠããŸããïŒã1ã€ã®ãã¥ã¢ã³ã¹ãWindows ServerããããŸã移è¡ã®é²è¡äžã¯ãMUIã䜿çšããã«è±èªçã䜿çšããããšããå§ãããŸãã移è¡ã劚ãããã®ã¯äœããããŸããã
ããã§ãååãªæ°Žãããã»ã¹èªäœã«åãæãããŸãããã
ãããªãäœæ¥ã®åã«ãã·ã¹ãã ã®ã€ã³ã¹ããŒã«ãéå§ã§ããŸãããã·ã¹ãã å ã§äœãæ§æããã³äœæããããšãªãïŒãŠãŒã¶ãŒãäœæãããŸã§ãã©ã€ããŒãã€ã³ã¹ããŒã«ããŸããã§ããïŒã
éå§ããæ¥ããã¹ãŠã®ãŠãŒã¶ãŒãšã°ã«ãŒãã®ãªã¹ããååŸããå¿ èŠããããŸãïŒåé¡ãããããã¹ãŠã®ãŠãŒã¶ãŒãæå±ããã°ã«ãŒãã§ãšã¯ã¹ããŒããããããã§ã¯ãªãããã確èªããå¿ èŠããããŸãïŒããã®ããã ããã§èŠã€ãã£ãvbsã¹ã¯ãªããã䜿çšããŸãã ãããæ確ã§å¿ èŠãªãã©ã¡ãŒã¿ãŒãååŸããããã«å€æŽããŸãïŒããã¯ããã¡ã€ã³å ã®ãã¡ã€ã³ã¢ã«ãŠã³ãã®äžã«ããPCã§è¡ãå¿ èŠãããããšã«ãèšåãã䟡å€ããããŸããã°ããŒãã«ãã¡ã€ã³ç®¡çè ã®ã¢ã«ãŠã³ãã®äžã§è¡ããŸããïŒã
AD User Accounts.vbsããšã¯ã¹ããŒãããŸã
On Error Resume Next strFileName = "Users-Groups-SIDs.xlsx" Set objShell = CreateObject("Wscript.Shell") strPath = Wscript.ScriptFullName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(strPath) strFolder = objFSO.GetParentFolderName(objFile) SET objExcelApp = CREATEOBJECT("Excel.Application") SET objWB = objExcelApp.Workbooks.Add SET objExcel = objWB.Worksheets(1) objWB.SaveAs(strFolder & "\" & strFileName) Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 'Set the path of the file to the same folder of the script 'Open the file and make the workbook visible Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open(strFolder & "\" & strFileName) objExcel.Visible = True 'objExcel.Cells(1, 1).Value = "Name" 'objExcel.Cells(1, 1).Font.Bold = TRUE 'objExcel.Columns(1).ColumnWidth = 40 'objExcel.Cells(1, 2).Value = "Security ID" 'objExcel.Cells(1, 2).Font.Bold = TRUE 'objExcel.Columns(2).ColumnWidth = 60 'Starting row of the Excel is 2, since first row are column headings y = 2 objCommand.CommandText = _ "SELECT * FROM 'LDAP://DC=mvi,DC=srv' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strADsPathUser = objRecordSet.Fields("ADsPath").Value 'wScript.echo strADsPathUser Set objUser = GetObject(strADsPathUser) z = 1 objExcel.Cells(y,z) = objUser.sn objExcel.Cells(1, z).Value = "sn" 'Wscript.Echo objUser.sn objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.givenName objExcel.Cells(1, z).Value = "givenName" 'Wscript.Echo objUser.givenName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.initials objExcel.Cells(1, z).Value = "initials" 'Wscript.Echo objUser.initials objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.description objExcel.Cells(1, z).Value = "description" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.description z = z + 1 objExcel.Cells(y,z) = objUser.codePage objExcel.Cells(1, z).Value = "codePage" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.codePage z = z + 1 objExcel.Cells(y,z) = objUser.sAMAccountName objExcel.Cells(1, z).Value = "sAMAccountName" 'Wscript.Echo objUser.sAMAccountName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.codePage objExcel.Cells(1, z).Value = "codePage" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.codePage z = z + 1 objExcel.Cells(y,z) = objUser.mail objExcel.Cells(1, z).Value = "mail" 'Wscript.Echo objUser.mail objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 intUserSID = fnGet_HexString(objUser.ObjectSID) objExcel.Cells(y,z) = intUserSID objExcel.Cells(1, z).Value = "ObjectSID" 'Wscript.Echo objUser.ObjectSID objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.userPrincipalName objExcel.Cells(1, z).Value = "userPrincipalName" 'Wscript.Echo objUser.userPrincipalName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.displayName objExcel.Cells(1, z).Value = "displayName" 'Wscript.Echo objUser.displayName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.distinguishedName objExcel.Cells(1, z).Value = "distinguishedName" 'Wscript.Echo objUser.distinguishedName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 intUserSID = stringlist(objUser.memberOf) objExcel.Cells(y,z) = intUserSID objExcel.Cells(1, z).Value = "memberOf" 'Wscript.Echo objUser.memberOf objExcel.Cells(1, z).Font.Bold = TRUE ' z = z + 1 objExcel.Cells(y,z) = objUser.physicalDeliveryOfficeName objExcel.Cells(1, z).Value = "physicalDeliveryOfficeName" 'Wscript.Echo objUser.physicalDeliveryOfficeName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.telephoneNumber objExcel.Cells(1, z).Value = "telephoneNumber" 'Wscript.Echo objUser.telephoneNumber objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.profilePath objExcel.Cells(1, z).Value = "profilePath" 'Wscript.Echo objUser.profilePath objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.scriptPath objExcel.Cells(1, z).Value = "scriptPath" 'Wscript.Echo objUser.scriptPath objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homeDirectory objExcel.Cells(1, z).Value = "homeDirectory" 'Wscript.Echo objUser.homeDirectory objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homeDrive objExcel.Cells(1, z).Value = "homeDrive" 'Wscript.Echo objUser.homeDrive objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.title objExcel.Cells(1, z).Value = "title" 'Wscript.Echo objUser.title objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.department objExcel.Cells(1, z).Value = "department" 'Wscript.Echo objUser.department objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.company objExcel.Cells(1, z).Value = "company" 'Wscript.Echo objUser.company objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.manager objExcel.Cells(1, z).Value = "manager" 'Wscript.Echo objUser.manager objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homePhone objExcel.Cells(1, z).Value = "homePhone" 'Wscript.Echo objUser.homePhone objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.pager objExcel.Cells(1, z).Value = "pager" 'Wscript.Echo objUser.pager objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.mobile objExcel.Cells(1, z).Value = "mobile" 'Wscript.Echo objUser.mobile objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.facsimileTelephoneNumber objExcel.Cells(1, z).Value = "facsimileTelephoneNumber" 'Wscript.Echo objUser.facsimileTelephoneNumber objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.ipphone objExcel.Cells(1, z).Value = "ipphone" 'Wscript.Echo objUser.ipphone objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.info objExcel.Cells(1, z).Value = "info" 'Wscript.Echo objUser.info objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.streetAddress objExcel.Cells(1, z).Value = "streetAddress" 'Wscript.Echo objUser.streetAddress objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.postOfficeBox objExcel.Cells(1, z).Value = "postOfficeBox" 'Wscript.Echo objUser.postOfficeBox objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.l objExcel.Cells(1, z).Value = "l" 'Wscript.Echo objUser.l objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.st objExcel.Cells(1, z).Value = "st" 'Wscript.Echo objUser.st objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.c objExcel.Cells(1, z).Value = "c" 'Wscript.Echo objUser.c objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.wWWHomePage objExcel.Cells(1, z).Value = "wWWHomePage" 'Wscript.Echo objUser.wWWHomePage objExcel.Cells(1, z).Font.Bold = TRUE ''''''''''''''''''''''''''' y = y + 1 objRecordSet.MoveNext Loop objCommand.CommandText = _ "SELECT * FROM 'LDAP://DC=mvi,DC=srv' WHERE objectCategory='group'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strADsPathGroup = objRecordSet.Fields("ADsPath").Value 'wScript.echo strADsPathGroup Set objGroup = GetObject(strADsPathGroup) 'if objGroup.groupType = "-2147483646" then objExcel.Cells(y,1) = objGroup.sAMAccountName 'Wscript.Echo objUser.sAMAccountName intGroupSID = fnGet_HexString(objGroup.ObjectSID) objExcel.Cells(y,2) = intGroupSID 'Wscript.Echo intUserSID 'End if y = y + 1 objRecordSet.MoveNext Loop objRecordSet.Close objConnection.Close SET objSheet = NOTHING SET objWB = NOTHING objExcelApp.Quit() SET objExcelApp = NOTHING Wscript.echo "Script Finished..." ''' Function stringlist(memberOf) Dim objmemberOf ' Heart of the script, extract a list of Groups from memberOf objmemberOf = objUser.GetEx("memberOf") For Each objGroup in objmemberOf strList = strList & """" & objGroup & """" & " " Next stringlist = strUser & strList 'WScript.Echo "Groups for " & strUser & strList End Function ''' Function fnGet_HexString(intSID) Dim strRet, i, b strRet = "" For i = 0 to Ubound(intSID) b = hex(ascb(midb(intSID,i+1,1))) If( len(b) = 1 ) then b = "0" & b strRet = strRet & b Next fnGet_HexString = fnHexStrToDecStr(strRet) End Function Function fnHexStrToDecStr(strSid) Dim arrbytSid, lngTemp, j ReDim arrbytSid(Len(strSid)/2 - 1) For j = 0 To UBound(arrbytSid) arrbytSid(j) = CInt("&H" & Mid(strSid, 2*j + 1, 2)) Next fnHexStrToDecStr = "S-" & arrbytSid(0) & "-" & arrbytSid(1) & "-" & arrbytSid(8) lngTemp = arrbytSid(15) lngTemp = lngTemp * 256 + arrbytSid(14) lngTemp = lngTemp * 256 + arrbytSid(13) lngTemp = lngTemp * 256 + arrbytSid(12) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(19) lngTemp = lngTemp * 256 + arrbytSid(18) lngTemp = lngTemp * 256 + arrbytSid(17) lngTemp = lngTemp * 256 + arrbytSid(16) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(23) lngTemp = lngTemp * 256 + arrbytSid(22) lngTemp = lngTemp * 256 + arrbytSid(21) lngTemp = lngTemp * 256 + arrbytSid(20) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(25) lngTemp = lngTemp * 256 + arrbytSid(24) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) End Function
èµ·åãããšãOffice ExcelãŠã£ã³ããŠãéãããã¡ã€ã«Users-Groups-SIDs.xlsxãéã ãããŒã¿ã1è¡ãã€æžã蟌ãŸããŸãïŒããŠã¹ã«è§Šããªãããšããå§ãããŸããäœæ¥ãå®äºãããŸã§ã¯ãªãã¯ããªãã§ãã ãããããããªããšãããŒã¿ã®åä¿¡äžã«ãšã©ãŒãçºçããå¯èœæ§ããããŸãïŒã ã¹ã¯ãªãããçµäºããåŸã ã¹ã¯ãªããå®äº...ãšããéç¥ãåãåããŸããããã¯å®äºãæå³ããŸããã¹ã¯ãªãããããŒãã«ã解æŸãããŸã§æ°ç§åŸ ã¡ãŸãããªãã£ã¹ããããŒãã«ãæžã蟌ã¿å¯èœã§ãããšããéç¥ãåãåããåæããŠãä¿åããã¿ã³ãã¯ãªãã¯ããŸãã åºåã§ã¯ãåãããããŒãã«ç»é¢ããŒãã«ãåŸãããŸããã givenName; ã€ãã·ã£ã«; 説æ; codePage; sAMAccountName; codePage; ã¡ãŒã« ObjectSID userPrincipalName; displayName; distinguishedName; memberOf; physicalDeliveryOfficeName; telephoneNumber; profilePath; scriptPath; homeDirectory; homeDrive ã¿ã€ãã«; éšé; äŒç€Ÿ; ãããŒãžã£ãŒ; homePhone; ãã±ãããã« ã¢ãã€ã« faxTelephoneNumber; ipphone; æ å ±; streetAddress; postOfficeBox; l; st; c; wWWHomePage
ãããã®ã»ãšãã©ã¯å¿ èŠãããŸããïŒäžèŠãªãã©ã¡ãŒã¿ãåé€ããããšã§ã¹ã¯ãªããèªäœã§ä¿®æ£ã§ããŸãããåããŠãã¹ãŠãèš±å¯ããŸãïŒã
ååŸããå€ããã sAMAccountName åãšObjectSIDåãå¿ èŠã«ãªãã ObjectSIDãæé ïŒAããZïŒã«äžŠã¹æ¿ããããããã³ããŒããŠusers.txtããã¹ããã¡ã€ã«ã«ä¿åããå€èŠ³ãå°ãå€æŽããŠã次ã®ããã«åŠç¿ããå¿ èŠããããŸãïŒ sAMAccountNameãObjectSID
ã€ãŸã ãã®ããã«ïŒ
dns-gw-sult,S-1-5-21-833212901-2941102506-3986841923-1101 DnsAdmins,S-1-5-21-833212901-2941102506-3986841923-1102 IIS_IUSRS,S-1-5-21-833212901-2941102506-3986841923-1102 DnsUpdateProxy,S-1-5-21-833212901-2941102506-3986841923-1103 ivanov,S-1-5-21-833212901-2941102506-3986841923-1105 ozonov,S-1-5-21-833212901-2941102506-3986841923-1108 elina,S-1-5-21-833212901-2941102506-3986841923-1111 anna,S-1-5-21-833212901-2941102506-3986841923-1113 dash,S-1-5-21-833212901-2941102506-3986841923-1115 denis,S-1-5-21-833212901-2941102506-3986841923-1116 danuev,S-1-5-21-833212901-2941102506-3986841923-1119
ã芧ã®ãšãããåã¬ã³ãŒãã¯å¥ã ã®è¡ã«ãããæåŸã®æ°åã¯é çªã«äžŠãã§ããŸãããééããããŸããïŒsambaã¯ç°ãªãRIDã§LDAPã«ãŠãŒã¶ãŒãæžã蟌ãã ããïŒã€ãŸããæ°åãé çªã«äžŠãã§ããããïŒãADã¯è¡ã«ãŠãŒã¶ãŒãäœæããŸããç¹å®ã®RIDããå§ããŠãæ¬ èœããŠãããã¹ãŠã®ãŠãŒã¶ãŒãäœæããå€å°ãªããšãæ確ã«ããããåŒã³åºãå¿ èŠããããŸãïŒãããã§ã¯perlã¹ã¯ãªããscript-add user.plã䜿çšããŠããããåããŸãïŒ
script-add user.pl
use strict; use warnings; use Data::Dumper; my (%input, %output,$max); my $input_file = "users.txt"; my $output_file = "output.txt"; my $sambaSID = "S-1-5-21-833212901-2941102506-3986841923-"; open FIN, "<$input_file"; while (<FIN>) { chomp(); if (/(.*),$sambaSID(.*)/) { $input{$2}=$1; $max=$2 if $2 > $max; } } close FIN; print Dumper(\%input); print Dumper($max); open FOUT, ">$output_file"; for (my $i=1001;$i<=$max;$i++) { if (exists $input{$i}) { print "input: $input{$i} i: $i\n"; print FOUT "$input{$i}\n"; } else { print FOUT "user$i\n"; } } close FOUT;
å ã®èšäºã§ã¯ããŸãå¹æããªãã®ã§ãå人ã«ãšã©ãŒã®ä¿®æ£ãäŸé ŒããŸãããå°ãªããšãã¹ã¯ãªããã¯èšç»ã©ããã«æ©èœããŸããã
åºåã§ã¯ã次ã®å 容ã®ãã¡ã€ã«output.txt ïŒãŠãŒã¶ãŒã¯RID 1001以éã§å§ãŸããååã¯user1001ãªã©ïŒãååŸããŸããã
output.txt
user1001 user1002 user1003 user1004 user1005 user1006 user1007 user1008 user1009 user1010 user1011 user1012 user1013 user1014 user1015 user1016 user1017 user1018 user1019 user1020 user1021 user1022 user1023 user1024 user1025 user1026 user1027 user1028 user1029 user1030 user1031 user1032 user1033 user1034 user1035 user1036 user1037 user1038 user1039 user1040 user1041 user1042 user1043 user1044 user1045 user1046 user1047 user1048 user1049 user1050 user1051 user1052 user1053 user1054 user1055 user1056 user1057 user1058 user1059 user1060 user1061 user1062 user1063 user1064 user1065 user1066 user1067 user1068 user1069 user1070 user1071 user1072 user1073 user1074 user1075 user1076 user1077 user1078 user1079 user1080 user1081 user1082 user1083 user1084 user1085 user1086 user1087 user1088 user1089 user1090 user1091 user1092 user1093 user1094 user1095 user1096 user1097 user1098 user1099 user1100 dns-gw-sult IIS_IUSRS DnsUpdateProxy user1104 ivanov user1106 user1107 ozonov user1109 user1110 elina user1112 anna user1114 dash denis user1117 user1118 danuev
çµæã®ãªã¹ããdsadd-new.xlsããŒãã«ã«å ¥ããããŒãºã«åãããŠå°ãå€æŽããå¿ èŠããããŸããã [ ãã°ã€ã³ ]åã«å€æŽããããŒãã«ãé 眮ããŸãã SIDåã®ãŠãŒã¶ãŒã®åæSIDãããã³user-1101ã« S-1-5-21-833212901-2941102506-3986841923-1101ãå¿ èŠã§ããããšã確èªããŸã user-1102ã« S-1-5-21-833212901-2941102506-3986841923ããããŸã-1102 ïŒäœæ¥ã®ããžãã¯ã¯ç解ã§ãããšæããŸãããæ¢ç¥ã®ãŠãŒã¶ãŒã®SIDã¯ä»¥åãšåããŸãŸã«ããŠããå¿ èŠããããŸãããã¡ã€ã«Users-Groups-SIDs.xlsxã«ãããŸã ïŒã ãŠãŒã¶ãŒã以å䜿çšããŠããã°ã«ãŒãã«é 眮ããã«ã¯ããã®ããã«Users-Groups-SIDs.xlsx ãã¡ã€ã«ããmemberOfåãååŸãã GROUPåã®dsadd-new.xlsãã¡ã€ã«ã«åãŠãŒã¶ãŒãé 眮ããå¿ èŠããããŸãã ãŸããå¿ èŠã«å¿ããŠä»ã®ãã¹ãŠã®ãã£ãŒã«ãã«å ¥åããå¿ èŠããããŸãããå§ãšåã®åãã¯ãªãã¯ããããã«ããŠãã ãã ã ããããªããšãäœæã³ãã³ãã®äœæãäžæ£ç¢ºã«ãªããŸãã ãã°ã€ã³ã®å€æŽã«æºè¶³ã§ããªãå Žåããã³ãã¬ãŒããå€æŽããããå¿ èŠãªãã°ã€ã³ãèªåã§èšè¿°ããå Žåã ãã°ã€ã³åã¯ãã¡ã€ã³ã«å ¥ãããã®ãŠãŒã¶ãŒåãèªåçã«çæããŸãïŒäžéšã®ãŠãŒã¶ãŒã¯å¥ã®ãã°ã€ã³ãæã£ãŠãããããå¿ èŠãªãã®ã«çœ®ãæããŸãïŒã
ãŸãã次ã®å Žåã«æ³šæãããããé¡ãããŸãã
-[ããã«ããŒã ]åã¯å ¥åãããŠããŸããããŠãŒã¶ãŒãäœæãããšãæåŸã«äœåãªã¹ããŒã¹ãè¿œå ãããäžéšã®ããã°ã©ã ã§åé¡ãçºçããå¯èœæ§ããããŸãã
-ã°ã«ãŒãã®èªåäœæãå®äºã§ããªãã£ããããOUãŠãŒã¶ãŒã§ã°ã«ãŒããäœæããæå·ã䜿çšããŠã°ã«ãŒããäœæããŸãããããã«ãããããŸããŸãªãµãŒãã¹ïŒApacheãOpenVPNãªã©ïŒã§äžéšã®èªèšŒãåäœããªããªãå¯èœæ§ããããŸãã OU-BuiltinãšOU-GroupsããããŸãããããããŸã§ã®ãšããããã¹ãŠãããŒãã«çœ®ãããšã«ããŸããã
add_group.cmd
rem (CN) CN Users rem dsadd group "cn=,cn=users,dc=mvi,dc=srv" for %%A in ( jira-users, jira-administrators, Developers, jira-developers, mvi-users, berry-dev, online-developers, marketing-users, Marketing, ne-users, ne-developers, ne-admin, marketing-administrators, online-users, bills,QA, ) do dsadd group "cn=%%A,cn=users,dc=mvi,dc=srv" rem (OU) rem dsadd group "cn=,cn=groups,dc=mvi,dc=srv" dsadd ou "ou=Groups,dc=mvi,dc=srv" for %%B in ( vpn-users, svn-users, jenkins-adm, jenkins, PHP_Developers, amazon-users, ) do dsadd group "cn=%%B,ou=groups,dc=mvi,dc=srv"
å®æçãªã³ããŒãšè²Œãä»ããšæ€èšŒæäœãå®è¡ããåŸãbatãã¡ã€ã«ãæºåããŠãã°ã«ãŒãã«è¿œå ãããŠãŒã¶ãŒãšããŒã ã®äœæã«åœ¹ç«ãŠãããšãã§ããŸãã ã°ã«ãŒãã®TOTALããã³TOTALã®åã«ã¯ããŠãŒã¶ãŒãäœæããããã®ã³ãã³ããšãããããã°ã«ãŒãã«ã³ã³ãã³ããè¿œå ããbatãã¡ã€ã«add_user.cmd ã add_group.cmdã«ä¿åããããã®ã³ãã³ãããããŸãã
ãŠãŒã¶ãŒãšã°ã«ãŒãã®åœ¢æã®æºåãã§ããŸããã
ããã§ã¯ãWindows Serverã«åãæãããŸãããã çŸæç¹ã§ã¯ãã·ã¹ãã ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã newsidãŠãŒãã£ãªãã£ãå¿ èŠã§ãã ãŠãŒã¶ãŒã®ãªã¹ãããSIDãååŸããŸããããã¯S-1-5-21-833212901-2941102506-3986841923 ïŒãŠãŒã¶ãŒã®åä¿¡SIDããã ã-ããŸã§ã®æåŸã®æåãåé€ãããã¡ã€ã³ã®SIDãååŸããŸãïŒã§ãã·ã¹ãã ã®çŸåšã®SIDãåœç€Ÿã®ãã®ã«çœ®ãæããŸãã ã·ã¹ãã ã¯å€æŽãéå§ããŠåèµ·åããŸãïŒåèµ·ååŸããŠãŒãã£ãªãã£ãå床å®è¡ããŠãSIDã®å€æŽã確èªã§ããŸãïŒã ããã ãã§ããActiveDirectoryãµãŒãã¹ãã€ã³ã¹ããŒã«ã§ããŸãïŒæ¹æ³ã¯ããããŸããããæåã«DNSãèšå®ãããã®èšå®ãã¹ããããã dcpromoã䜿çšããŠãã¡ã€ã³ãµãŒãã¹èªäœãæ§æããŸãïŒããã®åã«ã SAMBAãµãŒããŒããªãã«ããŠãã€ã³ããããããããã®ãµãŒãã¹ããªãã«ããå¿ èŠããããŸãã€ã³ã¿ãŒããããžã®ã²ãŒããŠã§ã€ã§ãããããããµãŒãã¹ããªãã«ããŠãã ããã å¥ã®ãã¡ã€ã³åãæå®ã§ãããã©ããã¯ããããŸããïŒäœã劚ããããŸããïŒããçŸåšã®ãã¡ã€ã³åãæ®ãå¿ èŠããããŸããã å¿ èŠãªèšå®ãè¡ããã·ã¹ãã ãåèµ·åããŸãïŒãã¹ãŠãéåžžã©ããã§ãïŒã ããã§ãã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŠacctinfoãªããžã§ã¯ãã®è¡šç€ºããããã£ãå±éããå¿ èŠããããŸãïŒããŠã³ããŒãå ã®äžã®ãªã³ã¯ã䜿çšããŠãã€ã³ã¹ããŒã«æ¹æ³ãèšèŒãããŠããŸãïŒ ãActiveDirectory ãŠãŒã¶ãŒãšã³ã³ãã¥ãŒã¿ãŒã¹ãããã€ã³ãå®è¡ããŸãã add_user.cmdã¹ã¯ãªããã®æåã®è¡ãã1人ã®ãŠãŒã¶ãŒãäœæããããšããŠããŸã
dsadd User "cn=user-1101 user-1101 ,cn=users,dc=mvi,dc=srv" -UPN dns-gw-sult@mvi.srv -samid dns-gw-sult -display "user-1101 user-1101 " -fn user-1101 -ln user-1101 -pwd "p6Jx3Xre" -mustchpwd yes -disabled no -pwdneverexpires yes
[ Active Directory-Users and Computers ]ã§ã[ Additional Account Info ]ã¿ãã®ããããã£ã«ããSIDã確èªããŸãã ãŠãŒã¶ãŒåãSIDã®æ«å°Ÿã«äžèŽããå Žåããã¹ãŠãæ£ãããä¿®æ£ããå¿ èŠã¯ãããŸããïŒSIDãäžèŽããªãå Žåã¯ã次ã®SIDãæã€ãŠãŒã¶ãŒã§éå§ããŸããã€ãŸããçŸåšã®SIDã«1ãè¿œå ããŸãïŒã ãã®æç¹ã§ã1人ã®ãŠãŒã¶ãŒã§é倧ãªå€±æãçºçããŸããã圌ã®SIDã«ã¯1105ãå«ãŸããŠããããŠãŒã¶ãŒã¯1106ããäœæãéå§ããŸããã ãã®èå¥åã¯ç¡å¹ã§ããã
ãŠãŒã¶ãŒãäœæãããé åºã確èªããåŸã察å¿ããªããªã£ãã³ãã³ããåé€/ã³ã¡ã³ãåããŠãŠãŒã¶ãŒã®äœæã調æŽããå¿ èŠããããŸãã user-1107ãŸã§ã®ãã¹ãŠãåé€ãã add_user.cmdã¹ã¯ãªãããå®å šã«å®è¡ã§ããŸãã å®è¡åŸãã°ã«ãŒããäœæããå¿ èŠããããŸããããããªããšãäœãæ©èœããŸããã add_group.cmdãå®è¡ããŠããã¹ãŠã®ã°ã«ãŒããäœæãããŠãããã©ããã確èªããŸãïŒã°ããŒãã«ã»ãã¥ãªãã£ã°ã«ãŒããäœæãããŠããããšã«æ³šæããŠãã ãããä»ã®ã¿ã€ããå¿ èŠãªå Žåã¯ãã¹ã¯ãªããã«-scope {l | g | u}ãè¿œå ãã dsadd groupã®ããã¥ã¢ã«ãèªãã§ãã ããïŒã
dsaddã°ã«ãŒã/ïŒ
. . : dsadd group <GroupDN> [-secgrp {yes | no}] [-scope {l | g | u}] [-samid <SAMName>] [-desc <Description>] [-memberof <Group ...>] [-members <Member ...>] [{-s <Server> | -d <Domain>}] [-u <UserName>] [-p {<Password> | *}] [-q] [{-uc | -uco | -uci}] <DN_> stdin. (DN) . , (stdin). -secgrp {yes | no} , (yes) (no) . : yes. -scope {l | g | u} , (l), (g) (u). , . : . -samid <_SAM> SAM <_SAM> (, "operators"). -desc <> <>. -memberof <...> , DN <...>. -members <...> . <...>. {-s <> | -d <>} -s <> () <>. -d <> . : . -u <> <>. : . : , \ - (UPN). -p {<> | *} <>. *, . -q : . {-uc | -uco | -uci} -uc . -uco . -uci . . , (STDIN). STDIN , . STDIN , CTRL+Z (EOF). , (, "CN=Ivan Ivanov,CN=Users,DC=microsoft,DC=com"). , (, ). . : dsadd computer /? - . dsadd contact /? - . dsadd group /? - . dsadd ou /? - . dsadd user /? - . dsadd quota /? - . : dsadd /? - . dsget /? - . dsmod /? - . dsmove /? - . dsquery /? - , . dsrm /? - .
確èªåŸããŠãŒã¶ãŒãadd_user_group.cmdã°ã«ãŒãã«è¿œå ããã¹ã¯ãªãããå®è¡ããŸãïŒéããããå¯èœæ§ãããããšã«æ³šæããã°ã«ãŒããäœæãããå ŽæãšãŠãŒã¶ãŒãæå®ããå Žæã確èªããŸãïŒã
SAMBAã®ä»£ããã«ActiveDirectoryã䜿çšãããŠãŒã¶ãŒã¯åãèå¥åãæã¡ãã³ã³ãã¥ãŒã¿ãŒèªäœããã¡ã€ã³ã«å ¥åããã¿ã¹ã¯ãå®äºããŸããããããåå¥ã®ããã€ãã®ãã€ã³ããå®äºããã ãã§æžã¿ãŸãã
ç§ãæžããããã¹ãã¯ãéåžžãæ··oticãšãããæ··ããšããããšã©ãŒãããããäžæ£ç¢ºããªã©ãå«ãã§ããŸãã
ãã¹ãŠã®ã¹ã¯ãªããã1ãæã«ïŒäŸãšãšãã«ïŒã
PS
ãã®å Žåãcmdã¯OEMãšã³ã³ãŒãã䜿çšããŠä¿åããå¿ èŠãããããšãçãããèŠããŠããããšãé¡ã£ãŠããŸããïŒ
ä¿®æ£ã®ããã«ãšã©ãŒãå ±åããŠãã ããã
䜿çšææïŒ