GammaCyber

כתיבת קוד — שיעור 31

מבוא ללינוקס CLI

כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.

T2 · בסיסי200 נק'~12 דק'algorithmic
chmod — סימבולי לאוקטלי
ממש to_octal(sym) הממיר מחרוזת הרשאות סימבולית בת 9 תווים (rwxrwxrwx לפי owner/group/other; '-' = כבוי) למחרוזת אוקטלית בת 3 ספרות. r=4, w=2, x=1.
דוגמאות
to_octal('rwxr-xr--') → '754'
to_octal('rw-r--r--') → '644'
פתרון-ייחוס chmod — סימבולי לאוקטלי ›
def to_octal(sym: str) -> str: out = "" for k in range(0, 9, 3): v = 0 if sym[k] == 'r': v += 4 if sym[k+1] == 'w': v += 2 if sym[k+2] == 'x': v += 1 out += str(v) return out
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~22 דק'algorithmic
החלטת גישה של Unix
ממש can_access(mode, file_owner, file_group, user, user_groups, op). mode הוא int אוקטלי (למשל 0o640). קבע איזו מחלקת-הרשאות חלה: owner אם user==file_owner; אחרת group אם file_group ב-user_groups; אחרת other. op הוא 'r'/'w'/'x'. החזר True אם למחלקה יש את ההרשאה. (שים לב לסדר הקדימות — owner גובר על group.)
דוגמאות
can_access(0o640,'alice','staff','alice',['alice'],'r') → True
can_access(0o640,'alice','staff','bob',['staff'],'w') → False
פתרון-ייחוס החלטת גישה של Unix ›
def can_access(mode, file_owner, file_group, user, user_groups, op) -> bool: bit = {'r': 4, 'w': 2, 'x': 1}[op] if user == file_owner: shift = 6 # owner elif file_group in user_groups: shift = 3 # group else: shift = 0 # other return bool((mode >> shift) & bit)
הפתרון נשמר מקומית אוטומטית.