ที่อยู่เดิม: http://www.iis.net/1026/SinglePageArticle.ashx
แปลโดย: Tony Qu (จากทีมแปล BluePrint)
ผู้แต่ง: Vikas Malhotra
อัปเดตล่าสุด: วันอังคารที่ 12 กันยายน 2549 เวลา 11:48 น.
บทนำ ใน IIS เวอร์ชันก่อนหน้านี้ มีบัญชีภายในเครื่องที่ถูกสร้างขึ้นระหว่างการติดตั้งที่เรียกว่า IUSR_MachineName เมื่อเปิดใช้งานการรับรองความถูกต้องโดยไม่ระบุชื่อแล้ว บัญชี IUSR_MachineName นี้จะเป็นข้อมูลประจำตัวที่ใช้โดย IIS เป็นค่าเริ่มต้น และใช้ในบริการทั้ง FTP และ HTTP นอกจากนี้ยังมีกลุ่มที่เรียกว่า IIS_WPG ซึ่งเป็นคอนเทนเนอร์สำหรับบัญชีพูลแอปพลิเคชันทั้งหมด ในระหว่างการติดตั้ง IIS คุณต้องตรวจสอบให้แน่ใจว่าทรัพยากรระบบที่มีอยู่ทั้งหมดได้รับการตั้งค่าด้วยสิทธิ์ที่เหมาะสมสำหรับ IIS_WPG เมื่อผู้ดูแลระบบสร้างบัญชีพูลแอปพลิเคชันใหม่ คุณจะต้องเพิ่มบัญชีใหม่ (ข้อมูลประจำตัว) ลงในกลุ่มนี้เท่านั้น
โมเดลนี้ทำงานได้ดีมาก แต่ก็เหมือนกับการออกแบบอื่นๆ ตรงที่มีข้อเสีย ข้อเสียเปรียบหลักคือบัญชี IUSR_MachineName และกลุ่ม IIS_WPG อยู่ในระบบที่ถูกสร้างขึ้น แต่ละบัญชีหรือกลุ่มใน Windows จะมีหมายเลขเฉพาะที่เรียกว่า SID (หมายเลขประจำตัวความปลอดภัย) เพื่อให้สามารถแยกความแตกต่างจากบัญชีหรือกลุ่มอื่นๆ ได้ เราใช้ SID เพื่อสร้าง ACL เท่านั้น เนื่องจากเป็นส่วนหนึ่งของการออกแบบ IIS เวอร์ชันก่อนหน้า เราได้รวม IUSR_MachineName ไว้ในไฟล์ metabase.xml หากคุณพยายามคัดลอก metabase.xml จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง มันจะไม่ทำงานทันทีเนื่องจากบัญชีเครื่องอื่นบนเครื่องใช้งานที่แตกต่างกัน ชื่อ นอกจากนี้ คุณไม่สามารถใช้ xcopy /o เพื่อคัดลอก ACL ได้ เนื่องจาก SID นั้นแตกต่างกันในเครื่องที่ต่างกัน วิธีแก้ปัญหาอย่างหนึ่งคือการใช้บัญชีโดเมน แต่คุณจะต้องเพิ่ม Active Directory ให้กับสคีมาของคุณ กลุ่ม IIS_WPG ก็มีปัญหาสิทธิ์เหมือนกัน หากคุณตั้งค่า ACL สำหรับกลุ่ม IIS_WPG บนระบบไฟล์ของเครื่องหนึ่ง การใช้ xcopy /o เพื่อคัดลอก ACL ไปยังเครื่องอื่นจะไม่สำเร็จ IIS เข้าใจปัญหานี้และได้รับการปรับปรุงโดยใช้บัญชีและกลุ่มที่มีอยู่แล้วภายในใน IIS 7.0
บัญชีและกลุ่มในตัวรับประกันโดยระบบปฏิบัติการ ซึ่งรับประกันว่า IIS ที่ไม่ซ้ำกันจะทำงานได้ดีกว่าและรับประกันว่าชื่อบัญชีและชื่อกลุ่มใหม่จะไม่ถูกแปลเป็นภาษาท้องถิ่น ตัวอย่างเช่น ไม่ว่าคุณจะติดตั้ง Windows เวอร์ชันภาษาใด ชื่อบัญชี IIS จะเป็น IUSR เสมอ และชื่อกลุ่มจะเป็น IIS_IUSRS เสมอ
โดยสรุป ใน IIS 7.0:
บัญชีภายใน IUSR แทนที่บัญชี IUSR_MachineName
กลุ่มที่มีอยู่แล้วภายใน IIS_IUSRS จะแทนที่กลุ่ม IIS_WPG
เนื่องจาก IUSR เป็นบัญชีที่มีอยู่แล้วภายใน จึงไม่จำเป็นต้องใช้รหัสผ่านอีกต่อไป ตามหลักเหตุผลแล้ว คุณสามารถคิดว่ามันเป็นบัญชี NETWORKSERVICE หรือ LOCALSERVICE บัญชี IUSR และกลุ่ม IIS_IURSS จะแนะนำเพิ่มเติมในบทต่อไปนี้
ทำความเข้าใจเกี่ยวกับบัญชี IUSR ใหม่ ตามที่กล่าวไว้ข้างต้น บัญชี IUSR จะแทนที่บัญชี IUSR_MachineName ใน IIS 7.0 บัญชี IUSR_MachineName จะถูกสร้างขึ้นและใช้เมื่อติดตั้งเซิร์ฟเวอร์ FTP เท่านั้น หากไม่ได้ติดตั้ง FTP บัญชีจะไม่ถูกสร้างขึ้น
บัญชีในตัวนี้ไม่ต้องใช้รหัสผ่าน และจะถูกใช้เป็นข้อมูลระบุตัวตนผู้ใช้เริ่มต้นเมื่อเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อ หากคุณดูไฟล์ applicationHost.config คุณจะพบคำจำกัดความต่อไปนี้:
<anonymousAuthentication เปิดใช้งาน = "true" userName = "IUSR" defaultLogonDomain = "" />
สิ่งนี้จะบอก IIS ให้ใช้บัญชีที่มีอยู่แล้วภายในใหม่สำหรับคำขอการรับรองความถูกต้องแบบไม่ระบุชื่อทั้งหมด ข้อได้เปรียบใหญ่ของการทำเช่นนี้คือตอนนี้เราทำได้แล้ว:
* ตั้งค่าการอนุญาตระบบไฟล์สำหรับ IUSR โดยใช้ Windows Explorer หรือเครื่องมือบรรทัดคำสั่งอื่น ๆ อีกมากมาย
* ไม่ต้องกังวลว่ารหัสผ่านของบัญชีนี้จะหมดอายุ
* ใช้ xcopy /o เพื่อคัดลอกไฟล์และความเป็นเจ้าของและข้อมูล ACL ไปยังเครื่องต่างๆ ได้อย่างราบรื่น
สิ่งสำคัญคือต้องบอกว่าบัญชี IUSR นั้นคล้ายกับบัญชี LOCALSERVICE มาก เนื่องจากทำงานโดยไม่เปิดเผยตัวตนบนเครือข่าย NETWORKSERVICE และ LOCALSYSTEM สามารถทำงานเป็นเครื่องจักรได้ แต่ IUSR ทำงานไม่ได้เนื่องจากเป็นการส่งเสริมการขายที่มีสิทธิพิเศษ หากคุณต้องการมีบัญชีที่ไม่ระบุชื่อพร้อมการเข้าถึงเครือข่าย คุณจะต้องสร้างบัญชีผู้ใช้ใหม่และตั้งชื่อผู้ใช้และรหัสผ่านด้วยตนเอง เช่นเดียวกับที่คุณตั้งค่าการตรวจสอบสิทธิ์แบบไม่ระบุชื่อก่อนหน้านี้ เพื่อให้บรรลุเป้าหมายนี้ใน IIS Manager คุณสามารถ:
* คลิกปุ่ม Start พิมพ์ "INetMgr.exe" แล้วกด Enter (หากกล่องข้อความปรากฏขึ้น ให้กด Continue เพื่อเพิ่มสิทธิ์)
* คลิกปุ่ม "+" ถัดจากชื่อเครื่องใน Connection
* ดับเบิลคลิกไซต์ที่คุณต้องการจัดการใน IIS Manager
* ดับเบิลคลิกรายการการรับรองความถูกต้องภายใต้หัวข้อชื่อคุณลักษณะ
* เลือก Anonymous Authentication คลิก แก้ไข ใต้ชื่องานทางด้านขวา จากนั้นกล่องโต้ตอบ Specify Credentials จะปรากฏขึ้น
* คลิกที่ตัวเลือกผู้ใช้เฉพาะแล้วกดปุ่ม "ตั้งค่า"
* ป้อนชื่อผู้ใช้และรหัสผ่านที่ต้องการ แล้วกดตกลง
เพื่อทำความเข้าใจกลุ่ม IIS_IUSRS ใหม่ ตามที่กล่าวไว้ข้างต้น กลุ่ม IIS_IUSRS ใช้เพื่อแทนที่กลุ่ม IIS_WPG อยู่แล้ว โดยมีสิทธิ์การเข้าถึงไฟล์และทรัพยากรระบบทั้งหมด ดังนั้นหากไฟล์ บัญชีถูกเพิ่มเข้าไปในกลุ่มและจะทำงานได้อย่างราบรื่นในฐานะข้อมูลประจำตัวของพูลแอปพลิเคชัน
เนื่องจากใช้งานได้กับบัญชีในตัว กลุ่มในตัวจึงสามารถแก้ไขปัญหาการปรับใช้ xcopy ได้หลายประการ หากคุณตั้งค่าการอนุญาตสำหรับ IIS_WPG บนไฟล์ (สามารถทำได้ใน IIS6) และพยายามคัดลอกไฟล์เหล่านั้นไปยังระบบ Windows อื่น การตั้งค่าไซต์อาจเสียหายเนื่องจากกลุ่ม SID แตกต่างกันในเครื่องอื่น
ใน IIS7 เนื่องจากกลุ่ม SID จะเหมือนกันในระบบ Longhorn ทั้งหมด การใช้ 'xcopy /o' จะรักษา ACL และข้อมูลการเป็นเจ้าของเมื่อคุณย้ายไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง ทำให้การปรับใช้ xcopy ง่ายขึ้นมาก!
คำขอที่สองจากลูกค้าคือ "เมื่อเรากำหนดค่าข้อมูลประจำตัวของพูลแอปพลิเคชันแล้ว เราต้องการให้ IIS ทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดให้เรา" เรายอมรับความคิดเห็นนี้และทำให้กระบวนการนี้ง่ายยิ่งขึ้นใน IIS7.0 เมื่อ IIS เริ่มกระบวนการของผู้ปฏิบัติงาน จะต้องสร้างโทเค็นเพื่อใช้โดยกระบวนการ ตอนนี้ เมื่อเราสร้างโทเค็นนี้ IIS จะเพิ่มความเป็นสมาชิก IIS_IUSRS ให้กับโทเค็นกระบวนการของผู้ปฏิบัติงานขณะรันไทม์โดยอัตโนมัติ ซึ่งจะทำให้บัญชีทำงานเป็นกลุ่มแอปพลิเคชันโดยไม่ต้องเป็นส่วนหนึ่งของกลุ่ม IIS_IUSRS อย่างชัดเจน เราเชื่อว่าการเปลี่ยนแปลงนี้จะช่วยให้คุณตั้งค่าระบบได้ง่ายขึ้น และทำให้ประสบการณ์โดยรวมของคุณดีขึ้น
หากคุณต้องการปิดใช้งานคุณลักษณะนี้ และเพิ่มบัญชีลงในกลุ่ม IIS_IUSRS ด้วยตนเอง คุณสามารถใช้คุณลักษณะนี้ได้โดยการตั้งค่า manualGroupMembership เป็นจริงเท่านั้น นี่คือตัวอย่างวิธีการตั้งค่า defaultAppPool เพื่อปิดใช้งานคุณลักษณะนี้:
<applicationPools>
<เพิ่มชื่อ = "DefaultAppPool">
<processModel manualGroupMembership="true" />
</เพิ่ม>
</applicationPools>