উইন্ডোজে ফাইল বা ফোল্ডারগুলিতে অ্যাক্সেস পরিচালনা করার জন্য, একটি বিশেষ ACL (অ্যাক্সেস কন্ট্রোল লিস্ট) একটি NTFS ফাইল সিস্টেম অবজেক্টে (একটি ফাইল বা ফোল্ডার) বরাদ্দ করা হয়। অবজেক্টের ACL উপলব্ধ অপারেশন (অনুমতি) সংজ্ঞায়িত করে যা একজন ব্যবহারকারী বা গোষ্ঠী ফাইল সিস্টেম অবজেক্টের সাথে সম্পাদন করতে পারে। বেশিরভাগ ক্ষেত্রে, উইন্ডোজ অ্যাডমিনিস্ট্রেটররা ফাইল এক্সপ্লোরার গ্রাফিক ইন্টারফেস (ফাইল/ফোল্ডার বৈশিষ্ট্য -> নিরাপত্তা ট্যাব) বা icacls কনসোল টুল ব্যবহার করে ফাইল বা ফোল্ডারে NTFS অনুমতিগুলি পরিচালনা করতে। এই নিবন্ধে আমরা PowerShell cmdlets ব্যবহার করে NTFS অবজেক্টের অনুমতিগুলি কীভাবে পরিচালনা করতে হয় তা দেখব। আপনি এই কমান্ডগুলি আপনার স্ক্রিপ্টগুলিতে ব্যবহার করতে পারেন বা উইন্ডোজ ফাইল সার্ভার এবং ওয়ার্কস্টেশনগুলিতে NTFS অ্যাক্সেস অনুমতিগুলির পরিচালনা স্বয়ংক্রিয় করতে পারেন৷
Get-Acl এবং সেট-Acl:NTFS ACLs পরিচালনার জন্য অন্তর্নির্মিত PowerShell Cmdlets
PowerShell v5 (Windows 10/Windows Server 2016), ACL পরিচালনা করার জন্য দুটি আলাদা বিল্ট-ইন cmdlet আছে (Microsoft.PowerShell.Security এর একটি অংশ। মডিউল):
- Get-Acl — NTFS ফাইল সিস্টেমে নির্দিষ্ট বস্তুর জন্য বর্তমান ACL পেতে অনুমতি দেয়;
- সেট-Acl - বর্তমান বস্তু ACL যোগ/পরিবর্তন করতে ব্যবহৃত হয়।
আমরা এই অন্তর্নির্মিত cmdletগুলিকে বিশদভাবে বিবেচনা করব না, যেহেতু বেশিরভাগ ক্ষেত্রে তাদের বৈশিষ্ট্যগুলি বাস্তব কার্যগুলিতে NTFS অনুমতিগুলি পরিচালনা করার জন্য যথেষ্ট নয়৷ আসুন কিছু সাধারণ ব্যবহারের ক্ষেত্রে চিন্তা করি।
একটি ফোল্ডারের বর্তমান মালিক (ফাইল) এবং নির্ধারিত NTFS অনুমতিগুলির তালিকা পেতে, কমান্ডটি চালান:
get-acl C:\docs\ |fl
Path : Microsoft.PowerShell.Core\FileSystem::C:\docs\ Owner : CORP\asmith Group : CORP\Domain Users Access : PC-7L7JAK6\root Allow ReadAndExecute, Synchronize BUILTIN\Administrators Allow FullControl NT AUTHORITY\SYSTEM Allow FullControl BUILTIN\Users Allow ReadAndExecute, Synchronize NT AUTHORITY\Authenticated Users Allow Modify, Synchronize NT AUTHORITY\Authenticated Users Allow -536805376 Audit : Sddl : O:S-1-5-21-2950832418-2342342341-4040681116-234234G:DUD:AI(A;OICI;0x1200a9;;;S-1-5-21-2601781602-2342342341-6543210895-1001)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;SY)(A;OICIID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)আপনি দেখতে পাচ্ছেন, বর্তমান অনুমতিগুলিও SDDl হিসাবে প্রদর্শিত হয়৷ স্ট্রিং — আমরা সংক্ষিপ্তভাবে উইন্ডোজ সার্ভিস পারমিশন সেট করা নিবন্ধে এই অ্যাক্সেস বিবরণ বিন্যাসটি দেখেছি।
আপনি শুধুমাত্র একটি পরিষ্কার বিন্যাসে NTFS অনুমতির তালিকা প্রদর্শন করতে পারেন:
(get-acl C:\docs\).access
আপনি একটি NTFS ফোল্ডার (অবজেক্ট) থেকে বর্তমান NTFS অনুমতিগুলি অনুলিপি করতে পারেন এবং অন্য একটিতে প্রয়োগ করতে পারেন:
Get-Acl e:\old_docs | Set-Acl C:\docs
Set-ACL ব্যবহার করার প্রধান সমস্যা হল cmdlet সর্বদা রিসোর্স মালিককে পরিবর্তন করার চেষ্টা করে, এমনকি যদি আপনাকে শুধুমাত্র NTFS অনুমতি পরিবর্তন করতে হয়। সুতরাং একটি বস্তুতে অনুমতি যোগ করার জন্য, আপনাকে নিম্নলিখিত জটিল স্ক্রিপ্টটি ব্যবহার করতে হবে:
$path = "c:\docs "
$user = "corp\DSullivan"
$Permiss = "Read, ReadAndExecute, ListDirectory"
$InheritSettings = "Containerinherit, ObjectInherit"
$PropogationSettings = "None"
$RuleType = "Allow"
$acl = Get-Acl $path
$perm = $user, $Permiss, $InheritSettings, $PropogationSettings, $RuleType
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $perm
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path $path
একটি ব্যবহারকারী বা একটি গোষ্ঠীর জন্য একটি ফোল্ডার অ্যাক্সেস করার জন্য NTFS অনুমতি সরাতে:$path = "c:\docs"
$acl = Get-Acl $path
$rules = $acl.Access | where IsInherited -eq $false
$targetrule = $rules | where IdentityReference -eq "corp\DSullivan"
$acl.RemoveAccessRule($targetrule)
$acl | Set-Acl -Path $path
PowerShell থেকে ফোল্ডার উত্তরাধিকার নিষ্ক্রিয় করতে:
$path = 'C:\docs
$acl = Get-ACL -Path $path
$acl.SetAccessRuleProtection($True, $True) # the first $True shows if the folder is protected, the second $True specifies if the current NTFS permissions have to be copied
Set-Acl -Path $path -AclObject $acl
NTFSSsecurity PowerShell মডিউল দিয়ে ফাইলের অনুমতিগুলি পরিচালনা করা
আমি আগেই বলেছি, ফাইল সিস্টেম অবজেক্ট পরিচালনা করার জন্য অন্তর্নির্মিত PowerShell cmdlets খুব সুবিধাজনক নয়। উইন্ডোজের ফাইল এবং ফোল্ডারগুলিতে NTFS অনুমতিগুলি পরিচালনা করতে আপনার পাওয়ারশেল গ্যালারি থেকে একটি পৃথক মডিউল ব্যবহার করা উচিত – NTFSS নিরাপত্তা . আপনি Install-Module -Name NTFSSecurity
ব্যবহার করে NTFSSsecurity মডিউলের (4.2.6, বর্তমানে) সর্বশেষ সংস্করণ ইনস্টল করতে পারেন কমান্ড বা ম্যানুয়ালি ডাউনলোড করুন (লিঙ্ক)। এটি ম্যানুয়ালি ইনস্টল করার সময়, আপনাকে কেবল C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NTFSSecurity
-এ মডিউল সংরক্ষণাগারটি বের করতে হবে (ডাউনলোড করা ফাইলটি আনব্লক করতে ভুলবেন না)।
আপনার PowerShell সেশনে NTFSS নিরাপত্তা মডিউল আমদানি করুন:
Import-Module NTFSSecurity
মডিউলে উপলব্ধ কমান্ডের তালিকা প্রদর্শন করুন (36 cmdlets):
Get-Command -Module NTFSSecurity
ফোল্ডারের বর্তমান NTFS অনুমতি তালিকা করুন:Get-Item 'c:\docs' | Get-NTFSAccess
আপনি দেখতে পাচ্ছেন, বর্তমান অনুমতিগুলি আরও সুবিধাজনক আকারে দেখানো হয়েছে৷
৷
একটি নির্দিষ্ট ফোল্ডারে ব্যবহারকারী বা একটি গোষ্ঠীকে সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দিতে, এই কমান্ডটি চালান:Add-NTFSAccess -Path C:\docs -Account 'CORP\RShelby','BUILTIN\Administrators' -AccessRights 'Fullcontrol' -PassThru
শুধুমাত্র উপরের ফোল্ডার স্তরে অনুমতি দিতে এবং নেস্টেড অবজেক্টে (শুধুমাত্র ফোল্ডার) অনুমতি পরিবর্তন না করতে, এই কমান্ডটি ব্যবহার করুন:
Add-NTFSAccess c:\docs\public -Account corp\LMurkowski -AccessRights Modify -AppliesTo ThisFolderOnly
নির্ধারিত NTFS অনুমতিগুলি সরাতে:
Remove-NTFSAccess -Path C:\DOCS -Account 'corp\LMurkowski' -AccessRights FullControl -PassThru
পরবর্তী কমান্ডটি প্রদত্ত অ্যাকাউন্টের জন্য ফোল্ডারের সমস্ত নেস্টেড অবজেক্টের অনুমতিগুলি সরিয়ে দেবে (উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি এড়িয়ে যাবে):
Get-ChildItem -Path C:\docs -Recurse | Get-NTFSAccess -Account 'corp\LMurkowski' -ExcludeInherited |Remove-NTFSAccess -PassThru
নিম্নলিখিত কমান্ডের সাহায্যে, আপনি অ্যাডমিনিস্ট্রেটর অ্যাকাউন্টটিকে ফোল্ডারের সমস্ত নেস্টেড অবজেক্টের মালিক করতে পারেন:
Get-ChildItem -Path C:\docs -Recurse -Force | Set-NTFSOwner -Account 'Administrator'
ম্যানুয়ালি ফোল্ডার অবজেক্টে বরাদ্দ করা সমস্ত অনুমতি সাফ করতে (উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি সরানো হবে না):
Get-ChildItem -Path C:\docs -Recurse -Force | Clear-NTFSAccess
একটি ফোল্ডারের সমস্ত বস্তুর জন্য NTFS উত্তরাধিকার সক্ষম করতে:
Get-ChildItem -Path C:\docs -Recurse -Force | Enable-NTFSAccessInheritance
উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি ছাড়া ম্যানুয়ালি বরাদ্দকৃত সমস্ত অনুমতি প্রদর্শন করতে:
dir C:\docs | Get-NTFSAccess –ExcludeInherited
আপনি নির্দিষ্ট অ্যাকাউন্টে বরাদ্দকৃত অনুমতিগুলি প্রদর্শন করতে পারেন (কার্যকর অনুমতিগুলির সাথে এটিকে বিভ্রান্ত করবেন না, আমরা সেগুলি পরে আলোচনা করব):
dir C:\docs | Get-NTFSAccess -Account woshub\RShelby
PowerShell এর মাধ্যমে NTFS কার্যকরী অনুমতি কিভাবে দেখতে হয়?
আপনি কার্যকর NTFS অনুমতি দেখতে পারেন Get-EffectiveAccess
ব্যবহার করে একটি নির্দিষ্ট ফাইল বা ফোল্ডারের জন্য cmdlet। ধরুন, আপনি কয়েকটি AD নিরাপত্তা গোষ্ঠীকে নির্দিষ্ট ফোল্ডারে অ্যাক্সেস দিয়েছেন এবং আপনি জানতে চান যে নির্দিষ্ট ব্যবহারকারী অ্যাকাউন্ট (বা SID) ফাইল ফোল্ডার অ্যাক্সেস করতে পারে কিনা। ব্যবহারকারী অ্যাকাউন্টের অন্তর্ভুক্ত AD গ্রুপের সমস্ত সদস্যদের তালিকাভুক্ত না করে আপনি কীভাবে এটি করতে পারেন? কার্যকর NTFS অনুমতি দেখার ক্ষেত্রে এটি খুবই কার্যকর। উদাহরণস্বরূপ, আপনাকে confroom ডোমেন অ্যাকাউন্টের জন্য একটি ফোল্ডারে সমস্ত নেস্টেড ডিরেক্টরিতে কার্যকর অনুমতিগুলি দেখতে হবে .
Get-ChildItem -Path c:\docs -Recurse -Directory | Get-NTFSEffectiveAccess -Account 'corp\confroom’ | select Account, AccessControlType, AccessRights, FullName
নির্বাচন করুন
অথবা আপনি একটি নির্দিষ্ট ফাইলের জন্য কার্যকর অনুমতি দেখতে পারেন:
Get-Item -Path 'C:\docs\annual_report2019.xlsx' | Get-NTFSEffectiveAccess -Account 'corp\confroom' | Format-List
ফাইল সিস্টেম অবজেক্টের বর্তমান কার্যকরী ব্যবহারকারীর অনুমতিগুলি অ্যাক্সেস রাইটস-এ নির্দিষ্ট করা আছে ক্ষেত্র।