কম্পিউটার

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

উইন্ডোজে ফাইল বা ফোল্ডারগুলিতে অ্যাক্সেস পরিচালনা করার জন্য, একটি বিশেষ ACL (অ্যাক্সেস কন্ট্রোল লিস্ট) একটি NTFS ফাইল সিস্টেম অবজেক্টে (একটি ফাইল বা ফোল্ডার) বরাদ্দ করা হয়। অবজেক্টের ACL উপলব্ধ অপারেশন (অনুমতি) সংজ্ঞায়িত করে যা একজন ব্যবহারকারী বা গোষ্ঠী ফাইল সিস্টেম অবজেক্টের সাথে সম্পাদন করতে পারে। বেশিরভাগ ক্ষেত্রে, উইন্ডোজ অ্যাডমিনিস্ট্রেটররা ফাইল এক্সপ্লোরার গ্রাফিক ইন্টারফেস (ফাইল/ফোল্ডার বৈশিষ্ট্য -> নিরাপত্তা ট্যাব) বা icacls কনসোল টুল ব্যবহার করে ফাইল বা ফোল্ডারে NTFS অনুমতিগুলি পরিচালনা করতে। এই নিবন্ধে আমরা PowerShell cmdlets ব্যবহার করে NTFS অবজেক্টের অনুমতিগুলি কীভাবে পরিচালনা করতে হয় তা দেখব। আপনি এই কমান্ডগুলি আপনার স্ক্রিপ্টগুলিতে ব্যবহার করতে পারেন বা উইন্ডোজ ফাইল সার্ভার এবং ওয়ার্কস্টেশনগুলিতে NTFS অ্যাক্সেস অনুমতিগুলির পরিচালনা স্বয়ংক্রিয় করতে পারেন৷

PowerShell দিয়ে 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

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

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

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

আপনি একটি 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

এছাড়াও, Get-Acl এবং Set-Acl ব্যবহার করে আপনি অবজেক্টগুলির জন্য NTFS অডিট সেটিংস পরিচালনা করতে পারেন (ভাগ করা ফোল্ডার থেকে কারা ফাইলগুলি সরিয়েছে তা ট্র্যাকিং নিবন্ধগুলি দেখুন) বা AD-তে বর্তমান OU অর্পিত অনুমতিগুলি সম্পর্কে।

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

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

ফোল্ডারের বর্তমান NTFS অনুমতি তালিকা করুন:
Get-Item 'c:\docs' | Get-NTFSAccess

আপনি দেখতে পাচ্ছেন, বর্তমান অনুমতিগুলি আরও সুবিধাজনক আকারে দেখানো হয়েছে৷

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

একটি নির্দিষ্ট ফোল্ডারে ব্যবহারকারী বা একটি গোষ্ঠীকে সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দিতে, এই কমান্ডটি চালান:
Add-NTFSAccess -Path C:\docs -Account 'CORP\RShelby','BUILTIN\Administrators' -AccessRights 'Fullcontrol' -PassThru

টিপ . ডিফল্টরূপে, NTFSSsecurity cmdlets কোনো ডেটা ফেরত দেয় না। -PassThru ব্যবহার করুন কমান্ডটি এক্সিকিউট করার পর নতুন ACL প্রদর্শন করার জন্য প্যারামিটার।

শুধুমাত্র উপরের ফোল্ডার স্তরে অনুমতি দিতে এবং নেস্টেড অবজেক্টে (শুধুমাত্র ফোল্ডার) অনুমতি পরিবর্তন না করতে, এই কমান্ডটি ব্যবহার করুন:

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

PowerShell দিয়ে NTFS পারমিশন কিভাবে ম্যানেজ করবেন?

ফাইল সিস্টেম অবজেক্টের বর্তমান কার্যকরী ব্যবহারকারীর অনুমতিগুলি অ্যাক্সেস রাইটস-এ নির্দিষ্ট করা আছে ক্ষেত্র।


  1. কীভাবে একটি পাওয়ারশেল স্ক্রিপ্টে বিরাম যুক্ত করবেন (উদাহরণ সহ)

  2. কোনও সময়ে ক্রোমে ফ্ল্যাশ অনুমতিগুলি কীভাবে পরিচালনা করবেন

  3. কিভাবে Microsoft OneDrive-এর মাধ্যমে আপনার ফাইলগুলি পরিচালনা করবেন?

  4. কিভাবে উইন্ডোজ ট্যাগ দিয়ে ফাইল এবং ফোল্ডার পরিচালনা করবেন