ডিফল্টভাবে, সাধারণ (নন-অ্যাডমিন) ব্যবহারকারীরা উইন্ডোজ সার্ভিস পরিচালনা করতে পারেন না। এর মানে ব্যবহারকারীরা উইন্ডোজ সার্ভিস স্টপ, স্টার্ট, রিস্টার্ট, বা সেটিংস/পারমিশন পরিবর্তন করতে পারেন না। কিছু ক্ষেত্রে, একজন ব্যবহারকারীর নির্দিষ্ট সার্ভিস রিস্টার্ট বা পরিচালনার পারমিশন দরকার হয়। এই নিবন্ধে আমরা উইন্ডোজ সার্ভিসের পারমিশন পরিচালনার چندین পদ্ধতি দেখব। বিশেষ করে, আমরা দেখাব কিভাবে উপযুক্ত পারমিশন দিয়ে একজন নন-অ্যাডমিন ব্যবহারকারীকে একটি নির্দিষ্ট উইন্ডোজ সার্ভিস স্টার্ট, স্টপ এবং রিস্টার্ট করার অনুমতি দিতে হয়।
ধরে নেওয়া হচ্ছে, আপনাকে ডোমেন অ্যাকাউন্ট contoso\tuser-কে Print Spooler সার্ভিস (সার্ভিস নাম – spooler) রিস্টার্ট করার পারমিশন দিতে হবে। নন-অ্যাডমিন সার্ভিস রিস্টার্ট করার চেষ্টা করলে এই এরর আসে:
System error 5 has occurred. Access is denied.
উইন্ডোজে সার্ভিস পারমিশন পরিচালনার জন্য কোনো সহজ এবং সুবিধাজন্য বিল্ট-ইন টুল নেই। আমরা ব্যবহারকারীকে সার্ভিস পরিচালনার পারমিশন দেওয়ার কিছু পদ্ধতি দেখব:
SC.exe (Service Controller) টুল ব্যবহার করে উইন্ডোজ সার্ভিস পারমিশন সেট করা
সিস্টেম সার্ভিস পারমিশন পরিচালনার জন্য স্ট্যান্ডার্ড বিল্ট-ইন উইন্ডোজ পদ্ধতি হচ্ছে sc.exe (Service Controller) টুল ব্যবহার করা। এই ইউটিলিটির মূল সমস্যা হচ্ছে সার্ভিস পারমিশনের জটিল সিনট্যাক্স ( SDDL ফরম্যাট — Security Description Definition Language)।
একটি উইন্ডোজ সার্ভিসের বর্তমান পারমিশন SDDL স্ট্রিং হিসেবে পেতে পারেন:
sc.exe sdshow Spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
এই প্রতীকগুলো কী বোঝায়?
S: — System Access Control List (SACL) D: — Discretionary ACL (DACL)
ব্র্যাকেটের পর প্রথম অক্ষর মানে: অনুমতি (A) বা নিষেধ (D)।
পরবর্তী প্রতীক সমূহ হলো অ্যাসাইনযোগ্য পারমিশন।
CC — SERVICE_QUERY_CONFIG (সার্ভিস সেটিংস অনুরোধ) LC — SERVICE_QUERY_STATUS (সার্ভিস স্ট্যাটাস পোলিং) SW — SERVICE_ENUMERATE_DEPENDENTS LO — SERVICE_INTERROGATE CR — SERVICE_USER_DEFINED_CONTROL RC — READ_CONTROL RP — SERVICE_START WP — SERVICE_STOP DT — SERVICE_PAUSE_CONTINUE
শেষ ২ অক্ষর হলো অবজেক্ট (ব্যবহারকারী, গ্রুপ বা SID) যাদের পারমিশন দেওয়া হয়েছে। প্রিডিফাইন্ড গ্রুপের তালিকা নিচে:
AU Authenticated Users AO Account operators RU Alias to allow previous Windows 2000 AN Anonymous logon AU Authenticated users BA Built-in administrators BG Built-in guests BO Backup operators BU Built-in users CA Certificate server administrators CG Creator group CO Creator owner DA Domain administrators DC Domain computers DD Domain controllers DG Domain guests DU Domain users EA Enterprise administrators ED Enterprise domain controllers WD Everyone PA Group Policy administrators IU Interactively logged-on user LA Local administrator LG Local guest LS Local service account SY Local system NU Network logon user NO Network configuration operators NS Network service account PO Printer operators PS Personal self PU Power users RS RAS servers group RD Terminal server users RE Replicator RC Restricted code SA Schema administrators SO Server operators SU Service logon user
প্রিডিফাইন্ড গ্রুপের পরিবর্তে, আপনি স্পষ্টভাবে SID দিয়ে ব্যবহারকারী বা গ্রুপ নির্দিষ্ট করতে পারেন। বর্তমান ব্যবহারকারীর SID পেতে কমান্ড:
whoami /user
অথবা যেকোনো ডোমেন ব্যবহারকারীর SID পেতে Get-ADUser কম্ডলেট ব্যবহার করুন:
Get-ADUser -Identity 'sadams' | select SID
AD সিকিউরিটি গ্রুপের SID পেতে Get-ADGroup কম্ডলেট ব্যবহার করুন:
Get-ADGroup -Filter {Name -eq "ny-ithelpdesk"} | Select SID
নির্দিষ্ট সার্ভিসের জন্য SDDL পারমিশন স্ট্রিং অ্যাসাইন করতে sc sdset কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি ব্যবহারকারীকে পারমিশন দেওয়ার কমান্ড:
sc sdset Spooler "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
SubInACL ব্যবহার করে ব্যবহারকারীকে সার্ভিস স্টার্ট/স্টপ/রিস্টার্ট করার অনুমতি দেওয়া
সিসিন্টারন্যালস (মার্ক রাসিনোভিচ দ্বারা) থেকে কমান্ড লাইন টুল SubInACL ব্যবহার করে সার্ভিস পারমিশন পরিচালনা করা সহজ। এই টুলের সিনট্যাক্স অনেক সহজ এবং সুবিধাজনক। SubInACL ব্যবহার করে সার্ভিসের রিস্টার্ট পারমিশন দেওয়ার পদ্ধতি:
- subinacl.msi এই ওয়েবপেজ থেকে ডাউনলোড করুন (https://www.microsoft.com/en-us/download/details.aspx?id=23510) এবং টার্গেট সিস্টেমে ইনস্টল করুন;

- এলিভেটেড কমান্ড প্রম্পটে, টুল থাকা ডিরেক্টরিতে যান:
cd “C:\Program Files (x86)\Windows Resource Kits\Tools\” - কমান্ড চালান:
subinacl.exe /service Spooler /grant=contoso\tuser=PTO
নোট. এই কেসে আমরা ব্যবহারকারীকে সার্ভিস সাসপেন্ড (pause/continue), স্টার্ট এবং স্টপ (রিস্টার্ট) করার পারমিশন দিয়েছি। উপলব্ধ সার্ভিস পারমিশনের পূর্ণ তালিকা:
F : Full Control R : Generic Read W : Generic Write X : Generic eXecute L : Read controL Q : Query Service Configuration S : Query Service Status E : Enumerate Dependent Services C : Service Change Configuration T : Start Service O : Stop Service P : Pause/Continue Service I : Interrogate Service U : Service User-Defined Control Commands
যদি রিমোট কম্পিউটারে চলমান সার্ভিসের জন্য পারমিশন দিতে হয়, তবে subinacl কমান্ডের সিনট্যাক্স:
subinacl /SERVICE \\lon-prnt1\spooler /grant=contoso\tuser=F - এখন শুধু ব্যবহারকারী অ্যাকাউন্ট দিয়ে কম্পিউটারে লগ অন করুন এবং সার্ভিস রিস্টার্ট করার চেষ্টা করুন:
net stop spooler
net start spooler
অথবা
sc stop spooler && sc start spooler

যদি সবকিছু সঠিক হয়, তবে সার্ভিস রিস্টার্ট হবে।
নিয়োগ করা সার্ভিস পারমিশন রিভোক করতে subinacl.exe টুলের /revoke অপশন ব্যবহার করুন। উদাহরণস্বরূপ:
subinacl.exe /service Spooler /revoke=contoso\tuser
Process Explorer ব্যবহার করে উইন্ডোজ সার্ভিস পারমিশন পরিবর্তন করা
আপনি সিসিন্টারন্যালস এর অন্য একটি ইউটিলিটি – Process Explorer ব্যবহার করে উইন্ডোজ সার্ভিস পারমিশন পরিবর্তন করতে পারেন। Process Explorer অ্যাডমিনিস্ট্রেটর হিসেবে চালু করুন এবং আপনার প্রয়োজনীয় সার্ভিসের প্রসেস খুঁজে বের করুন। আমাদের উদাহরণে, এটি spoolsv.exe (spooler এক্সিকিউটেবল – C:\Windows\System32\spoolsv.exe)। প্রসেস প্রপার্টিজ খুলুন এবং Services ট্যাবে ক্লিক করুন।
Permission বাটনে ক্লিক করুন এবং খুলা উইন্ডোতে ব্যবহারকারী বা গ্রুপ যোগ করুন। তারপর আপনি যে পারমিশন অ্যাসাইন করতে চান সেটা সিলেক্ট করুন (Full Control/Write/Read)।
পাওয়ারশেল ব্যবহার করে উইন্ডোজ সার্ভিস পারমিশন সেট করা
TechNet গ্যালারিতে উইন্ডোজ অবজেক্টের পারমিশন পরিচালনার জন্য একটি অনঅফিশিয়াল পাওয়ারশেল মডিউল আছে – PowerShellAccessControl Module (এখান থেকে ডাউনলোড করুন)। এই মডিউল সার্ভিস পারমিশনও পরিচালনা করতে দেয়। এই মডিউল ইনস্টল করুন এবং আপনার PS সেশনে ইম্পোর্ট করুন:
Import-Module PowerShellAccessControl
পাওয়ারশেল থেকে নির্দিষ্ট উইন্ডোজ সার্ভিসের ইফেক্টিভ পারমিশন পেতে পারেন এইভাবে:
Get-Service spooler | Get-EffectiveAccess -Principal corp\tuser
নন-অ্যাডমিন ব্যবহারকারীকে spooler সার্ভিস স্টার্ট এবং স্টপ করার অনুমতি দিতে কমান্ড:
Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corp\tuser
Security Templates ব্যবহার করে সার্ভিস পারমিশন পরিচালনা করা
সার্ভিস পারমিশন পরিচালনার একটি ভিজুয়াল (কিন্তু অধিক কর্মে বাধ্যকর) গ্রাফিক্যাল পদ্ধতি হলো Security Templates ব্যবহার করা। mmc.exe কনসোল খুলুন এবং Security Templates স্ন্যাপ-ইন যোগ করুন।
একটি নতুন সিকিউরিটি টেমপ্লেট তৈরি করুন (New Template)।
নতুন টেমপ্লেটের জন্য একটি নাম দিন এবং System Services সেকশনে যান। সার্ভিস তালিকা থেকে Print Spooler সার্ভিস সিলেক্ট করুন এবং এর প্রপার্টিজ খুলুন।
স্টার্টআপ মোড (Automatic) সিলেক্ট করুন এবং Edit Security ক্লিক করুন।
Add বাটন ব্যবহার করে ব্যবহারকারী অ্যাকাউন্ট বা গ্রুপ যোগ করুন যাদের পারমিশন দিতে চান। আমাদের কেসে, Start, stop and pause পারমিশন যথেষ্ট।
এই টেমপ্লেট সংরক্ষণ করুন।
নোট. Security Template-এর কন্টেন্ট INF ফাইল হিসেবে C:\Users\%username%\Documents\Security\Templates ফোল্ডারে সংরক্ষিত হয়।আপনি এই ফাইল খুললে দেখবেন যে পারমিশন সম্পর্কে তথ্য SDDL ফরম্যাটে সংরক্ষিত (যা আগে বলা হয়েছে)। এই স্ট্রিংটি sc.exe কমান্ডের আর্গুমেন্ট হিসেবে ব্যবহার করা যায়।
[Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[Service General Setting]
"Spooler",2,"D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;RPWPDTRC;;;S-1-5-21-3243688314-1354026805-3292651841-1127)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
এখন Security Configuration and Analysis স্ন্যাপ-ইন ব্যবহার করে একটি নতুন ডেটাবেস তৈরি করুন (Open Database) এবং আপনার Security Template ফাইল Spooler User Rights.inf থেকে ইম্পোর্ট করুন।
Configure Computer Now অপশন সিলেক্ট করে এই টেমপ্লেট প্রয়োগ করুন।
এখন চেক করুন যে ব্যবহারকারী নন-অ্যাডমিন অ্যাকাউন্ট দিয়ে Print Spooler সার্ভিস পরিচালনা করতে পারছে।
GPO ব্যবহার করে ব্যবহারকারীকে সার্ভিস পরিচালনার অধিকার দেওয়া
যদি আপনাকে একাধিক সার্ভার বা ডোমেন কম্পিউটারে ব্যবহারকারীকে সার্ভিস স্টার্ট/স্টপ করার পারমিশন দিতে হয়, তবে গ্রুপ পলিসি (GPO) ফিচার ব্যবহার করা সহজ:
- একটি নতুন GPO তৈরি করুন বা বিদ্যমানটি এডিট করুন, এটিকে প্রয়োজনীয় Active Directory কন্টেইনারের (OU) সাথে লিংক করুন যেখানে কম্পিউটার অবজেক্ট আছে। পলিসি সেকশনে যান Computer configuration -> Windows Settings -> Security Settings -> System Services;

- Spooler সার্ভিস খুঁজে বের করুন এবং উপরে বর্ণিত পদ্ধতির মতো ব্যবহারকারীদের পারমিশন দিন। পরিবর্তন সংরক্ষণ করুন;নোট। আগে আমরা দেখিয়েছিলাম যে একই GPO ব্যবহার করে যেকোনো উইন্ডোজ সার্ভিস সব ব্যবহারকারীদের থেকে লুকানো যায়।
- ক্লায়েন্ট কম্পিউটারে GPO প্রয়োগ হওয়ার জন্য অপেক্ষা করুন এবং নিশ্চিত করুন যে নতুন সার্ভিস পারমিশন অ্যাসাইন হয়েছে।
যে সকল সার্ভিসের জন্য ডিফল্ট পারমিশন পরিবর্তন করা হয়েছে, তাদের সিকিউরিটি সেটিংস তাদের নিজস্ব রেজিস্টরি কী HKLM\System\CurrentControlSet\Services\<servicename>\Security-এ REG_BINARY টাইপের Security প্যারামিটারে সংরক্ষিত থাকে।
এর মানে হলো, অন্য কম্পিউটারে সার্ভিস পারমিশন সেট করার উপায়ের একটি হলো এই রেজিস্টরি প্যারামিটার এক্সপোর্ট/ইম্পোর্ট করা (GPO-এর মাধ্যমে সহিত)।
সুতরাং, আমরা উইন্ডোজ সার্ভিস পারমিশন পরিচালনার বেশ কিছু পদ্ধতি দেখেছি, যা আপনাকে সিস্টেম সার্ভিসের যেকোনো পারমিশন নন-অ্যাডমিন ব্যবহারকারীকে দিতে সক্ষম করে। যদি ব্যবহারকারীকে সার্ভিসে রিমোট অ্যাক্সেস দরকার হয়, লোকাল লগ অন বা RDP অ্যাক্সেস পারমিশন না দিয়ে, তবে ব্যবহারকারীকে Service Control Manager経由で রিমোটলি কানেক্ট করা এবং সার্ভিস এনামারেট করার অনুমতি দিতে হবে।