उपयोगकर्ता निर्देशिकाओं पर अनुमतियाँ सेट करने के लिए ICACLS का उपयोग करना


16

मैं उपयोगकर्ता निर्देशिकाओं पर अनुमतियाँ रीसेट करने का प्रयास कर रहा हूं और अपनी स्क्रिप्ट के अंतिम चरण में थोड़ी परेशानी हो रही है। मेरी स्क्रिप्ट मूल रूप से संपूर्ण उपयोगकर्ता निर्देशिका का स्वामित्व लेती है, निर्देशिका के लिए सभी फ़ाइलों और फ़ोल्डरों पर अनुमतियों को रीसेट करती है, स्पष्ट रूप से मुझे जिन अनुमतियों की आवश्यकता होती है, उन्हें मूल फ़ोल्डर से अनुमतियों के सभी वंशानुक्रम को रोक देता है, सभी फ़ाइलों के लिए सही स्वामी (निर्दिष्ट उपयोगकर्ता) सेट करता है। और फ़ोल्डर्स, और फिर मैं खुद को दी गई अनुमति को हटा देता हूं ताकि मैं फाइलों पर काम कर सकूं। मुझे सभी फ़ाइलों और सबफ़ोल्डरों से खुद को निकालने के लिए इस अंतिम चरण की आवश्यकता है, लेकिन फिलहाल यह मुझे% userDir% से हटा देता है और नीचे दी गई सभी अनुमतियों को छोड़ देता है। यह ICACLS में एक स्पष्ट कमी है। किसी को भी यह पूरा करने के लिए किसी भी अन्य तरीके से पता है?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"

मैं Microsoft द्वारा बनाई गई असमर्थित XCACLS.vbs स्क्रिप्ट के साथ खेल रहा हूं और मुझे अपनी स्क्रिप्ट की अंतिम पंक्ति के लिए नियोजित करने का सौभाग्य मिला है। इस ICACLS के बजाय "E: \ Home निर्देशिकाएँ \% userDir%" / "MYDOMAIN \% उपयोगकर्ता नाम% निकालें" मैंने इसे cscript.exe xcacls.vbs "e: \ Test" / E / R "MYDOMAIN \" के साथ बदल दिया है उपयोगकर्ता नाम% "यह काम करता है, लेकिन मैं XCACLS.vbs के उपयोग से बचना चाहूंगा क्योंकि इसमें गंभीर प्रदर्शन मुद्दे हैं। कोई अन्य विचार?
पीके।

जवाबों:


18

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

यदि आपको उपयोगकर्ताओं को शीर्ष-स्तरीय "E: \ Home निर्देशिकाएँ" फ़ोल्डर की सामग्री को सूचीबद्ध करने में सक्षम होना चाहिए, उदाहरण के लिए, निम्नलिखित अनुमति पर विचार करें:

  • सिस्टम - पूर्ण नियंत्रण - इस फ़ोल्डर, उप-फ़ोल्डर और फ़ाइलों पर लागू होता है
  • BUILTIN \ प्रशासक - पूर्ण नियंत्रण - इस फ़ोल्डर, उप-फ़ोल्डर और फ़ाइलों पर लागू होता है
  • BUILTIN \ Authenticated उपयोगकर्ता - पढ़ें और निष्पादित करें - केवल इस फ़ोल्डर पर लागू होता है

अंतिम अनुमति सबफ़ोल्डर्स में नीचे नहीं मिलती है। प्रत्येक सबफ़ोल्डर में, वंशानुक्रम सक्षम रहता है और आप केवल "संशोधित" या "पूर्ण नियंत्रण" अधिकारों के साथ उपयोगकर्ता को निर्दिष्ट करते हैं (यह निर्भर करता है कि आप उपयोगकर्ताओं को उनके घर निर्देशिका के अंदर अनुमतियाँ सेट करने में सक्षम होने के बारे में कैसा महसूस करते हैं)। (आमतौर पर मैंने गैर-"उन्नत" सुरक्षा गुण पत्रक में "प्रमाणित उपयोगकर्ता" जोड़कर, "पढ़ें" और "पढ़ें और निष्पादित करें" चेक बॉक्स को अनचेक करके उस अंतिम अनुमति को सेट किया है। मैं फिर "उन्नत" संवाद में आगे बढ़ता हूं और परिवर्तन करता हूं। "इस फ़ोल्डर में केवल" के लिए "एसीई के लिए सेटिंग" पर लागू करें। यह सेट करने के लिए क्लिकों की संख्या के संदर्भ में सबसे आसान तरीका है।)

फिर, आपकी स्क्रिप्ट बन जाती है:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

मुझे दृढ़ता से संदेह है कि "प्रामाणिक उपयोगकर्ता" की अनुमति के अतिरिक्त मैंने w / विरासत के ऊपर वर्णित वर्णन किया है "यह फ़ोल्डर केवल" आपको वह देगा जो आप कार्यक्षमता में देख रहे हैं और आपको भविष्य का लचीलापन देगा यदि आप इसका पता लगाते हैं आपको भविष्य में सभी उपयोगकर्ता होम निर्देशिकाओं को इनहेरिट करने की आवश्यकता हो सकती है।

यह उपयोगकर्ता के घर निर्देशिकाओं के लिए मेरा SOP है, "मेरे दस्तावेज़", "डेस्कटॉप", आदि फ़ोल्डर, और रोमिंग प्रोफ़ाइल प्रोफ़ाइल निर्देशिकाओं को पुनः निर्देशित करने के लिए। यह बहुत अच्छा काम करता है।

संपादित करें

पुन: BUILTIN \ एडमिनिस्ट्रेटर एक्सेस के बारे में आपकी टिप्पणी

मेरे पास वर्षों से BUILTIN \ एडमिनिस्ट्रेटर एक्सेस देने के बारे में मेरे लोगों के साथ विभिन्न तर्क हैं, और मेरा लेना यह है:

  • यदि आप उनकी फ़ाइलों तक पहुँच सकते हैं, तो उपयोगकर्ता समस्याओं का एक निश्चित वर्ग हल करना आसान है। यह "स्वामित्व लेने" के लिए एक दर्द है और काफी धीमी गति से हो सकता है यदि बड़ी संख्या में फाइलें मौजूद हैं, तो भी।

  • जैसा कि आपने ICACLS के साथ देखा है, BUILTIN \ प्रशासक "स्वामित्व" (इसके अलावा "इसे") असाइन कर सकते हैं, इसलिए पहली बार में BUILTIN \ एडमिनिस्ट्रेटर के लिए फ़ाइलों को सुलभ नहीं होने से कोई "सुरक्षा" नहीं है।

  • जब तक आप ऑडिटिंग का उपयोग कर रहे हों (और संभावित रूप से बड़ी संख्या में झूठी पॉज़िटिव प्रविष्टियों के माध्यम से शिफ्ट हो रहे हों) तब कोई ऑडिट ट्रेल नहीं होगा जब एक BUILTIN \ एडमिनिस्ट्रेटर उपयोगकर्ता उन फ़ाइलों का स्वामित्व लेता है जिन्हें वे एक्सेस नहीं करना चाहिए, उन्हें कॉपी करना और फिर फ़ाइलों को उनके "उचित" स्वामी और अनुमति पर वापस लौटाता है।

  • Microsoft दुनिया में, एनक्रिप्टिंग फाइलसिस्टम (EFS) का मतलब अनधिकृत BUILTIN \ एडमिनिस्ट्रेटर को होने से रोकने की समस्या को हल करना है। NTFS ACL उस समस्या को हल नहीं करते हैं। (जाहिर है, ईएफएस शहर का एकमात्र शो नहीं है। एन्क्रिप्शन नेटवर्क नेटवर्क की पहुंच को सीमित करने के लिए वास्तविक उत्तर है "समस्या कोई फर्क नहीं पड़ता कि आप इसे कैसे स्लाइस करते हैं।"

मेरे मन में, उपयोगकर्ता के घर निर्देशिकाओं (और वास्तव में, किसी भी फ़ोल्डर) तक पहुंच के साथ BUILTIN \ प्रशासकों को निर्दिष्ट नहीं करने का मतलब है कि आप वास्तविक सुरक्षा प्रदान कर रहे हैं ताकि कोई वास्तविक सुरक्षा से कम समय प्रदान करने के लिए जटिलताएं और समय की आवश्यकता हो। "क्योंकि यह सुरक्षा की झूठी भावना प्रदान करता है जहां कोई नहीं है)।

मैंने तर्क के माध्यम से लोगों के साथ तर्क जीतने की कोशिश करना छोड़ दिया है। यह कुछ लोगों के साथ एक भावनात्मक मुद्दा लगता है। यह मूर्खों की तरह है "इनकार / प्राप्त करें" एसीई जो कुछ विशेषाधिकार प्राप्त समूहों को उपयोगकर्ता मेलबॉक्स खोलने से रोकने के लिए किसी Exchange संगठन की जड़ में रखा जाता है। यह कोई वास्तविक सुरक्षा प्रदान नहीं करता है (क्योंकि w / o ऑडिटिंग एसीई को आवश्यक रूप से हटा / पुन: लागू कर सकता है), सुरक्षा की झूठी भावना, और वास्तविक समस्याओं को हल करते समय रास्ते में हो जाता है।

भले ही आप BUILTIN \ एडमिनिस्ट्रेटर्स के बारे में मेरा तर्क पसंद नहीं करते हों, लेकिन जहाँ आप "यह फ़ोल्डर केवल" इनहेरिटेंस का उपयोग करके वंशानुक्रम पदानुक्रम को बरकरार रखना चाहते हैं, जहाँ उपयुक्त हो। अनुमति पदानुक्रम में विरासत को अवरुद्ध करना एक निश्चित संकेत है कि डिजाइन के बारे में कुछ "टूटा हुआ" (उल्टा, आदि) है।


1
क्या आप BUILTIN \ Administrators को संपूर्ण निर्देशिका संरचना तक पूर्ण पहुँच देने की सलाह देते हैं? मेरी राय है कि हम (प्रशासक) वास्तव में स्वामित्व लेने के बिना हर किसी की उपयोगकर्ता निर्देशिकाओं / प्रोफाइल तक पूरी पहुंच नहीं रख सकते।
पीके।

+1, सुरक्षा के झूठे अर्थों के बारे में बिंदुओं से प्यार ...
DCookie

1

सबसे पहले, अपनी स्क्रिप्ट के लिए धन्यवाद अंश। मैं एक ही चीज पर काम कर रहा हूं लेकिन एक अलग जगह पर अटक गया है। मेरे SBS 2008 बॉक्स पर, नीचे दिया गया कोड मेरे लिए काम करता है (यह मानते हुए कि यह ऊंचा चला है, बिल्कुल)। मैंने OS के द्वारा बनाए गए एक बिलकुल नए यूजर (डिफ़ॉल्ट) यूजर फोल्डर का एक आइकसील% userdir% / t किया, और इस लिपि को चलाने के बाद icacls% userdir% / t की तुलना एक फोल्डर से की और यह सभी "O O और" जैसा दिखता है। मैं "सही हूं। उम्मीद है कि यह आपके लिए भी काम करेगा।

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

सादर,

 -d

सुनिश्चित करें कि आप अपनी स्क्रिप्ट की अंतिम पंक्ति को सत्यापित करते हैं। यह मेरा अनुभव था कि ICACLS विरासत में मिली अनुमतियों को सफलतापूर्वक नहीं हटाएगा। यह "MYDOMAIN \% उपयोगकर्ता नाम%" फ़ोल्डर में प्रविष्टि को हटा देता है, लेकिन सबफ़ोल्डर्स की अनुमतियाँ अछूती हैं। इसलिए, "MYDOMAIN \% उपयोगकर्ता नाम%" के पास अभी भी सबफ़ोल्डर्स तक पहुंच होगी यदि सीधे एक्सेस किया जाता है, तो आप उन्हें ब्राउज़ करने में सक्षम नहीं होंगे। XCACLS.vbs ने मेरे लिए इसका समाधान किया। cscript.exe xcacls.vbs "e: \ Test" / E / R "MYDOMAIN \% उपयोगकर्ता नाम%"
.k

यही वह जगह है जहाँ मेरे संपादन में भाग आया। कर / विरासत: मूल फ़ोल्डर पर आर, मैं एक ही समस्या थी। लेकिन यह कर रहा है मूल फ़ोल्डर में चाल करने के लिए लग रहा था। उपर्युक्त चलाने के बाद,% userdir% में% username%, सिस्टम और प्रशासक हैं, लेकिन इसके अंतर्गत सब कुछ सिर्फ% username% और प्रणाली है, जो कि कैसे सर्वर ने उन्हें शुरू में सेट किया है - बस जो मैं चाहता था।

-1

यदि तकनीकी रूप से यह संभव है तो मुझे अपनी आवश्यकता के अनुसार इस आदेश को संशोधित करने के लिए आपकी सहायता की आवश्यकता है।

यहाँ संरचना है

\ सर्वर \ जनक \ UserA \ यूनिक्स

\ सर्वर \ जनक \ UserB \ यूनिक्स

\ Server \ Parent \ UserC \ unix .... और इतने पर।

प्रत्येक उपयोगकर्ता $ फ़ोल्डर के तहत "यूनिक्स" नामक एक फ़ोल्डर है।

मैं "पैरेंट" फ़ोल्डर (उपरोक्त संरचना के रूप में लिए गए नाम) के तहत सूचीबद्ध सभी उपयोगकर्ता $ फ़ोल्डरों पर पूर्ण अनुमति के साथ एक उपयोगकर्ता या समूह जोड़ना चाहता हूं, लेकिन केवल "यूनिक्स" फ़ोल्डर पर अनुमतियों को बाहर करना चाहता हूं।

मेरे पास यह आदेश है जो आवश्यक अनुमतियों की प्रयोज्यता के परिप्रेक्ष्य में मेरे लिए ठीक काम करता है लेकिन मैं इसमें शामिल नहीं कर सकता।

icacls "\\ Server \ Parent \ UserA" / अनुदान Domain \ Group: (OI) (CI) F / T

क्या आप इस परिदृश्य में मार्गदर्शन कर पाएंगे?


1
हैलो और सर्वर दोष में आपका स्वागत है! कृपया उत्तर के माध्यम से प्रश्न न पूछें। अपना अनुरोध पोस्ट करने के लिए प्रश्न पूछें बटन का उपयोग करें ।
श्री शुनज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.