Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Windows Server

PowerShell के साथ NTFS अनुमतियों को कैसे प्रबंधित करें?

Windows में फ़ाइलों या फ़ोल्डरों तक पहुंच प्रबंधित करने के लिए, एक विशेष ACL (Access Control List) को NTFS फ़ाइल सिस्टम ऑब्जेक्ट (एक फ़ाइल या फ़ोल्डर) को असाइन किया जाता है। ऑब्जेक्ट का ACL उन ऑपरेशंस (अनुमतियों) को परिभाषित करता है जो एक उपयोगकर्ता या समूह फ़ाइल सिस्टम ऑब्जेक्ट के साथ कर सकते हैं। ज्यादातर मामलों में, Windows एडमिनिस्ट्रेटर File Explorer ग्राफिक इंटरफ़ेस (फ़ाइल/फ़ोल्डर गुण → Security टैब) या icacls कंसोल टूल का उपयोग करके फ़ाइलों या फ़ोल्डरों पर NTFS अनुमतियों को प्रबंधित करते हैं। इस लेख में हम देखेंगे कि PowerShell cmdlets का उपयोग करके NTFS ऑब्जेक्ट्स पर अनुमतियों को कैसे प्रबंधित करें। आप इन कमांड का उपयोग अपने स्क्रिप्ट में या Windows फ़ाइल सर्वर और वर्कस्टेशन पर NTFS एक्सेस अनुमतियों के प्रबंधन को स्वचालित करने के लिए कर सकते हैं।

PowerShell के साथ NTFS अनुमतियों को कैसे प्रबंधित करें?

Get-Acl और Set-Acl: NTFS ACL प्रबंधित करने के लिए बिल्ट-इन PowerShell Cmdlets

PowerShell v5 (Windows 10/Windows Server 2016) में, ACL प्रबंधित करने के लिए दो अलग बिल्ट-इन cmdlets हैं (Microsoft.PowerShell.Security मॉड्यूल का हिस्सा):

  • Get-Acl — NTFS फ़ाइल सिस्टम पर विशिष्ट ऑब्जेक्ट के लिए वर्तमान ACL प्राप्त करने की अनुमति देता है;
  • Set-Acl – वर्तमान ऑब्जेक्ट ACL को जोड़ने/बदलने के लिए उपयोग किया जाता है।

हम इन बिल्ट-इन cmdlets पर विस्तार से विचार नहीं करेंगे, क्योंकि ज्यादातर मामलों में उनकी विशेषताएं वास्तविक कार्यों में 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 स्ट्रिंग के रूप में भी प्रदर्शित किया जाता है — हमने इस एक्सेस विवरण प्रारूप को लेख Setting Windows Service Permissions में संक्षेप में देखा।

आप NTFS अनुमतियों की सूची केवल स्पष्ट प्रारूप में प्रदर्शित कर सकते हैं:

(get-acl C:\docs\).access

PowerShell के साथ NTFS अनुमतियों को कैसे प्रबंधित करें?

आप एक NTFS फ़ोल्डर (ऑब्जेक्ट) से वर्तमान NTFS अनुमतियों को कॉपी कर सकते हैं और उन्हें दूसरे पर लागू कर सकते हैं:

Get-Acl e:\old_docs | Set-Acl C:\docs

ऐसा करने के लिए, खाते को ऑब्जेक्ट का मालिक होना चाहिए और Take Ownership विशेषाधिकार होना चाहिए।

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) # पहला $True दिखाता है कि फ़ोल्डर सुरक्षित है या नहीं, दूसरा $True निर्दिष्ट करता है कि वर्तमान NTFS अनुमतियों को कॉपी करना है या नहीं
Set-Acl -Path $path -AclObject $acl

Get-Acl और Set-Acl का उपयोग करके, आप ऑब्जेक्ट्स के लिए NTFS ऑडिट सेटिंग्स प्रबंधित कर सकते हैं (लेख देखें: शेयर्ड फ़ोल्डर से फ़ाइलें किसने हटाईं ट्रैक करना) या AD में वर्तमान OU प्रतिनिधि अनुमतियों के बारे में।

NTFSSecurity PowerShell मॉड्यूल के साथ फ़ाइल अनुमतियों का प्रबंधन

जैसा कि मैंने पहले ही बताया, फ़ाइल सिस्टम ऑब्जेक्ट को प्रबंधित करने के लिए बिल्ट-इन PowerShell cmdlets बहुत सुविधाजनक नहीं हैं। Windows में फ़ाइलों और फ़ोल्डरों पर NTFS अनुमतियों को प्रबंधित करने के लिए आपको PowerShell गैलरी से एक अलग मॉड्यूल - NTFSSecurity का उपयोग करना चाहिए। आप Install-Module -Name NTFSSecurity कमांड का उपयोग करके NTFSSecurity मॉड्यूल का नवीनतम संस्करण (वर्तमान में 4.2.6) इंस्टॉल कर सकते हैं या इसे मैन्युअली डाउनलोड कर सकते हैं (लिंक)। मैन्युअली इंस्टॉल करते समय, आपको केवल मॉड्यूल आर्काइव को C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NTFSSecurity में निकालना होगा (डाउनलोड की गई फ़ाइल को अनब्लॉक करना न भूलें)।

NTFSSecurity मॉड्यूल को अपने PowerShell सत्र में आयात करें:

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

टिप. डिफ़ॉल्ट रूप से, NTFSSecurity cmdlets कोई डेटा वापस नहीं करते हैं। कमांड निष्पादित होने के बाद नए ACLs प्रदर्शित करने के लिए -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 प्रभावी अनुमतियों को कैसे देखें?

आप Get-EffectiveAccess cmdlet का उपयोग करके किसी विशिष्ट फ़ाइल या फ़ोल्डर के लिए प्रभावी NTFS अनुमतियों को देख सकते हैं। मान लीजिए, आपने किसी विशिष्ट फ़ोल्डर तक पहुंच कई 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 अनुमतियों को कैसे प्रबंधित करें?

फ़ाइल सिस्टम ऑब्जेक्ट पर वर्तमान प्रभावी उपयोगकर्ता अनुमतियों को AccessRights फ़ील्ड में निर्दिष्ट किया गया है।

  1. क्रोम में फ्लैश इनेबल करें: सुरक्षित ब्राउज़िंग के लिए त्वरित गाइड क्रोम में फ्लैश इनेबल करें: सुरक्षित ब्राउज़िंग के लिए त्वरित गाइड

    फ्लैश फाइलें अक्सर मैलवेयर और अन्य हमलों के प्रति संवेदनशील होती हैं। इसलिए, HTML को प्राथमिकता दी जाती है क्योंकि यह ज्यादातर चीजों में फ्लैश से बेहतर है। गूगल क्रोम इनबिल्ट फ्लैश के साथ आता है, लेकिन यह डिफ़ॉल्ट रूप से सक्षम नहीं है। हालांकि, आप फ्लैश फाइलों को छोड़ नहीं सकते, जब तक वे उन वेबसाइटो

  1. माइक्रोसॉफ्ट वनड्राइव में फ़ाइल प्रबंधन में महारत हासिल करें: एक व्यापक गाइड माइक्रोसॉफ्ट वनड्राइव में फ़ाइल प्रबंधन में महारत हासिल करें: एक व्यापक गाइड

    Google के पास Google Drive है और Apple के पास iCloud है, इसी तरह Microsoft के पास OneDrive है (जिसे पहले SkyDrive के नाम से जाना जाता था)। क्लाउड स्टोरेज सेवाएं इन दिनों बहुत प्रचलन में हैं, क्योंकि लोग और व्यवसाय महंगे हार्डवेयर पर निर्भर रहने की अपनी आवश्यकताओं को कम कर रहे हैं और अपनी फ़ाइलों और

  1. विंडोज में टैग का उपयोग करके फाइल और फोल्डर संगठन में महारत हासिल करें विंडोज में टैग का उपयोग करके फाइल और फोल्डर संगठन में महारत हासिल करें

    सिस्टम से पुरानी फाइलों को खोजना ऐसा है, जैसे कोयले की खदान में काली बिल्ली ढूंढने की कोशिश करना। जैसे, मैंने पिछले साल दक्षिण अमेरिका में छुट्टियों की उन तस्वीरों को कहां सेव किया था? या मैंने 2018 में लिखी उस रिपोर्ट को क्या नाम दिया था? जबकि विंडोज 10 एक शक्तिशाली अंतर्निहित खोज के साथ आता है, व