Icacls הוא כלי שורת פקודות Windows שמנהלי ה-IT יכולים להשתמש בו כדי לשנות רשימות בקרת גישה על קבצים ותיקיות. אחת המשימות הנפוצות ביותר שמבצעים מומחה IT או מנהלי מערכת היא שינוי ההרשאות על שרת קבצים. שימוש בפקודת icacls הוא דרך יעילה מאוד לעשות זאת, ונסביר כיצד להשתמש בפקודה זו במדריך זה.
כיצד להשתמש בפקודת icacls
בהתבסס על הנסיון האישי שלי, שינוי ההרשאות של קבצים ב-Windows נעשה כלל על ידי עיון בסייר הקבצים. עבור רבים בתחום ה-IT, זה מאוד אינטואיטיבי לפתוח את סייר הקבצים, לעיין אל מיקום הרשת המסוים שגורם לבעיות למשתמשים מסוימים בגישה, ולשנות את ההרשאות שלהם מ-'קריאה' ל- 'קריאה/שינוי' או דבר דומה. נחמד ומהיר, די קל לשימוש.
אך, ישנם סיפורים ללא סוף המכלים רמות שונות של עדיפות שבהן הממשק הגרפי פשוט לא מספיק חזק כמו שנרצה. אם אנו מתכוונים לשנות הרשאות ב-22 מיליון קבצים ותיקיות, אנו רוצים לעשות זאת נכון!
מהו רשימת בקרת גישה (ACL)?
במערכת ההפעלה Windows ובמערכת הקבצים NTFS, לכל אובייקט קובץ (קובץ, תיקייה) יש רשימת בקרת גישה. רשימה זו מורכבת מרשומות בקרת גישה (ACE). הרשימה מכילה את כל המשתמשים ו/או אובייקטים אחרים בקונטיינר האבטחה (קבוצות, וכו') שיש להם מדרגה מסוימת של הרשאה לאובייקט הקובץ הנ"ל.
מהו רשומת בקרת גישה? רגע…
מהו רשומת בקרת גישה (ACE)?
רשומת בקרת גישה (ACE) היא רשומה אישית או כלל הרשאה שמכוללת את הרמות של הרשאה האישית של משתמש/קבוצה על אובייקט קובץ. שארכב את ההרשאות הבסיסיות ברמה גבוהה הזמינות עבור ACL:
- גישה מלאה (F)
- גישת שינויים (M) (כולל 'מחיקה')
- קריאה וביצוע (RX)
- קריאה בלבד (R)
- כתיבה בלבד (W)
יש כ־12 או יותר הרשאות 'מתקדמות', אך אלו חורגות מהטווח של מאמר זה.
מגבלות בייחודיות של מעקב הקבצים
ובכן, אם הייתי מנהלת תוכנה במיקרוסופט עבור חיפוש קבצים (לא משרה שאני במיוחד מקבלת), זהו הסט התכונות שהייתי מוסיפה. ותאמינו לי, רציתי שהם יוסיפו אותם כבר עשרות שנים!
נניח שאתה מטפל בהעברת שרת קבצים משרת A לשרת B. כבר העתקת את הנתונים ליעד (שרת B). גילית שלא כל ההרשאות נראות תקינות רקסיבית.
אז, אתה מגיע לשורש העץ שלך, נכנס לתפריט בטחון, ועושה כמה שינויים ברשימת שליטה על גבי שטח. אתה בודק את התיבה לשינוי רקסיבי של כל 22 מיליון קבצים ותיקיות מתחת לשורש. הוא מתחיל לעשות שינויים ואז זורק לך כמה פופאפס של עדכון לגבי שינויי קבצים מערכת, קבצים רק לקריאה וכו'.
עכשיו, הנה הבקשה שלי – ב"ויזארד" הקטן שהם יכולים ליצור, אני רוצה לציין שאני רוצה להניח וללחוץ 'כן' על כל בקשות האישור. לאחר מכן, התהליך ימשיך על כל השגיאות ואז יציע לי סיכום כשזה נגמר, עם קישור להורדת הפלט הגולמי כדי שאוכל לחזור ולבדוק כל שגיאות או אזהרות שהתרחשו.
לא, אני לא יודעת אם מיקרוסופט תמיד תציע סט תכונות נפלא, חזק ומרובד כמו זה. אז, בינתיים, אנו משתמשים בכוח של שורת הפקודה ובתכנות. כאן באה הפקודה המובנית icacls.
הבנת תחביר icacls
צורת הפקודה של icacls היא למעשה די פשוטה ויחסית קלה ללמידה. בעיקרון, אתה משתמש בפקודה, ואז מוסיף את הקובץ או התיקייה שברצונך לבדוק או לתכן, ואז את ההרשאה (ות) שברצונך להוסיף/לשנות/למחוק.
יש גם חלקים נלווים לשורת הפקודה, כמובן. נכסה את כל זה בקרוב. הנה דוגמה למה שקורה כשאתה פשוט מפעיל את הפקודה הבאה ואז שם קובץ.
icacls Excellent.txt

זה יפלוט קודם אחד לשורה, אז באמצעות הדוגמה לעיל:
- חשבון ה- 'SYSTEM' המובנה בתוכו יש שירותים של ירושה (I) ושלמים (F).
- לקבוצת המנהלים הבנויה יש את אותן הרשאות
- לקבוצת המשתמשים הבנויה יש שירוש (I), קריאה (R) והרשאות ביצוע (X).
האם אפשר להשתמש ב- icacls ב- PowerShell?
ובכן, כפי שאפשר לראות מהדוגמה שלי לעיל ומצילום המסך, בהחלט ניתן להשתמש ב- PowerShell כדי להשתמש בפקודת icacls. אתה רק צריך להיות מודע לכמה משתני סביבה שצריך להתייחס אליהם קצת אחרת.
הפקודות של PowerShell השקולות לצפייה וניהול ACL על אובייקטי קבצים הן Get-Acl ו- Set-Acl. זה נשמע כמו רעיון פוסט עתידי! ?
שימוש ב- icacls כדי להגדיר הרשאות עבור קובץ או תיקייה
מכיוון שפקודת icacls מובנית ב- Windows, אתה חופשי להתחיל להשתמש בפקודה מיד כשאתה מבין את היסודות כאן. אתה יכול גם פשוט להקליד 'icacls' לבד על שורת הפקודה כדי לראות את מידע העזרה הזמין. אתה יכול גם לעיין במסמכי ה-Microsoft הדומים לפקודת icacls בעמוד זה.
כיצד להציג את ACL הנוכחית של אובייקט
בסדר, אני חושב שזה די מספיק ובוא נתחיל להשתמש בפקודה. כדי להציג את ACL הנוכחית של קובץ או תיקייה, פשוט השתמש בפקודות הבאות:
icacls file or directory
icacls Download

כאן, 'Download' היא תיקייה עם קבצים ותתי תיקיות. כפי שתשים לב, הפלט הינו מעט שונה עבור אובייקטי תיקיות. תראה (OI) ו-(CI) מאחר ואלו הם הרשאות רמת השקיפות של המיכל שמתייחסות רק לתיקיות.
במקרה של קבוצת מנהלים המובנת, אתה רואה שיש לה הרשאות מלאות והרשאות מורשות. '(OI)' מציין כי אובייקטים אחרים בתיקייה זו יירשו את ACE זה. '(CI)' מראה שתיקיות אחרות בתיקייה זו יירשו שוב את ACE זה. (תיקייה זו לא מקרה אקראי המכיל אובייקטים, אבל אם כן, הם יירשו באופן אוטומטי ACEים זהים).
הענקת הרשאות לקובץ או לתיקייה
כעת, הדברים מתחילים להתחמם. בואו נקבע הרשאות ונוסיף חלק מהן למשתמשים אחרים בדומיין Active Directory שלנו באמצעות המתג /grant. עם הפקודה הבאה, נעניק לבילי ריינדרס (breinders) הרשאות קריאה בלבד (R) לקובץ Excellent.txt.
icacls Excellent.txt /grant reinders\breinders:R /t /c

הפקודה הקודמת כאן הושלמה בהצלחה; אז אימתתי את השינויים על ידי בדיקת ההרשאות – כעת רואים כי 'REINDERS\breinders' יש לו הרשאות קריאה בלבד (R). ומכיוון שאנו לא רואים 'I' מופיע, אנו יודעים שלא הצטיין משתייך אליו, זה ישיר.
רק כדי להזכיר לך, המתג '/t' משמש להגדיר את ההרשאות באופן רקורסיבי על עץ התיקיות כולו. המתג '/c' מודיע לפקודה להמשיך לעבור אם היא נתקלת בשגיאות.
הסרת הרשאות מקובץ או תיקייה
במקום להשתמש במתג /grant לתת/להוסיף הרשאות, אנו משתמשים במתג /remove כדי להסיר הרשאות מ-ACE. בואו נמשיך ונסיר את הגישה הזמנית של בילי לקובץ Excellent.txt.
icacls Excellent.txt /remove:g reinders\breinders /t /c

כאן, אנו משתמשים במתג '/remove:g' להסרת ההרשאה שניתנה בעבר לבילי ריינדרס. הרצתי את הפקודה שוב לאימות ותראו כי ה־ACL לבילי נעלם. מעולה! ✅
מניעת הרשאות לקובץ או תיקייה
ברירת מחדל המשתיק כדי להתמודד עם מקרים אלה.
אם משתמש לא מופיע ברשימת ההרשאות הנוכחית והוא אינו חבר בשום קבוצה המופיעה ברשימת ההרשאות הנוכחית, המשתמש הוא (בצורה נכונה) ייחשב על ידי Windows כיוון וללא הרשאות על האובייקט הזה. אך, הדוגמה הבאה מדגימה כמה זה יכול להפך ללא מסודר – אם משתמש הוא חבר בשתי קבוצות, ואחת מהן ניתנת גישה תוך שהשניה נסרקה, המשתמש הזה יוחשב כחסום. הבנת הדבר היא ברורה בעצמה, אך זה יכול להפוך לקומבינציה מתוחכמת בניסיון לאתר בעיות מהסוג הזה.
אם בכל זאת ברצונך להוסיף הרשאת סרב פורט מפורש, ניתן להשתמש במפתח ' /deny' הכללי לצורך זה.
icacls Download /deny reinders\breinders:(OI)(CI)F /t /c

שם ניתן לראות את הפקודה שהרצתי; היא הושלמה בהצלחה. לאחר מכן בדקתי את הלשונית אבטחה עבור התיקייה המורדפת – ניתן לראות כי לבילי יש הרשאות סרב על האובייקט וכל התוכן שלו.
איך לאפס את ההרשאות לאובייקט
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' לתיקיית ההורדות ולתוכן שלה, הרצתי את הפקודת איפוס. כפי שאתה יכול לראות, שמו חסר שוב מה-ACL בכרטיסייה האבטחה. נעים ופשוט.
כיצד לשמור ולשחזר הרשאות ACL
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 עבור עץ המדריך כולו באמצעות הפעלת הפקודה עם הפרמטר "/שחזור"! בוא ננסה את זה!
icacls Download /save Download_ACL_Backup /t

זה ישמור את עץ ה-ACL השלם של תיקיית ההורדות לקובץ יחיד בשם "ההורדה_ACL_גיבוי". עכשיו, אני ממליץ מאוד שלא תערבו עם הקובץ הטקסט הזה. כן, זה נראה כמו משהו משוגע כמו לינוקס או משהו. ? רק בעיצות.
הנה המצב הנוכחי של תיקיית ההורדות.

עכשיו, בוא נניח שמנהל צעיר מעניק לבילי ריינדרס גישה מלאה למיקום. בוא נניח גם שהוא מכיל נתוני משאבי אנוש שבילי לא צריך לגשת אליהם.
icacls Download /grant reinders\breinders:F /t /c

לאחר הפקודה, אני בודק שוב ורואה שבילי יש לו שליטה מלאה וברורה בתיקייה זו. במהלך אחד, יכול להיחשב כי ההרשאות יחזרו להגדרות בביצוע של פקודה זו.
icacls Download /reset /t /c

לאחר ביצוע הפקודה לאיפוס, תוכל לראות ששמו שלו הוסר שוב מה-ACL. הוא כבר אינו מקבל גישה מלאה לתיקייה. תזכורה – פעולה זו תסרוק את היררכיה השלמה של התיקיות.
טיפ: במהלך התרחיש הזה, ייתכן שהבנת שבילי כן יש לו גישה לקריאה בלבד מאחר וקבוצת המשתמשים המובנית (שבה בילי חבר) מקבלת הרשאות קריאה וביצוע ברירת מחדל. רק הערת צד.
כיצד לנהל רמות אמינות של Windows עם icacls
יש תכונה פחות ידועה שנמצאת ב-Windows ונקראת בשמה שליטת גישה חובה (MAC). היא קיימת כבר מזמן מה. עם זאת, מיקרוסופט הציגה שליטה בשליליות חובתית (MIC) ב-Windows Vista/Windows Server 2008.
ההרשאות מוגדרות לפי כללים קבועים במדיניות ובדרך כלל אינן יכולות להיות עקופות על ידי המשתמשים. המונח הנפוץ לכך הוא שליטת תקינות ב-Windows (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
בקצרה, הרמה הגבוהה מסמנת את ההיתרים הדרושים להרצת משימה או תהליך כמנהל מערכת (זכויות מנהל). לכן, גם אם לבילי ריינדרס היו בשלטון מלא על תיקייה זו, למרות זאת אם לא תינתנו לו באופן קסום זכויות מנהל, והיה מסוגל להפעיל את מפעיל הקבצים כמנהל (הוא לא יכול…), הוא לא היה יכול לגשת לתיקייה זו ולתוככיה.
לכן, בעצם מדובר בשכבת אבטחה והגנה נוספת שניתן להשתמש בה על מנת להגן על נתונים בעלי רגישות גבוהה.
איך לנהל ירושת ההרשאות בעזרת icacls
ניתן גם להשתמש בפקודת icacls כדי להציג ולשנות את ההרשאת השכלתית על קבצים ותיקיות. זה מאפשר לנו להגדיר הרשאות ספציפיות על תיקייה אחת תוך שמירה על תיקיות השאר מוגדרות לקבל את ה-ACLs של הספק האב.
ניטרול השכלה על קבצים ותיקיות
ניתן לנטרל השכלה על קובץ או תיקייה על ידי שימוש בפרמטר '/inheritance:d'. בדוגמה שלי, יש לנו תיקיית Install בתיקיית הורדות. ניתן לראות כאן שהתיקייה מוגדרת להוריש את כל ההרשאות שלה מלמעלה.
icacls Download

בואו נסיר את השכלה על תיקיית Install.
icacls Install /inheritance:d /t /c

הנה לך. תראה כי כל הרשומות '(I)' נעלמו. אלה כעת כולן הרשאות ספציפיות. ותראה באימות למטה מהממשק הגרפי שהכפתור 'הפעל השכלה' זמין מאחר שביטלנו אותה.
מסקנה
הרגע המרתק ביותר של icacls בעיני הוא העמידות שלו לסקריפטינג של פרויקטים מורכבים עם פקודה זו. ושוב, לא צריך לדאוג לאמינות של מערכת הקבצים במקרה שיש לה בעיה, היא קורסת, דברים כאלה.
I hope you learned more about using the command line to modify permissions. Please leave a comment or question below. Thank you!
מאמר קשור: