जवाबों:
विस्टा के रूप में, cacls
पदावनत किया जाता है। यहाँ हेल्प लाइन का पहला जोड़ा है:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
आपको icacls
इसके बजाय उपयोग करना चाहिए । यह आप जॉन को D:\test
फ़ोल्डर और उसके सभी सबफ़ोल्डर्स पर पूर्ण नियंत्रण प्रदान करते हैं :
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
एमएस प्रलेखन के अनुसार:
F
= पूर्ण नियंत्रणCI
= कंटेनर इनहेरिट - यह ध्वज इंगित करता है कि अधीनस्थ कंटेनर इस एसीई को विरासत में प्राप्त करेंगे।OI
= ऑब्जेक्ट इनहेरिट - यह ध्वज इंगित करता है कि अधीनस्थ फाइलें एसीई को विरासत में मिलेंगी।/T
= मौजूदा फ़ाइलों और उप-फ़ोल्डरों के लिए पुनरावर्ती लागू करें। ( OI
और CI
केवल नई फ़ाइलों और उप-फ़ोल्डरों पर लागू होता है)। साभार: @AlexSpence द्वारा टिप्पणीपूर्ण दस्तावेज़ के लिए, आप icacls
बिना किसी तर्क के " " चला सकते हैं या Microsoft दस्तावेज़ यहाँ और यहाँ देख सकते हैं
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
आप ICACLS का उपयोग भी कर सकते हैं।
किसी फ़ोल्डर में उपयोगकर्ता समूह को पूर्ण नियंत्रण देने के लिए:
>icacls "C:\MyFolder" /grant Users:F
(यदि आपको अपने IIS को विशिष्ट फ़ोल्डर में R / W फ़ाइलों की क्षमता है, तो IIS उपयोगकर्ताओं को अनुमति संशोधित करने की अनुमति देने के लिए C:\MyFolder
):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
यदि आप ICACLS / करते हैं? आप सभी उपलब्ध विकल्पों को देख पाएंगे।
cacls
गया है, वह icacls का उपयोग करने का और भी कारण है ।
/grant Users:(OI)(CI)F
इस्तेमाल नहीं किया गया
Users
कुछ और के साथ बदलने की आवश्यकता है या नहीं? के अनुसारicacls "C:\MyFolder" /grant Users:F
एक कमांड प्रॉम्प्ट खोलें, फिर इस कमांड को निष्पादित करें:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
पूर्ण पहुँच देता है।
/q /c /t
सबफ़ोल्डर्स के लिए अनुमतियाँ लागू करता है।
नोट: कभी-कभी "व्यवस्थापक के रूप में चलाएं" मदद करेगा।
cacls
कमांड का उपयोग करें । जानकारी यहाँ देखें ।
CACLS फ़ाइलें / e / p {USERNAME}: {PERMISSION}
कहाँ पे,
/ p: नई अनुमति सेट करें
/ e: अनुमति को संपादित करें और पुरानी अनुमति को बनाए रखें क्योंकि यह ACL को प्रतिस्थापित करने के बजाय संपादित करता है।
{USERNAME}: उपयोगकर्ता का नाम
{PERMISSION}: अनुमति हो सकती है:
आर - पढ़ें
डब्ल्यू - लिखें
सी - बदलें (लिखें)
एफ - पूर्ण नियंत्रण
उदाहरण के लिए रॉकी फुल (एफ) नियंत्रण निम्नलिखित कमांड के साथ (विंडोज कमांड प्रॉम्प्ट पर टाइप करें):
C:> CACLS फ़ाइलें / e / p रॉकी: f
निम्नलिखित कमांड टाइप करके पूरी मदद पढ़ें:
C:> कैकल्स /?
cacls
प्रासंगिक है; यह अभी भी उपलब्ध है Windows 10
; Microsoft पॉवर्सशेल cmd.exe
के पक्ष में भी चित्रित करेगा ।
cmd.exe
पदावनत नहीं किया जा सकता है और होने की संभावना नहीं है, इसलिए यह icacls
बिल्कुल विपरीत के पक्ष में नहीं है ।
cacls.exe
। न ही मैंने उल्लेख किया है कि cmd.exe
पहले से ही पदावनत है। मुझे लगता है कि लोगों को कम से कम उच्च संस्करणों में इसकी उपलब्धता के बारे में पता होना चाहिए, यहां तक कि केवल पिछड़े-अनुकूलता या किसी अन्य कारण से।
मैं नीचे दिए गए तरीके की कोशिश करता हूं और यह मेरे लिए काम करता है:
1. खुला cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4।del *.* /S /Q
ताकि फाइलें मेरी खुद की पहुंच बन सकें और यह "डिलीट" करने के लिए असाइन हो जाए और फिर मैं फाइलों और फ़ोल्डरों को डिलीट कर सकूं।
भ्रष्ट अनुमतियाँ: किसी फ़ोल्डर और उसके उप-ऑब्जेक्ट्स तक पहुँच प्राप्त करना
हालाँकि, अधिकांश प्रश्नों के उत्तर में पोस्ट किए गए उत्तरों में कुछ योग्यता होती है, लेकिन उनमें से कोई भी IMHO पूर्ण समाधान नहीं देता है। निम्न (हो सकता है) विंडोज 7 के लिए एक सही समाधान है यदि आप दूषित अनुमति सेटिंग्स द्वारा एक फ़ोल्डर से बाहर कर रहे हैं:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
के लिए Windows 10 उपयोगकर्ता / सिड के बाद निर्दिष्ट किया जाना चाहिए /remove:d
विकल्प:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
।
नोट :
आदेश निर्दिष्ट निर्देशिका पर लागू होता है।
उपयोगकर्ता को "हर कोई" निर्दिष्ट करना संभव विस्तृत अनुमति देता है, क्योंकि इसमें हर संभव उपयोगकर्ता शामिल है।
विकल्प "/ निकालें: d" किसी भी स्पष्ट DENY सेटिंग्स को हटाता है जो मौजूद हो सकती है, क्योंकि वे सभी ALLOW सेटिंग्स को ओवरराइड करती हैं: एक नई ALLOW सेटिंग बनाने के लिए एक आवश्यक प्रारंभिक। यह केवल एक सावधानी है, क्योंकि अक्सर कोई डेनी सेटिंग मौजूद नहीं है, लेकिन खेद से बेहतर सुरक्षित है।
विकल्प "/ अनुदान" एक नई ALLOW सेटिंग बनाता है, एक स्पष्ट अनुमति जो किसी भी और सभी स्पष्ट ALLOW सेटिंग्स की जगह लेती है (": r")।
"एफ" पैरामीटर (यानी बनाई गई अनुमति) यह पूर्ण नियंत्रण का अनुदान देता है।
"/ T" पैरामीटर पुनरावृत्ति जोड़ता है, इन परिवर्तनों को निर्दिष्ट निर्देशिका (यानी फ़ाइलों और सबफ़ोल्डर्स) में सभी वर्तमान उप-ऑब्जेक्ट्स पर लागू करता है, साथ ही साथ फ़ोल्डर भी।
"(OI)" और "(CI)" पैरामीटर भी पुनरावृत्ति जोड़ते हैं, इन परिवर्तनों को बाद में बनाई गई उप-वस्तुओं में लागू करते हैं।
।
ADDENDUM (2019/02/10) -
ऊपर दी गई विंडोज 10 कमांड लाइन कृपया आज मुझे सुझाई गई, इसलिए यहां यह है। मुझे इसका परीक्षण करने के लिए विंडोज 10 नहीं मिला है, लेकिन कृपया इसे आज़माएं अगर आपके पास है (और फिर आप कृपया नीचे एक टिप्पणी पोस्ट करेंगे )।
परिवर्तन केवल पहले चरण के रूप में DENY सेटिंग को हटाने की चिंता करता है। वर्तमान में कोई भी DENY सेटिंग मौजूद नहीं हो सकती है, इसलिए उस विकल्प से कोई फर्क नहीं पड़ सकता है। मेरी समझ, विंडोज 7 पर है, कि आपको एक उपयोगकर्ता को निर्दिष्ट / हटाने के बाद निर्दिष्ट करने की आवश्यकता नहीं है : d लेकिन मैं इसके बारे में गलत हो सकता हूं!
।
ADDENDUM (2019/11/21) -
उपयोगकर्ता एस्टार्क कमांड को भाषा स्वतंत्र होने के लिए * एस-1-1-0 शब्द के साथ हर किसी को बदलने की सिफारिश करता है। मेरे पास केवल विंडोज की एक अंग्रेजी स्थापित है, इसलिए मैं इस प्रस्ताव का परीक्षण नहीं कर सकता, लेकिन यह उचित लगता है।
Invalid parameter "/remove:d"
मैं कुछ समय के
लिए इससे
जूझता रहा और केवल इस सूत्र में जवाब जोड़कर मेरे लिए काम किया (विंडोज 10 पर): 1. ओपन cmd या पॉवरशेल और फ़ाइलों के साथ फ़ोल्डर में जाएं 2. टेकऑन / आर / एफ ।
3. icacls * / टी / अनुदान दान: एफ
सौभाग्य!
बस इस मामले में कोई और है जो इस पृष्ठ पर ठोकर खाता है, यदि आप एक ही आदेश में विभिन्न अनुमतियों को एक साथ स्ट्रिंग करना चाहते हैं, तो मैंने इसका उपयोग किया:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
विभिन्न अनुमतियों के लिए सीएसवी स्ट्रिंग पर ध्यान दें।
खातों को प्रावधान और बनाने के लिए एक एक्सेल vba स्क्रिप्ट के साथ। मुझे फ़ोल्डर और सबफ़ोल्डर्स को पूर्ण अधिकार अनुमतियाँ प्रदान करने की आवश्यकता थी जो हमारे नए उपयोगकर्ता के लिए हमारे प्रशासक 'x' खाते का उपयोग करके उपकरण द्वारा बनाए गए थे।
cacls कुछ इस तरह दिखता है: cacls \ FileServer \ Users \ Username / e / g डोमेन \ उपयोगकर्ता नाम: C
मुझे इस कोड को विंडोज 7 और उससे आगे स्थानांतरित करने की आवश्यकता थी। मेरा समाधान निकला:
icacls \ FileServer \ Users \ Username / अनुदान: r डोमेन \ उपयोगकर्ता नाम: (OI) (CI) F / t
/ अनुदान: आर - निर्दिष्ट उपयोगकर्ता अभिगम अधिकार। स्प्रेड्स पहले दी गई स्पष्ट अनुमतियों को प्रतिस्थापित करते हैं। बिना: r, अनुमतियाँ किसी भी पहले दी गई स्पष्ट अनुमतियों में जोड़ी जाती हैं
(OI) (CI) - यह फोल्डर, सबफोल्डर्स और फाइल्स।
एफ - पूर्ण प्रवेश
/ t - फ़ाइलों / निर्देशिकाओं से मिलान करने के लिए सभी सबफ़ोल्डर्स को पार करें।
इसने मुझे इस सर्वर पर एक फ़ोल्डर दिया था जो उपयोगकर्ता केवल उस फ़ोल्डर को देख सकता था और सबफ़ोल्डर बना सकता था, जिससे वे फ़ाइलों को पढ़ और लिख सकते थे। साथ ही नए फोल्डर बनाएं।
XCACLS.VBS एक बहुत ही शक्तिशाली स्क्रिप्ट है जो ACL जानकारी को बदल / संपादित करेगी। c: \ windows \ system32 \ cscript.exe xcacls.vbs सभी स्विच और विकल्पों को वापस करने में मदद करता है।
आप Microsoft समर्थन पृष्ठ से आधिकारिक वितरण प्राप्त कर सकते हैं
XCACLS.VBS
पाया जा सकता है?
थोक फ़ोल्डर निर्माण और अनुदान अनुमति नीचे की स्क्रिप्ट स्क्रिप्ट का उपयोग करके मुझे काम करती है।
Import-Csv "D:\Scripts\foldernames.csv" | foreach-object {
$username = $_.foldername
# foldername is the header of csv file
$domain = “example.com”
$folder= "D:\Users"
$domainusername = $domain+“\”+$username
New-Item $folder\$username –Type Directory
Get-Acl $folder\$username
$acl = Get-Acl $folder\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder\$username $acl
}
नोट: आपको सीएसवी फ़ाइल में एक ही डोमेन उपयोगकर्ता नाम बनाना होगा अन्यथा आपको अनुमति मुद्दे मिलेंगे
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
उत्कृष्ट बिंदु क्लैनी डैरी
मेरे पास कैकल्स का उपयोग करने के लिए बहुत सारी स्क्रिप्ट थीं मैं उन्हें आइकल्स पर ले जाता हूं कि रूट माउंट वॉल्यूम के उदाहरण को बदलने के लिए मुझे कभी भी स्क्रिप्ट नहीं मिली: d: \ datafolder। मैंने अंत में नीचे दी गई स्क्रिप्ट को क्रेट किया, जो एक अस्थायी ड्राइव के रूप में वॉल्यूम को मापता है और फिर सेकंड को लागू करता है। फिर इसे अनमाउंट कर देता है। यह एकमात्र तरीका है जो मैंने पाया कि आप रूट माउंट सुरक्षा को अपडेट कर सकते हैं।
1 को एक अस्थायी फ़ाइल के लिए GUID माउंट हो जाता है, फिर एक अस्थायी ड्राइव के रूप में वॉल्यूम माउंट करने के लिए GUID को पढ़ता है X: सेकंड को लागू करता है और फिर परिवर्तनों को लॉग करता है: केवल वॉल्यूम को X से हटाता है: ड्राइव किया हुआ माउंटेड फ़ोल्डर बदल नहीं जाता है या अन्य बाधित नहीं होता है तब लागू सेक।
यहाँ मेरी स्क्रिप्ट का नमूना है:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt
if exist x:\*.* mountvol X: /d**
मैं प्रशासक हूं और कुछ स्क्रिप्ट ने एक निर्देशिका में सभी फाइलों और सबफ़ोल्डर्स पर मेरे नाम पर "इनकार" अनुमति दी है। icacls "D:\test" /grant John:(OI)(CI)F /T
कमांड को निष्पादित करने से काम नहीं चला, क्योंकि ऐसा लगता था कि इस सूची से मेरा नाम "अधिकार" नहीं हटा दिया गया था।
मेरे लिए काम करने वाली एकमात्र चीज़ icacls "D:\test" /reset /T
कमांड के साथ सभी अनुमतियों को रीसेट कर रही है ।
विंडोज़ में "c:>" और ">" के बिना काम करना
उदाहरण के लिए:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls "फ़ाइल या फ़ोल्डर पथ" / e / p उपयोगकर्ता नाम: F
(यह भी त्रुटि 2502 और 2503 को ठीक करता है)
cacls "C: \ Windows \ Temp" / e / p UserName: F
इसी से मेरा काम बना है:
मैन्युअल रूप से उस फ़ोल्डर को खोलें जिसके लिए पहुंच अस्वीकृत है।
उस फ़ोल्डर में निष्पादन योग्य / अनुप्रयोग फ़ाइल का चयन करें।
उस पर राइट-क्लिक करें और Properties-> पर जाएंCompatibility
अब देखें Privilege Levelऔर इसके लिए जाँच करेंRun As Administrator
पर क्लिक करें Change Settings for all users।
समस्या अब हल हो गई है।