พิจารณาความพิเศษของการมอบสิทธิ์การเข้าถึง Remote เพื่อนับรายการ Services ที่รันบนเซิร์ฟเวอร์จากระยะไกล ให้ Domain Users ที่ไม่มีสิทธิ์ Local Administrator ปัญหานี้ลดทอนเหลือการให้สิทธิ์การเชื่อมต่อ Remote ไปยัง Service Control Manager (SCManager)
ลักษณะปัญหา
เมื่อ User พยายามเชื่อมต่อและดูรายการ Services บน Remote Computer ผ่าน services.mc จะได้ Error:
Windows was unable to open service control manager database on computer_name
Error 5: Access is denied.
หรือใช้ sc.exe: sc \\lonts-01 query → [SC] OpenSCManager FAILED 5: Access is denied.
การเข้าถึงรายการ Services ควบคุมโดย Security Descriptor ของ SCM Database ซึ่งตั้งแต่ Windows 2003 SP1 จำกัด Remote Access ของ "Authenticated Users" แล้ว (สมเหตุสมผล) เฉพาะสมาชิก Local Administrators Group เท่านั้นที่มีสิทธิ์ Remote Access
วิธีแก้ไข
- ดู SCM Permissions ปัจจุบัน:
sc sdshow scmanagerได้ SDDL String เช่น:D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD) - คัดลอก String ไปแก้ใน Text Editor
- หา SID ของ User/Group ที่ต้องการให้สิทธิ์ (เช่น AD Group lon-hd):
Get-ADgroup -Identity lon-hd | select SID - คัดลอก Block
(A;;CCLCRPRC;;;IU)(IU = Interactive Users) แทนที่ IU ด้วย SID ที่ได้ วางไว้ก่อน S: - String ใหม่:
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;S-1-5-21-...)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD) - นำไปตั้งค่าใหม่:
sc sdset scmanager "D:(A;;CC;;;AU)..."→ ได้ [SC] SetServiceObjectSecurity SUCCESS
ตอนนี้ User Remote สามารถดูรายการ Services และ Status ได้จาก services.msc หรือ sc \\srv-name1 query แต่ไม่มีสิทธิ์จัดการ Services (Start/Stop) เพราะแต่ละ Service มี ACL ควบคุมแยกต่างหาก
Tip หากตั้งค่า SDDL ผิดพลาด ให้ลบ Registry Key HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\Security และรีสตาร์ทคอมพิวเตอร์ เพื่อ Reset สิทธิ์กลับค่าเริ่มต้น