הרצת sudo בלי סיסמה, ומה מוותרים עליו
להקליד סיסמה בכל פעם שמריצים sudo זה מעצבן. זו גם הנקודה: הסיסמה היא מה שעומד בין תוכנית שרצה
בתור אתם לתוכנית שרצה בתור root. אם אתם מבינים בדיוק על מה אתם מוותרים ועדיין רוצים לוותר עליו, הנה
איך, והנה החשבון ההגון של העסקה.
מתי זה סביר
יש מקרה אמיתי. מחשב נייד למשתמש יחיד, עם הצפנת דיסק מלאה, שרק אתם יושבים לידו אי פעם, שבו התחברות
כבר דרשה סיסמה והמסך ננעל כשאתם עוזבים. במכונה כזו תוקף שיכול להריץ פקודות בתור אתם כבר יושב
בישיבה הפתוחה שלכם, ושאלת ה-sudo היא פס האטה ולא קיר.
יש גם מקרה רע שנראה כמו הטוב: מכונה משותפת, שרת, כל דבר שנגיש מהרשת, או כל מכונה שבה אתם מריצים לפעמים תוכנה שלא כתבתם ולא קראתם. קפצו לסעיף האחרון לפני שתחליטו.
ההגדרה
ראשית, ודאו שאתם בקבוצת sudo, שהיא הקבוצה שדביאן ואובונטו מעניקות לה זכויות ניהול:
groups
אם sudo אינו ברשימה, הוסיפו את עצמכם, ואז התנתקו והתחברו מחדש; חברות בקבוצה נקראת בהתחברות:
sudo adduser mark sudo
עכשיו צרו קובץ ב-/etc/sudoers.d/. אל תערכו את /etc/sudoers עצמו; ספריית ההשלמות קיימת כדי
ששדרוגי חבילות והשינויים שלכם לעולם לא יילחמו, וכדי שקובץ רע אחד לא יוכל לנעול את כולם בחוץ. השתמשו
ב-visudo, שבודק את התחביר לפני השמירה, מפני ששגיאת תחביר בקובץ sudoers עלולה להשאיר אתכם בלי
sudo עובד בכלל:
sudo visudo -f /etc/sudoers.d/nopasswd
שימו בו את זה:
# Allow members of group sudo to run any command without a password
%sudo ALL=(ALL) NOPASSWD: ALL
שמרו. visudo מגדיר את ההרשאות נכון, אבל אם יצרתם את הקובץ בדרך אחרת, תקנו אותן; sudo מסרב
לקרוא קובץ sudoers שקריא לכל העולם:
sudo chmod 0440 /etc/sudoers.d/nopasswd
פקודת ה-sudo הבאה לא תבקש דבר. אם היא עדיין מבקשת, בדקו שבשם הקובץ אין נקודה; קבצים עם . או
שמסתיימים ב-~ ב-sudoers.d נדחים, בכוונה, כדי שקבצי גיבוי של עורכים לעולם לא יהפכו למדיניות.
גרסה צרה יותר
אינכם חייבים ללכת עד הסוף. המטרד הנפוץ ביותר הוא קומץ פקודות שאתם מריצים פעמים רבות ביום, ואפשר לשחרר רק אותן:
%sudo ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /usr/bin/systemctl, /bin/mount, /bin/umount
כל השאר עדיין שואל. זה שומר על רוב הנוחות ועל הרבה פחות מהחשיפה, וזה מה שהייתי ממליץ לכל מי שמהסס מול הגרסה המלאה.
על מה באמת ויתרתם
היו מדויקים בזה. לפני השינוי, קוד שרץ עם ההרשאות שלכם יכול היה לקרוא ולמחוק את הקבצים שלכם, לשלוח
דואר בשמכם, ולהתקין כל דבר לספריית הבית שלכם, אבל הוא לא יכול היה לגעת במערכת בלי הסיסמה שלכם. אחרי
השינוי, כל תהליך שרץ בתור אתם הוא root בכל פעם שהוא רוצה להיות. פרצה בדפדפן, make install
זדוני, סקריפט שהודבק מדף אינטרנט, pip install של החבילה הלא נכונה: כל אחד מהם הוא עכשיו הבעלים
של המכונה, לא רק של החשבון שלכם.
הדבר השני שוויתרתם עליו הוא ההשהיה. שאלת הסיסמה היא הרגע האחרון שבו אתם מביטים בפקודה ושואלים אם
התכוונתם אליה. sudo rm -rf עם שגיאת הקלדה בנתיב הוא חוויה שונה עם ההשהיה הזו ובלעדיה.
זו כל העסקה. נוחות בצד אחד, המרחק בין החשבון שלכם ל-root בצד השני. במחשב הנייד שלי עשיתי אותה, עם הרשימה הצרה ולא עם הכלל הגורף. בכל דבר שמישהו אחר יכול להגיע אליו, לא עשיתי, ולא הייתי עושה.