שלום, היום נלמד איך להשתמש בchmod.
להרבה אנשים יש הבנה חלשה עד בסיסית בchmod, למרות שזה מאוד חשוב לשם אבטוח הקבצים בחשבונות של המשתמשים שלכם.שימוש לא נכון בchmod יכול להביא למצב שבו משתמשים בשרת יכולים להכנס ואף לשנות קבצים של משתמשים אחרים וקבצי מערכת, מה שיכול לגרום לבעיות חמורות ואף לפריצות לשרת(אם השתמשת בסיסמאת root בשביל rcon באיזה שרת משחק, ונט, ולמישתמש אחר יש גישה לזה).
עכשיו שהבנתם למה זה חשוב, אני יכול להתחיל להסביר.
אז הפקודה הולכת ככה:
chmod OGW /path/to/file
אני יודע שיש עוד לפקודה, אבל זאת הדרך האורגינלית והמלאה לשנות גישות לקבצים בשרת, אז אנחנו נשתמש בה.
עכשיו קצת הסבר על הפקודה, אתם בטח שואלים את עצמכם מזה הOWG הזה? אלו משתנים, כל אות תוחלף בספרה מ0 עד 7.
עכשיו אני אסביר מה כל סיפרה עושה.
O – ספרת הגישה של הבעלים של הקובץ
G – ספרת הגישה של משתמשים שבאותה קבוצת משתמשים של הבעלים
W – ספרת הגישה של משתמשים שלא באותה קבוצה של הבעלים.
OGW – Owner Group World
אני מקווה שלא בלבלתי יותר מדי (:
עכשיו אני יסביר על איך שהגישות עובדות.
יש 3 סוגי גישות:
Read – אפשרות לקרוא את הקובץ
Write – אפשרות לשנות את הקובץ
Execute – אפשרות להריץ את הקובץ.
לכל סוג גישה יש מספר:
Read – 4
Write – 2
Execute – 1
עכשיו, נגיד שרצינו לתת גישה רק לקרוא ולהריץ, אנחנו נחבר את Read ו Execute, נקבל את הספרה 5.
אתם בטח שואלים, איך זה יודע שלא רציתי 2? Write? הרי 2 נכנס ב5!
זה פשוט, אם הייתם רוצים Write(2) אז גם הייתם צריכים סוג גישה עם הסיפרה 3 כדי להגיע ל5, ואין כזאת גישה!
עכשיו אני ארשום את כל הגישות האפשריות, במקרה ולא הבנתם איך זה הולך:
No access = 0 Execute = 1 Write = 2 Execute + Write = 3 Read = 4 Execute + Read = 5 Read + Write = 6 Read + Write + Execute = 7
אוקי, אז נגיד, לצורך דוגמא, שהכנתי לעצמי סקריפט bash נחמד שמעיף את כל המשתמשים שמחוברים לSSH מהשרת.
עכשיו אני לא רוצה שיוכלו לשנות שם דברים, ואני לא רוצה שיריצו את זה, אבל דודו, חבר שלי, רוצה לדעת מה זה עושה. דודו לא נמצא בקבוצת המשתמשים שלי, לכן הוא נמצא בקטגורית World.
(אני יודע שאין גישות להעיף אנשים מSSH בלי קשר לסקריפט, אני רק משתמש בזה בתור דוגמא)
אז אני אשתמש במספרים האלו:
704
7 נמצא במקום של הספרה של בעלי הקובץ, לכן אני יכול להריץ, לקרוא, ולשנות את הקובץ הזה.
0 זה למשתמשים בקבוצה שלי, אבל אין להם צורך לעשות עם זה כלום – לכן אין להם גישות כלל.
4 זה למשתמשים שהם לא בקבוצה שלי, ו דודו לא נמצא בקבוצה שלי, אבל הוא רוצה לראות איך אני עושה את זה ורוצה לקרוא את הסקריפט – לכן נתתי לשאר המשתמשים גישה לקרוא את הסקריפט.
עכשיו דודו מצא באג בסקריפט שלי שיעיף גם אותי, הוא ביקש ממני גישה כדי לשנות שם כמה דברים, לכן נשנה את הספרות גישה של הקובץ ל:
706
6 נותן לדודו גישה לערוך את הקובץ, אבל לא להריץ אותו.
אני מקווה שהבנתם את הרעיון, אם אני אראה שיש הרבה שאלות אני יערוך ואתן עוד קצת חפירות בנושא.
עכשיו נעבור לתיקיות, תיקיות הן קצת שונות מקבצים..
Read נותן את הגישה לקרוא את התוכן שלהן
Write נותן את הגישה ליצור קבצים חדשים
Execute נותן גישה להריץ דברים על התיקיה, למשל לבדוק אילו קבצים נמצאים בה או לבדוק את גודלה.
עכשיו אם יש לכם שרת עם apache ו public_html מודול, אתם רוצים לתת גישה לקרוא מה יש ב/home.
גישה מומלצץ לתיקיות שצריכות להקרא ע"י סקריפטים או תוכנות אחרות שלא רצות על המשתמש root היא 755.
זה יתן לך את כל הגישות לתיקיה, וייתן למשתמשים אחרים גישה לראות את התוכן שלה אך לא ליצור או למחוק קבצים.
לתיקיות שאף אחד מלבדך לא צריך לקרוא, עדיף שתשתמש ב711.
אני רוצה עכשיו לעבור לנושא אחר – שינוי הבעלים של הקבצים.
שינוי הבעלים של קובץ מסויים מבצע ע"י שימוש ב chown.
הפקודה הולכת ככה:
chown <user> /path/to/file
זה יעניק למשתמש בעלות על קובץ אחד, במקרה שאתם רוצים לתת בעלות על תיקיה וכל תת התיקיות שלה תרשמו
chown -R <user> /path/to/file
זה יפעיל את אפשרות ה recursive, שיחפור בתיקיה ותתי התיקיות עד שיגיע למצב שכל הקבצים תחת התיקיה שצוינה יהיו בבעלות המשתמש שצויין.