إذا كنت محترف تكنولوجيا المعلومات وتجد صعوبة في ضبط إذن نظام الملفات لمؤسستك، فأنت محظوظ. إدارة أذونات NTFS باستخدام واجهة رسومية مستهلكة للوقت خاصة عند العمل مع العديد من المستخدمين أو المجموعات. لحسن الحظ، لدينا PowerShell لجعل الأمور أفضل تمامًا. كيف؟ عبر استخدام الوحدة النمطية Microsoft.PowerShell.Security.
يحتوي PowerShell على اثنين من الأوامر المساعدة خصيصًا للعمل مع قوائم التحكم في الوصول المسماة Get-ACL
و Set-ACL
. يمكن لهاتين الأمرين استرداد وتعيين أي عدد من أذونات NTFS التي ستتعلم عنها كل شيء في هذا البرنامج التعليمي. إذا كنت ترغب في أن تصبح أكثر كفاءة وفورية في إدارة أذونات NTFS ، فاستمر في القراءة.
لا يوجد وقت للقراءة؟ لا مشكلة! شاهد هذا الفيديو المصاحب من المدونة التقنية TechSnips.io بواسطة أنتوني هاول أدناه:
إدارة وتقرير Active Directory ، Exchange و Microsoft 365 باستخدام ManageEngine ADManager Plus. تنزيل النسخة التجريبية المجانية!
المتطلبات الأولية
لمتابعة الأمثلة في هذا البرنامج التعليمي ، تحتاج إلى:
- PowerShell 7 أو Windows PowerShell 5.1
- A basic understanding of NTFS file and folder permissions
إنشاء ملفات / مجلدات للاختبار معها
سيتم بناء هذا البرنامج التعليمي حول “مختبر” بسيط أو مجلد واحد. ستتعلم كيفية التعامل مع أذونات NTFS في PowerShell من الصفر؛ لا يلزم أي عمل إضافي من جانبك.
- للبدء، افتح جلسة PowerShell كمسؤول.
- أنشئ مجلدًا فارغًا يسمى “Share” في أي مكان في نظام الملفات الخاص بك. في الأمثلة التالية، دعنا نفترض أن المجلد موجود في المسار التالي: “C:\Share”. هذا سيجعل الأمثلة أقصر وأسهل للمتابعة. يمكنك إنشاء هذا الدليل عن طريق نسخ الكود أدناه:
3. قم بإنشاء مجلد يسمى “C:\Share\Assets”.
4. قم بإنشاء ملف يسمى “client_list.txt” في مجلد “C:\Share”.
5. قم بإنشاء ملف يسمى “client_projects.txt” في مجلد “C:\Share”.
6. بعد ذلك، قم بتعيين متغير لمسار المجلد “Share”. إن إنشاء المتغيرات يقلل من الكتابة ويسهل إعادة استخدام المسار. بافتراض أنك تستخدم “C:\Share”، قم بنسخ مثال الكود التالي في جلسة PowerShell الخاصة بك:
7. اضغط على Enter. لديك الآن مجلد فارغ وقد تم حفظ هذا المسار كمتغير.
عرض أذونات NTFS باستخدام “Get-Acl”
تسمح لك PowerShell بعرض أذونات NTFS بسرعة باستخدام cmdlet “Get-Acl”. في الأقسام التالية، ستتعلم كيفية استخدام هذا الأمر لعرض أذونات NTFS لملف أو مجلد.
عرض أذونات NTFS
تقليديًا ، يمكنك عرض ACL عن طريق النقر بزر الماوس الأيمن على المجلد C: \ Share ، والنقر فوق الخصائص ، وتحديد علامة التبويب الأمان ، والنقر فوق الزر المتقدمة . يمكنك رؤية مثال على كيفية عرض الواجهة الرسومية للأذونات أدناه.

يحتوي المثال أعلاه على بعض إدخالات الأذونات والخصائص رقمية. فحصها عن كثب حيث سترى المقارنة في وقت لاحق في هذا القسم.
باستخدام الدليل الذي قمت بإنشائه سابقًا ، قم بعرض أذونات NTFS الحالية للدليل باستخدام Get-Acl
.
يجب أن ترى الآن تفاصيل المسار والمالك ومستوى الوصول في لقطة الشاشة التالية.

تحتوي خاصية Access
الموضحة في لقطة الشاشة أعلاه على معلومات إضافية حول قائمة التحكم في الوصول، ولكنها تتجاوز حجم الشاشة كما هو موضح بنقاط الثلاث في نهاية FullControl أعلاه. هناك طريقة أفضل لعرض هذه الخاصية عن طريق وضع الأمر السابق بين قوسين لعرض خصائص كائن Access
object properties. قم بتشغيل الكود التالي للبحث فقط عن خاصية Access
في هذا الكائن.
يمكن أيضًا التعبير عن الأمر السابق باستخدام كائن
Access
واستخدام المعامل-ExpandProperties
:Get-Acl -Path $dir | Select-Object -ExpandProperty Access
كما هو موضح في لقطة الشاشة التالية، يتم تجميع الناتج لجعل الأمر أكثر وضوحًا لعرض خصائص Access
الفردية:

قد يتسبب عرض خصائص الوصول بهذه الطريقة في تمرير ناتج الطرفية بسرعة على الشاشة إذا كان لديك العديد من كيانات التحكم في الوصول (ACE). يحتوي كل كيان على خصائص FileSystemRights و AccessControlType و IdentityReference و IsInherited و InheritenceFlags و PropagationFlags. لجعل ذلك أكثر قراءة، قم بتوجيه الكائنات إلى Format-Table -AutoSize
. قم بتشغيل الأمر التالي.
كما يمكن رؤية خصائص الوصول بشكل أنظف وأكثر تنظيمًا في اللقطة الشاشة أدناه عند استخدام Format-Table -AutoSize
:

قم بفحص الخصائص ورقم العمود. لاحظ أن هذه هي نفس الخصائص التي رأيتها في واجهة المستخدم الرسومية في بداية البرنامج التعليمي.

تصفية كائنات الوصول
في بعض الأحيان قد ترغب في أن تكون أكثر دقة عند اكتشاف أذونات NTFS. للقيام بذلك ، يمكنك تصفية ACE معين أو العثور على نتائج محددة تحتوي على أذونات NTFS الموروثة أو الصريحة داخل ACL باستخدام PowerShell. بدلاً من التمرير عبر نافذة الطرفية بعينيك سطرًا بسطر ، يمكنك استخدام cmdlet Where-Object
للقيام ببعض عمليات التصفية.
يقوم المثال البرمجي أدناه بتصفية الكائنات التي لا تورث أذونات NTFS. يتم ذلك باستخدام Where-Object
مع عامل -Not
الذي ينظر إلى الكائن الحالي في سلسلة الأنابيب $_.
وخاصية كائن العضو IsInherited
، والتي تشير إلى ما إذا كان ACE نتيجة للميراث وليس مضبوطًا صراحةً:
تذكر أن ترسل الكائنات إلى
Format-Table -AutoSize
أو ستتم متابعة النتائج على الشاشة. قم بتحويل هذا إلى عادة جديدة. ستشكرني لاحقًا!
باستخدام الكود أدناه ، استبدل 'اسم المستخدم'
باسم مستخدم آخر لرؤية نتائج محددة:
فيما يلي مثال على كيفية تبدو النتائج:

يعرض المثال أعلاه جميع ACE التي تكون خاصية IdentityReference
هي المستخدم أو مجموعة الأمان التي تم تعيين الأذونات لها.
تابع في التدريب على ما تعلمته حتى الآن حول
Get-Acl
. قم بفحص بعض الملفات والمجلدات المختلفة على نظامك. سيساعدك ذلك على رؤية العديد من الوصفات الأمنية المختلفة لسياقات مختلفة. سيساعدك ذلك أيضًا في بناء بعض الذاكرة العضلية.
لنرفع الأمور إلى مستوى آخر ونعين أذونات NTFS.
تعديل أذونات NTFS بواسطة Set-Acl
الآن بما أنك تستطيع عرض أذونات NTFS، حان الوقت لتعيين وتعديل أذونات NTFS باستخدام PowerShell. يجعلك أمر Set-Acl
قادرًا على ذلك. ستوضح الأقسام التالية كيفية استخدام هذا الأمر مع Get-Acl
لنسخ وتعديل الإرث وإزالة أذونات NTFS من ملف أو مجلد.
نسخ أذونات NTFS
قد يكون لديك ملف أو مجلد يحتوي على مستوى مناسب من أذونات NTFS التي تحتاج إلى استخدامها لأذونة وصول جديدة. يمكنك توفير الوقت عن طريق نسخ الأذونات من ملف أو مجلد إلى آخر.
يمكن أن يقلل نسخ ACLs/ACEs الحالية من الأخطاء البشرية عند إعداد أذونات NTFS، فيما لو كان وصف الأمان الذي تقوم بنسخه مناسبًا وصحيحًا للوجهة في المقام الأول. كما يقال، “مع القوة الكبيرة تأتي المسؤولية الكبيرة.”. خذ ذلك في الاعتبار.
اعتبر اللقطة الشاشية التالية. هنا تلقي نظرة على قائمة التحكم في الوصول (ACL) لملف في المسار التالي: C:\Share ويسمى Client_List.txt. تحتوي قائمة التحكم في الوصول على مستوى الأذونات NTFS الصحيح الذي ترغب فيه:

الآن، اعتبر اللقطة الشاشية التالية. هذه المرة تلقي نظرة على قائمة التحكم في الوصول لملف آخر في المسار التالي: C:\Share ويسمى Client_Projects.txt. هذا الملف لا يحتوي على أذونات NTFS التي ترغب فيها:

تحتاج إلى نسخ أذونات NTFS من Client_List.txt إلى Client_Projects.txt. كيف يمكنك القيام بذلك؟ ستقوم بتعديل الأذونات عن طريق الحصول على قائمة التحكم في الوصول من Client_List.txt ثم استخدام cmdlet Set-Acl
مع المعلمة -AclObject
. عند تشغيل الشفرة أدناه، سيتم نسخ القائمة الكاملة للتحكم في الوصول من Client_List.txt إلى Client_Projects.txt :
كما يمكن رؤية في اللقطة الشاشية المرقمة أدناه، يحتوي ملف Client_Projects.txt الآن على نفس وصفوف الأمان مثل ملف Client_List.txt.
- الحصول على قائمة التحكم في الوصول الموجودة من ملف موجود.
- تعيين كائن القائمة المنسوخة للملف أو المجلد.
- التحقق من أن قائمة التحكم في الوصول تم نسخها بشكل صحيح إلى الملف أو المجلد.

ترى الآن أن قائمة التحكم في الوصول متطابقة لملف Client_Projects.txt كملف Client_List.txt في العمود IdentityReference مع AccessControlType المحدد إلى Allow. يمكنك استخدام نفس التقنية لتعيين أذونات NTFS للمجلدات أيضًا.
إضافة أذونات NTFS
في القسم الأخير، قمت بنسخ أذونات NTFS الموجودة من كائن ملف إلى آخر. هذه المرة ستقوم بإنشاء أذونات NTFS من البداية. سيتيح لك ذلك تعيين أذونات NTFS سيتم تعيينها لملف أو مجلد.
أولاً ، قم بتعيين بعض المتغيرات التي ستستخدمها لإنشاء كائن جديد يُستخدَم بواسطة Set-Acl
. يجعل الطريقة هذه العملية أسهل قليلاً عندما يحين وقت تشغيل الأمر. يقوم الكود أدناه ببناء خصائص ACE التي ستصبح أذونات NTFS المعينة لملف أو مجلد:
بعد ذلك، قم بتعيين متغير آخر سيحصل على ACL الأولية للمجلد Assets
. ثم، باستخدام طراز عضو طريقة AddAccessRule
، قم بإضافة قاعدة وصول باستخدام المتغير $ACE
:
الآن أنت جاهز لإضافة ACE الجديدة إلى ACL لـ C:\Share\Assets
. استخدم الآن Set-Acl
لتطبيق هذا ACE الجديد على الدليل المناسب:
بعد ذلك، تحقق من أن المستخدم الذي اخترته لديه أذونات لعرض الدليل المطلوب باستخدام الكود أدناه:
إزالة أذونات NTFS
سيأتي يوم تحتاج فيه إلى إزالة أذونات NTFS من مورد.
لإزالة أذونات NTFS، ابدأ بالحصول على ACL الحالي للملف أو المجلد. في هذا المثال، هذا هو الملف Client_Projects.txt
:
الآن، قم بتصفية الـ ACE المحدد الذي ترغب في إزالته. يمكنك القيام بذلك عن طريق استدعاء كائنات عضو $Acl
وتوصيل نتائجها إلى Where-Object
وبعض العمليات:
ثم، استخدم المتغير $Acl
الذي يحتوي على وصفيات الأمان ACL الحالية، استدعِ الأمر RemoveAccessRule
وقم بتمرير كائن ACE الذي تم إنشاؤه أعلاه باستخدام الأمر New-Object
إلى أمر RemoveAccessRule()
. هذا سيزيل الإدخال:
من المهم أن تتذكر أنك قمت بتعديل ACL موجود هنا ولم تؤكد التغييرات بعد.
الآن، لجعل هذه التغييرات ثابتة، قم بتشغيل أمر Set-Acl
وقم بتوفير المعلمات -Path
و -AclObject
مع القيم المناسبة "$dir\Client_Projects.txt"
و $Acl
. بمجرد إدخال الأمر أدناه، اضغط على Enter:
إدارة وتقرير Active Directory وExchange و Microsoft 365 باستخدام ManageEngine ADManager Plus. قم بتنزيل النسخة التجريبية المجانية!
ملخص
في هذه المقالة، تعرفت على كيفية إدارة أذونات NTFS باستخدام PowerShell. تعرفت على الأوامر المختصرة المستخدمة، Get-Acl
و Set-Acl
، وماذا يمكنهما فعله مع أذونات NTFS.
تعرفت أيضًا كيفية استخدام الفلاتر لاستهداف عنصر ACE محدد في ACL للاستخدام في الأوامر المذكورة أعلاه. مع التمرس القليل، ستتمكن بسهولة من إدارة طلبات أذونات NTFS أكثر مما كنت تفعل في السابق.