كيفية استخدام أمر Icacls لإدارة أذونات الملف

Icacls هو أداة سطر الأوامر في Windows التي يمكن لمسؤولي تكنولوجيا المعلومات استخدامها لتغيير قوائم التحكم في الوصول على الملفات والمجلدات. واحدة من المهام الأكثر شيوعًا التي يقوم بها محترفو تكنولوجيا المعلومات أو مديري النظام هي تعديل الأذونات على خادم الملفات. استخدام أمر icacls هو طريقة فعالة جدًا للقيام بذلك، وسنشرح كيفية استخدام هذا الأمر في هذا الدليل.

كيفية استخدام أمر icacls

بناءً على تجربتي الشخصية، يتم تعديل أذونات الملفات على نظام التشغيل Windows عادة باستخدام مستكشف الملفات. بالنسبة لكثير من محترفي تكنولوجيا المعلومات، من السهل جدًا فتح مستكشف الملفات، تصفح موقع الشبكة الذي يسبب مشاكل لبعض مستخدمي الوصول، وتغيير أذوناتهم من “قراءة” إلى “قراءة/تعديل” أو شيء مماثل. سهل وسريع، وسهل الاستخدام إلى حد ما.

إعلان

ومع ذلك، هناك سيناريوهات لا تُحصى تشمل مستويات متنوعة من النطاق حيث أن واجهة المستخدم الرسومية ليست بالقدر الذي نرغب فيه. إذا كنا سنقوم بتغيير الأذونات على 22 مليون ملف ومجلد، فنريد فعل ذلك بشكل صحيح!

ما هي قائمة تحكم الوصول (ACL)؟

في نظام تشغيل Windows وأنظمة ملفات NTFS، كل كائن ملف (ملف، مجلد) يحتوي على قائمة تحكم في الوصول. تتكون هذه القائمة من مدخلات تحكم في الوصول (ACE). تحتوي القائمة على جميع المستخدمين و/أو كائنات حاويات الأمان الأخرى (مجموعات، إلخ) التي لديها مستوى من الإذن لكائن الملف المذكور.

ما هي مدخلة تحكم في الوصول؟ قليلًا من الصبر…

ما هي مدخلة تحكم في الوصول (ACE)؟

مدخلة تحكم في الوصول (ACE) هي سجل فردي أو قاعدة إذن تتحكم في مستويات الإذن الفردية لمستخدم/مجموعة على كائن ملف. دعني أذكر الأذونات الأساسية على مستوى عالٍ المتاحة لقائمة تحكم في الوصول:

إعلان

  • إذن كامل (F)
  • إذن التعديل (M) (يتضمن ‘الحذف’)
  • إذن القراءة والتشغيل (RX)
  • إذن للقراءة فقط (R)
  • إذن للكتابة فقط (W)

هناك حوالي عشرة أو أكثر من أذونات ‘متقدمة’، ولكن هذه خارج نطاق هذه المقالة.

قيود مستكشف الملفات

الآن، إذا كنت مدير برنامج في مايكروسوفت لمستكشف الملفات (وظيفة لا أحسد عليها بشكل خاص)، هذه هي الميزات التي سأضيفها. وصدقني، لقد أردت أن يضيفوها لعقود!

لنقل أنك تتعامل مع هجرة خادم الملفات من الخادم أ إلى الخادم ب. لقد نسخت بالفعل البيانات إلى الوجهة (الخادم ب). لقد اكتشفت أن ليس كل الأذونات تبدو صحيحة بشكل متكرر.

لذا، تذهب إلى جذر شجرتك، تدخل إلى علامة الأمان ، وتقوم بإجراء بعض التغييرات على قائمة التحكم في الوصول. تحدد الخانة لتعديل كل 22 مليون ملف ومجلد تحت الجذر بشكل متكرر. يبدأ بإجراء التغييرات ثم يطلق بعض نوافذ التأكيد عليك بشأن إجراء تغييرات على ملفات النظام، وملفات القراءة فقط، إلخ.

الإعلان

الآن، ها هو طلبي – في “الساحر” الصغير الذي يمكنهم إنشاؤه، أريد تحديد أن أفترض ببساطة وأنقر على “نعم” في جميع الطلبات للتأكيد. ثم، سيستمر العملية في حال حدوث أخطاء ثم يقدم لي ملخصًا عند الانتهاء، مع رابط لتنزيل الناتج الخام للملف حتى أتمكن من العودة والتحقق من أي أخطاء أو تحذيرات ظهرت.

لا، لا أعرف ما إذا كانت مايكروسوفت ستقدم يومًا ما ميزات مثل هذه الرائعة والقوية والتي يمكن تعيينها ونسيانها كهذه. لذلك، في الوقت الحالي، نلجأ إلى قوة سطر الأوامر والبرمجة النصية. هنا تأتي أهمية أمر icacls المدمج.

فهم بنية icacls

يعتبر بناء جملة icacls فعليًا بسيطًا نسبيًا وسهل التعلم. بشكل أساسي، تستخدم الأمر، ثم تضيف الملف أو المجلد الذي تريد التحقق منه أو تلاعبه، وبعد ذلك الأذونات التي تريد إضافتها/تغييرها/حذفها.

هناك أيضًا مفاتيح سطر الأوامر، بالطبع. سنغطي كل ذلك قريبًا. إليك مثال على ما يحدث عند تشغيل الأمر التالي ثم اسم الملف.

icacls Excellent.txt
Using icacls to view current permissions

سيقوم بإخراج تصريح واحد لكل سطر، لذا باستخدام المثال أعلاه:

  • لديك حساب ‘SYSTEM’ المدمج لديه أذونات الوصول الموروثة (I) والكاملة (F)
  • مجموعة المسؤولين المدمجة لديها نفس الأذونات
  • مجموعة المستخدمين المدمجة لديها أذونات الوصول الموروثة (I)، والقراءة (R)، والتنفيذ (X).

هل يمكنك استخدام icacls في PowerShell؟

حسنًا، كما يمكنك أن ترى من مثالي أعلاه واللقطة، بالتأكيد يمكنك استخدام PowerShell لاستخدام أمر icacls. تحتاج فقط إلى أن تكون على علم ببعض المتغيرات البيئية التي يجب الإشارة إليها بشكل مختلف قليلاً.

أوامر PowerShell المعادلة لعرض وإدارة ACLs على كائنات الملف هي Get-Acl و Set-Acl. يبدو وكأنه فكرة منشور مستقبلية! ?

استخدام icacls لإعداد الأذونات لملف أو مجلد

بما أن أمر icacls مضمّن في نظام التشغيل Windows، يُمكنك البدء في استخدام الأمر بمجرد فهمك للأساسيات هنا. يمكنك أيضًا كتابة “icacls” فقط في سطر الأوامر لعرض معلومات المساعدة المتاحة. يمكنك أيضًا تصفح وثائق Microsoft المماثلة لأمر icacls على هذه الصفحة.

كيفية عرض ACL الحالية لكائن

حسنًا، أعتقد أن هذا يكفي من الشرح… هيا بنا نبدأ في استخدام الأمر. لعرض ACL الحالية لملف أو دليل، ما عليك سوى استخدام الأوامر التالية:

icacls file or directory
icacls Download
Using icacls to view permissions on a folder

هنا، ‘التحميل’ هو مجلد يحتوي على ملفات ومجلدات فرعية. كما ستلاحظ، الناتج مختلف قليلًا لكائنات الدليل. سترى (OI) و (CI) لأن هذه الأذونات على مستوى الوراثة للحاويات الخاصة تنطبق فقط على الدلائل.

بالنسبة لمجموعة المسؤولين المضمّنة، سترى أن لديها حقوق كاملة وأذونات موروثة. ‘ (OI) ‘ يُظهر أن الكائنات الأخرى في هذا الدليل ستورث هذا ACE. ‘ (CI) ‘ يُظهر أن المجلدات الأخرى في هذا الدليل ستورث مرة أخرى هذا ACE. (لا يحدث هذا الدليل أي إلا إذا كان يورث تلقائيًا نفس ACEs).

منح أذونات لملف أو مجلد

الآن، الأمور بدأت تشتعل. دعنا نقوم بضبط الصلاحيات وإضافتها لمستخدمين آخرين في نطاق Active Directory الخاص بنا باستخدام التبديل /grant. باستخدام الأمر التالي، سنمنح بيلي رايندرز (breinders) صلاحيات للقراءة فقط (R) على ملف Excellent.txt.

icacls Excellent.txt /grant reinders\breinders:R /t /c
Granting permissions to a file for a user

الأمر السابق الذي تم هنا تنفيذه بنجاح؛ بعد ذلك قمت بالتحقق من تغييراتي من خلال فحص الصلاحيات – الآن نرى أن ‘REINDERS\breinders’ لديه صلاحيات للقراءة فقط (R). ونظرًا لعدم رؤية ‘I’ مدرجة، نعلم أنها ليست موروثة، بل صريحة.

فقط لتذكيرك، التبديل ‘/t’ يُستخدم لتحديد الصلاحيات بشكل تكراري على جميع شجرة المجلد بأكملها. التبديل ‘/c’ يُخبر الأمر بالمضي قدمًا في حال واجه أي أخطاء.

إزالة الصلاحيات من ملف أو مجلد

بدلاً من استخدام التبديل /grant لمنح/إضافة صلاحيات، نستخدم التبديل /remove لإزالة الصلاحيات من ACE. دعنا نقم بإزالة الوصول الذي كان مخولًا لبيلي إلى ملف Excellent.txt.

icacls Excellent.txt /remove:g reinders\breinders /t /c
Using the /remove switch to remove permissions to a file for a user

هنا، نستخدم التبديل ‘/remove:g’ لإزالة الصلاحية التي تم منحها سابقًا لبيلي رايندرز. قمت بتشغيل الأمر مرة أخرى للتحقق وسترى أن ACL لبيلي قد اختفت. رائع! ?

رفض الصلاحيات لملف أو مجلد

بشكل عام، قد ترغب في تجنب استخدام أذونات صريحة للـ “رفض” بسبب التعقيد الذي ينشر في بنية الأذونات الإجمالية الخاصة بك. في معظم الحالات، يمكنك الاعتماد على الرفض الضمني، الذي هو الافتراضي، للتعامل مع هذه الظروف.

إذا لم يتم سرد المستخدم في قائمة الوصول وليست العضوية في أي مجموعة مدرجة في قائمة الوصول، فإنه يتم افتراض أن لديه لا أذونات على ذلك الكائن من قبل ويندوز. ومع ذلك، يوضح المثال التالي كيف يمكن أن يخرج الأمر عن السيطرة – إذا كان المستخدم عضوا في مجموعتين، وتم منح الوصول لمجموعة واحدة بينما تم رفض الأخرى، سيتم رفض المستخدم. هذا، بحد ذاته يبدو منطقيا، ولكن يمكن أن يصبح معقدا جدا في محاولة لاستكشاف الأخطاء وإصلاحها في هذا النوع من الأمور.

ومع ذلك، إذا كنت ترغب في إضافة إذن رفض بشكل صريح، يمكنك استخدام الأمر العام ‘/deny’ لتحقيق هذا.

icacls Download /deny reinders\breinders:(OI)(CI)F /t /c
Using the /deny switch to put explicit deny permissions on a file or folder structure

هنا يمكنك رؤية الأمر الذي قمت بتشغيله؛ تم إكماله بنجاح. ثم قمت بالتحقق من علامة التبويب الأمان للمجلد التنزيل – يمكنك أن ترى أن لدى بيلي إذن رفض على الكائن وجميع محتوياته.

كيفية إعادة تعيين قائمة الوصول لكائن

I can’t tell you how many file server migrations or movements of large amounts of file projects I’ve been involved in where I just needed to start from scratch. This invaluable step includes resetting the ACLs on an object in case things get too far gone, or you succumb to a bad idea after being up all night. Maybe a malware attack crippled an entire HR directory that NEEDS to get resolved ASAP. Thankfully, you can use the ‘/reset’ flag to reset the permissions to the default.

icacls Download /reset /t /c

[صورة]

بعد أن أعدت منح بيلي حقوق ‘RW’ إلى مجلد التحميل ومحتوياته، قمت بتشغيل أمر الإعادة. كما يمكنك رؤية أن اسمه مرة أخرى غائب عن قائمة الوصول في علامة التبويب الأمان. سهل وبسيط.

كيفية حفظ واستعادة قوائم الوصول

A wonderfully powerful feature included with icacls is the ability to backup and restore the ACL of an object to a file for safekeeping. Before you start a large script that changes or resets permissions on millions of files, you can first save the current state of those millions of files’ ACLs to a single file.

إذا لاحظت في منتصف النص البرمجي أنك قمت بخطأ في الصيغة، يمكنك إيقافه، ثم استعادة حالة ACLs للشجرة بأكملها بتشغيل الأمر مرة واحدة باستخدام المعلمة “/restore”! دعنا نجرب ذلك!

icacls Download /save Download_ACL_Backup /t
What the backed-up text file looks like with all the ACLs – wowzers!

سيقوم هذا بحفظ شجرة ACL بأكملها لمجلد التنزيل في ملف واحد يحمل اسم “Download_ACL_Backup”. الآن، أوصي بشدة بعدم التلاعب بهذا الملف النصي. نعم، يبدو وكأنه بعض الأشياء الجنونية مثل نظام Linux أو شيء من هذا القبيل. ? مزحة.

هنا هو الحالة الحالية لمجلد التنزيل.

The ‘Download’ folder before Junior performs his ill-advised permissions changes…

الآن، دعونا نفترض أن مسؤولًا مبتدئًا يمنح بيلي ريندرز حق الوصول الكامل إلى الموقع. دعنا نفترض أيضًا أنه يحتوي على بيانات الموارد البشرية التي لا يجب أن تكون لبيلي حق الوصول إليها.

icacls Download /grant reinders\breinders:F /t /c
Our Junior Admin has granted Billy Reinders Full access to the location

بعد الأمر، أتحقق مرة أخرى وأرى أن بيلي لديه السيطرة الكاملة في هذا المجلد. يمكنني، في خطوة واحدة، أن أفترض أن الأذونات ستعود إلى القيم الافتراضية بتشغيل هذا الأمر مرة واحدة.

icacls Download /reset /t /c
After running the /reset switch, we see Billy no longer has explicit access!

بعد تشغيل أمر الإعادة، يمكنك أن ترى أن اسمه تمت إزالته مرة أخرى من ACL. لم يعد لديه الوصول الكامل إلى المجلد. تذكير – سيقوم هذا بفحص كامل تسلسل المجلد.

نصيحة: طوال هذا السيناريو، قد تكون قد أدركت أن بيلي لديه حق الوصول للقراءة فقط لأن مجموعة المستخدمين المدمجة (والتي يعتبر بيلي عضوًا فيها) لديها أذونات القراءة والتنفيذ الافتراضية. مجرد ملاحظة جانبية.

كيفية إدارة مستويات سلامة Windows باستخدام icacls

يوجد ميزة أقل شهرة تتضمن برنامج Windows تُدعى السيطرة الضرورية للحصول على المرور (MAC). وقد كان موجودًا منذ وقت طويل. وما زالت منظمة ميكروسوفت تقدم السيطرة الفائدة الضرورية (MIC) في Windows Vista / Windows Server 2008.

تُحدد ال permisos بواسطة قوانين سياسية ثابتة وعامةً لا يمكن تخطيها بواسطة المستخدمين. ويسمى عامًا بالسيطرة الفائدة المنزلية للويندوز (WIC). يستخدم المستوى الفائدة للتحديد من مستوى حماية العنصر في Windows. بشكل أساسي ، تريد دائمًا أن تتأكد من أن لديك إذنات المستخدمين الصحيحة.

I won’t go into great detail here, but I can show you a few examples of how to use the icacls command with it. If we create a new folder, Test, in the Download directory, we can adjust its integrity level to ‘h’igh.

icacls Test /setintegritylevel h

للقصة الطويلة بإختصار ، المستوى العالي يشبه إذنات التشغيل التي يحتاجها لتشغيل مهمة أو عملية بصفة مسؤول تقوم (مساعدة). إذًا حتى لو كان بيلي رايندرز لديه السيطرة الكاملة على هذه المجلد، إلا أنه إذا تم تمويله بصلاحيات المسؤول السحرية ، وتمكن من تشغيل File Explorer بصفة مسؤول (لا يستطيع…), لن يتمكن من وصول إلى هذا المجلد ومحتوياته.

لذلك فإنه طبقة أخرى من الأمن والحماية التي يمكنك أستخدامها لحماية البيانات الحساسة المادية.

كيفية إدارة توريث الإذنات مع icacls

يمكننا أيضًا استخدام أمر icacls لعرض وتعديل صلاحيات الوراثة على الملفات والمجلدات. يمكننا بذلك تعيين الأذونات الصريحة على مجلد واحد بينما نحتفظ بإعدادات الأذونات الأخرى على تلقائي لقبول ACLs الحاوية الأصلية.

تعطيل الوراثة على الملفات والمجلدات

يمكننا تعطيل الوراثة على ملف أو مجلد باستخدام المعلمة ‘/inheritance:d’. في مثالي، لدينا مجلد Install في مجلد تنزيلات. يمكنك رؤية هنا أن المجلد مضبوط ليرث كل صلاحياته من الأعلى.

icacls Download
Disabling inheritance on the Install folder leaving only explicit ACEs

لنقم بإزالة الوراثة عن مجلد Install.

icacls Install /inheritance:d /t /c
We can see that inheritance has been disabled as the ‘Enable inheritance’ button/toggle is available

ها هي. ستلاحظ أن جميع الإدخالات ‘(I)’ قد اختفت. هذه الصلاحيات الآن جميعها صريحة. ويمكنك رؤية التحقق من الأسفل في الواجهة التي تؤكد أن زر ‘تمكين الوراثة’ متاح لأننا قمنا بتعطيل ذلك.

استنتاج

أكثر جوانب icacls إثارة للاهتمام بالنسبة لي هو قوة القدرة على كتابة سيناريوهات معقدة باستخدام هذا الأمر. ومرة أخرى، بدون الحاجة للقلق بشأن موثوقية مستكشف الملفات في حال مواجهته لخطأ، أو تعطله، وأشياء من هذا القبيل.

I hope you learned more about using the command line to modify permissions. Please leave a comment or question below. Thank you!

المقال ذو الصلة:

Source:
https://petri.com/icacls-command/