उपयोगकर्ता की फ़ोल्डर पहुँच अनुमतियाँ सूचीबद्ध करें


14

मेरे पास एक डोमेन में एक उपयोगकर्ता है जिसके पास कई फ़ोल्डर्स में कई सबफ़ोल्डर्स तक पहुंच है। उनके अधिकारों को बहुत बारीक तरीके से परिभाषित किया गया था। अब वह कंपनी छोड़ रहा है, लेकिन एक अनुबंधित संसाधन के रूप में एक फर्म के लिए काम करना जारी रखेगा।

मुझे उन सभी फ़ोल्डरों को खोजने की आवश्यकता है, जिनके पास उनकी अनुमति थी और उनकी अनुमति रद्द करें, फिर उन्हें एक्सेस अनुमतियों के एक अलग सेट के साथ सेट करें।

क्या कोई उपकरण (फ्रीवेयर, अधिमानतः) है जो किसी दिए गए उपयोगकर्ता के लिए सभी NTFS अनुमतियों को सूचीबद्ध करता है? मैं Sysinternals से AccessEnum के साथ कोशिश की है, लेकिन सूची उपयोगकर्ता नाम से फ़िल्टर नहीं किया जा सकता है और मेरे लिए बेकार है। मैंने CACLS को भी देखा है, लेकिन जहाँ तक मैं यह बता सकता हूँ कि यह फ़ाइल द्वारा आदेशित अनुमतियाँ प्रदर्शित करता है, उपयोगकर्ता द्वारा नहीं।

कोई विचार?


1
यही कारण है कि आपको हमेशा समूहों के आधार पर सदस्यता प्रदान करनी चाहिए, भले ही समूह में केवल एक उपयोगकर्ता हो। आप उसे समूह से निकाल सकते थे। इस बीच जब आप किसी उत्तर की प्रतीक्षा करते हैं, तो आप AD में उसका खाता अक्षम कर सकते हैं।
एमडीएमरा

क्या आपने इस टूल को आज़माया: AccessChk v5.0? यह सुनिश्चित करने के एक हिस्से के रूप में कि उन्होंने एक सुरक्षित वातावरण बनाया है विंडोज प्रशासकों को अक्सर यह जानने की जरूरत होती है कि विशिष्ट उपयोगकर्ताओं या समूहों के पास किस तरह की फाइलें, निर्देशिका, रजिस्ट्री कुंजी, वैश्विक ऑब्जेक्ट और विंडोज सेवाओं सहित संसाधनों तक पहुंच है। AccessChk इन प्रश्नों का उत्तर सहज ज्ञान युक्त अंतरफलक और आउटपुट के साथ देता है। यहां पाया गया: Technet.microsoft.com/en-us/sysinternals/bb664922.aspx
Luc99

@MarkM: यह सच है ... यह सिर्फ इतना है कि जब उपयोगकर्ता को एक एकल फ़ोल्डर तक पहुंच की आवश्यकता होती है, तो आप उसे जोड़ते हैं। फिर कुछ महीनों में उन्हें पूरी तरह से अलग शेयर पर एक और एक्सेस की आवश्यकता है। और कुछ महीनों में फिर से 2 या 3 फ़ोल्डरों पर। आप ऐसे उपयोगकर्ता के लिए सार्थक नाम वाला समूह कैसे बना सकते हैं? "Username_granular_access_group"? यह शायद चाल चलेगा। @ ल्यूक 99: सिसिन्टर्नल्स से दिलचस्प उपकरण। मैं इसे कैसे याद कर सकता था। वैसे भी, मुझे लगता है कि यह प्रदर्शित करता है कि सभी फ़ोल्डर उपयोगकर्ता के पास प्रत्यक्ष या अप्रत्यक्ष पहुंच है। क्या केवल उन फ़ोल्डरों को प्रदर्शित करने का एक तरीका है जहां उपयोगकर्ता को स्पष्ट रूप से एसीएल (समूहों के माध्यम से शुल्क को छोड़कर) में सूचीबद्ध किया गया है?
कल्पनाोडि

जवाबों:


13

ऐसा लगता है कि ट्रिक (शायद कैविएट के साथ), उन सभी फ़ोल्डरों को खोजने के लिए जो उपयोगकर्ता "someuser" के पास C ड्राइव पर इस उदाहरण में, अंतर्निहित Windows icacls कमांड का उपयोग करने के लिए है:

icacls c:\*. /findsid someuser /t /c /l

निर्देशिकाओं की पुनरावृत्ति के लिए इसे बताने के लिए / t की आवश्यकता है। यह बताने के लिए भी कि यह त्रुटियों का सामना कर रहा है, यह बताने के लिए / c की आवश्यकता है। / L इसे प्रतीकात्मक लिंक (यदि कोई हो) के साथ काम करता है। (यह अंतिम एक एल है, और ये झंडे ऊपरी या निचले मामले में हो सकते हैं।)

*.जिस तरह से कहने के लिए "देखो निर्देशिकाओं के लिए, फाइल नहीं" के रूप में डॉस पुराने टाइमर द्वारा मान्यता प्राप्त हो जाएगा। बेशक, यदि आप फ़ाइलों और फ़ोल्डरों को ढूंढना चाहते हैं, तो इसे बदल दें *.*, और निश्चित रूप से आप इसे किसी भी ड्राइव पर इंगित कर सकते हैं, या इसे किसी भी फ़ोल्डर से चला सकते हैं और ड्राइव / फ़ोल्डर पथ को छोड़ सकते हैं और इसे उसके सापेक्ष खोज सकते हैं केवल फ़ोल्डर।

मैंने ओपी के समान ही उत्तर मांगा, और इस प्रविष्टि को पाया, लेकिन केवल डाउनलोड करने योग्य टूल पर आधारित प्रस्ताव को देखने के लिए चकित था। दूसरों की तरह, मैं कुछ निर्मित में उपयोग करना पसंद करता था, और मुझे यह आइकल्स टूल में मिला।

और मैंने पुष्टि की है कि यह विंडोज सर्वर 2012, 2008 और विंडोज 7 पर काम करता है, इसलिए मुझे संदेह है कि यह सर्वर 2003, विंडोज 8 और इसी तरह काम करेगा।

परिणामी सूची में लाइन के बाद संकेतित फ़ोल्डर होंगे, जैसे:

SID मिला: c: \ somedir \ somesubdir।

ध्यान दें कि यदि आप इसे एक ऐसे उपयोगकर्ता के रूप में चलाते हैं जिसके पास स्वयं नहीं है कि कुछ निर्देशिकाओं के लिए अनुमति दी गई है, तो आपको इस तरह के परिणामों में त्रुटियों को हल करना होगा:

c: \ System वॉल्यूम जानकारी: प्रवेश निषेध है।

और अगर आप एक संपूर्ण ड्राइव खोज रहे हैं, तो सैकड़ों ऐसी त्रुटियां हो सकती हैं, जिससे उनके परिणामों को खोजना मुश्किल हो जाता है।

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

अब, यदि आप उन त्रुटियों को छिपाने में रुचि रखते हैं, तो आप केवल परिणामों को पाइप करने के लिए एक खोज आदेश का उपयोग करने में सक्षम नहीं होंगे, जो सफल होते हैं (जो कि "SID पाया गया" का उल्लेख करते हैं), क्योंकि त्रुटियों को फ़िल्टर नहीं किया जाएगा। पाइप द्वारा कमांड को ढूंढें। इसके बजाय, यदि आप सभी त्रुटियों को दूर करना चाहते हैं, तो आपको उपयोग करके "बिट बकेट" में त्रुटि धारा (stderr) को पुनर्निर्देशित करने के बजाय अस्पष्ट चाल का उपयोग करने की आवश्यकता है 2>nul:। तो ऊपर का उदाहरण बन जाएगा:

icacls c:\*. /findsid someuser /t /c /l 2>nul:

बस इस बात से सावधान रहें कि कुछ फ़ोल्डर्स जो इस तरह की त्रुटियों को उत्पन्न करते हैं, जो अब गलतियां छिपी हुई हैं, वे अच्छी तरह से फ़ोल्डर हो सकते हैं जिन्हें "someuser" DOES की पहुंच है, लेकिन जो आप नहीं करते हैं। तो आप बस इन त्रुटियों को अनदेखा करने के बारे में दो बार सोचना चाहते हैं। लेकिन अगर आप चाहते हैं, तो आप इसे कैसे कर सकते हैं।

यह संभावना संभावित रूप से इस उत्तर के मूल्य को सीमित करती है, मुझे एहसास होता है। अगर किसी के पास अधिक परिचित चीजों के साथ विस्तार करना चाहते हैं या अपने उत्तर को सही करना चाहते हैं तो मैं इसका स्वागत करता हूं।


ऐसा लगता है कि यह स्पष्ट होना चाहिए, लेकिन भालू इंगित करता है: * के लिए खोज। केवल निर्देशिकाओं या सभी निर्देशिकाओं की समान खोज नहीं करता है। निर्देशिका के नाम में एक्सटेंशन हो सकते हैं और फाइलों में एक्सटेंशन नहीं होना चाहिए। यदि आप पूरी तरह से सब कुछ खोज करना चाहते हैं।
स्कॉट ई

6

आप कुछ और डाउनलोड करने की आवश्यकता के बिना PowerShell का उपयोग कर सकते हैं। यह v2.0 और बाद में काम करेगा:

$ReferenceAccountName = 'DOMAIN\Username'
[string[]]$SearchDirectories = @('X:\SomeDirectory', 'F:\AnotherDirectory')

foreach ($RootDir in $SearchDirectories) {
    $DirACL = Get-Acl -Path $RootDir
    foreach ($ACL in $DirACL.Access){
        if ($ACL.IdentityReference -like $ReferenceAccountName){
            Write-Output $RootDir
        }
    }
    foreach ($Directory in (Get-ChildItem -Path $RootDir -Recurse | `
                            Where-Object -FilterScript {$_.Attributes `
                            -contains 'Directory'})){
        $DirACL = Get-Acl -Path $Directory.FullName
        foreach ($ACL in $DirACL.Access){
            if ($ACL.IdentityReference -like $ReferenceAccountName){
                Write-Output $Directory.FullName
            }
        }
    }
}

यह PowerShell v3 और के साथ उपलब्ध के रूप में साफ नहीं है, लेकिन यह काम करेगा। यह स्ट्रिंग प्रारूप में मिली निर्देशिकाओं की एक सूची को आउटपुट करेगा।

आप आसानी से उन्हें ऑब्जेक्ट के रूप में आउटपुट कर सकते हैं और उनके साथ काम करना जारी रख सकते हैं (उन्हें एक CSV फ़ाइल में निर्यात करें, प्रविष्टियों को हटा दें जैसा कि आप उन्हें ढूंढते हैं, जानकारी के साथ एक टिकट अपडेट करें ... आदि) लिखें- के इनपुट ऑब्जेक्ट में हेरफेर करके आउटपुट कॉल।


क्या विरासत में मिली अनुमतियों को "बहिष्कृत" करना भी संभव होगा? (यानी हर फ़ोल्डर को खोजना, जहाँ "DOMAIN \ Username" को स्पष्ट तरीके से जोड़ा गया हो?
dognose

1
हाँ, आप कर सकते हैं:if ($ACL.IdentityReference -like $ReferenceAccountName -and !$ACL.IsInherited){
15:27 पर

3

मुझे अपने प्रश्न का हल मिल गया। यह, मेरा मानना ​​है, बहुत सरल और साफ है। आपको केवल उप-कुंडल स्थापित करना होगा और कमांड प्रॉम्प्ट से एक पंक्ति को चलाना होगा।

आप यहां सबिनकल डाउनलोड कर सकते हैं । हालाँकि यह आधिकारिक तौर पर केवल Windows 2000, Windows XP और Windows Server 2003 पर समर्थित है, लेकिन इसे Windows Vista, Windows Server 2008 और Windows 7 पर भी काम करना चाहिए।

अगला, आप कमांड प्रॉम्प्ट से निम्नलिखित चलाते हैं:

subinacl /testmode /noverbose /outputlog=c:\TEXTFILENAME.TXT /subdirectories=directoriesonly X:\*.* /findsid=DOMAIN\username

जहां X: वह ड्राइव है जिसे आप स्कैन कर रहे हैं और उपयोगकर्ता नाम वह उपयोगकर्ता है जिसकी अनुमति आप सूचीबद्ध करना चाहते हैं। स्कैनिंग में कुछ समय लग सकता है और आपको TEXTFILENAME.TXT में परिणाम मिलेंगे।

यदि आप स्विच / नोवरबॉस का उपयोग करते हैं, तो आपको एक्सेस अनुमतियों की एक कॉम्पैक्ट सूची मिलती है - मूल रूप से आप देखते हैं कि उपयोगकर्ता को कौन सी निर्देशिकाओं तक पहुंच होती है (एक्सेस मास्क और कुछ अन्य सामान जो कभी-कभी काम में आते हैं)।

मैंने सूची को आयात करने के लिए OpenOffice Calc का उपयोग किया और फिर एक कस्टम फ़िल्टर लागू किया और केवल उन लाइनों के लिए फ़िल्टर किया, जो + FILE से शुरू होती हैं । इन पंक्तियों में वे निर्देशिकाएँ होती हैं जिनके लिए उपयोगकर्ता की पहुँच होती है। यह है कि आप केवल प्रासंगिक जानकारी के साथ समाप्त होने वाले सरल टूल का उपयोग कर रहे हैं।

चूंकि विरासत को अक्सर मूल निर्देशिकाओं में सक्षम किया जाता है, अनुमतियों को समायोजित करने के लिए आपको जिन निर्देशिकाओं की यात्रा करने की आवश्यकता हो सकती है उनकी वास्तविक संख्या आमतौर पर सूची की तुलना में काफी कम होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.