कमांड लाइन से "यह एक्सेस कंट्रोल लिस्ट कैनोनिकल फॉर्म में नहीं है" त्रुटियों को ठीक करता है


9

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

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

कहीं एक स्क्रिप्ट या प्रोग्राम है जो यह स्वचालित रूप से करेगा? मुझे लगता है कि icaclsएक /verifyपैरामीटर है, लेकिन यह सिर्फ मुझे दिखाता है कि एक फ़ाइल / फ़ोल्डर पर ACL दूषित हैं। यह कुछ भी ठीक करने की पेशकश नहीं करता है।

जवाबों:


6

आप किसी अन्य फ़ाइल के acl के साथ कर्ल फ़ाइल acl को ओवरराइड करने के लिए एक साधारण PowerShell स्क्रिप्ट का उपयोग करने का प्रयास कर सकते हैं: get-acl path_to_file_with_known_good_acl | set-acl -path path_to_corrupt_file


अन्य जवाब पता चलता है कि तुम सिर्फ कर सकता है get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
binki

5

मैं आखिरकार इसके लिए एक स्वचालित निर्धारण का पता लगाने में सक्षम था। जब आप PowerShell के Set-Aclcmdlet को कॉल करते हैं , तो यह ACL को सही ढंग से री-ऑर्डर करेगा:

$path = C:\Path\To\Item\With\Borked\ACL
$acl = Get-Acl $path
Set-Acl $path $acl

बेशक, यह उस निर्देशिका का जनक हो सकता है जिसे गड़बड़ किया गया है, इसलिए आपको अपराधी को खोजने के लिए कुछ ट्रैवर्सिंग करना चाहिए। icacls C:\Path\To\Item\With\Suspect\CL /verifyअगर किसी चीज की मरम्मत की जरूरत है तो उसका पता लगाने के लिए उपयोग करें ।

हमारे वातावरण में, साइगविन संभावित अपराधी है: जब यह निर्देशिका बनाता है, तो यह फ़ाइल सिस्टम सुरक्षा का प्रबंधन करने के लिए विंडोज पर निर्भर होने के बजाय, उन पर POSIX- शैली की अनुमति देना पसंद करता है।


1
ट्रिक के लिए धन्यवाद। मुझे आज समस्या थी और फिक्सिंग को स्वचालित करने के लिए एक छोटी सी शक्तियां लिखीं
Julien Roncaglia

1

मेरे लिए दोहरी मुसीबत थी: गैर-विहित ACL + गलत नियम जिसे NULL SID (WTH) के लिए घोषित किया गया था। मेरा सुझाव है कि यह gg के साइबर वर्जन के कारण हुआ था।

वैसे भी, मेरे मामले में उसी एसीएल को दोबारा लागू करने का कोई मतलब नहीं था:

> Set-Acl $f.FullName (Get-Acl $f.FullName)
> (Get-Acl $f.FullName).AreAccessRulesCanonical
False
> (Get-Acl $f.FullName).GetAccessRules($True, $False, [System.Security.Principal.NTAccount]) | ? {$_.Identityeference.Value -eq "NULL SID" }
FileSystemRights  : WriteExtendedAttributes, ExecuteFile, DeleteSubdirectoriesAndFiles, ReadPermissions
AccessControlType : Deny
IdentityReference : NULL SID
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

इसलिए मुझे स्पष्ट रूप से ACL को एक सही फ़ाइल से लागू करना होगा, जैसा कि @mschneider द्वारा बताया गया है


1

icacls इसे भी ठीक कर सकते हैं:

c:\> accesschk -q FILE
Error: FILE has a non-canonical DACL:
   Explicit Deny after Explicit Allow

c:\> icacls FILE /t /q /c /reset
Successfully processed 1 files; Failed processing 0 files

c:\> accesschk -q FILE
.. OK

अन्य आसान कमांड, chmod 0777 FILE के बराबर, chown root FILE

  icacls  FILE /t /q /c /grant    :r Everyone:F
  icacls  FILE /t /q /c /grant    :r Everyone:F /inheritance:r
  icacls  FILE /t /q /c /setowner Administrators

1

Cygwin का उपयोग करते समय यह समस्या प्रकट होती है। यह Windows ACL के शीर्ष पर POSIX फ़ाइल अनुमतियों का अनुकरण करने का प्रयास करता है। यह अक्सर गैर-विहित ACLs की ओर जाता है, जो कानूनी हैं लेकिन explorer.exe द्वारा ठीक से निपटा नहीं जा सकता

आप "noacl" विकल्प के साथ बढ़ते हुए इस समस्याग्रस्त अनुकरण को बंद कर सकते हैं, जैसे /etc/fstab:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

-1
  1. IIS में समस्या वाले फ़ोल्डर पर राइट-क्लिक करें
  2. अनुमतियाँ संपादित करें ...
  3. सुरक्षा टैब का चयन करें
  4. 'संपादित करें' बटन पर क्लिक करें और सहेजें (यह एसएल को फिर से क्रम में लगता है)
  5. सभी पॉपअप की पुष्टि करें

यह समाधान प्रश्न में पहले ही उल्लेख किया गया है। हालाँकि लेखक स्वचालित समाधान के लिए कहता है।
13

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