אחת התוכנות שאני משתמש בהן מתעקשת ליצור קבצים כ-root. מפאת חוסר הזמן מצאתי שקל לי יותר לבצע
sudo chown -R oldie /media/truecrypt
מאשר להבין איך לגרום לתוכנה ליצור קבצים כמשתמש רגיל. כיוון שכך, רציתי להוסיף את הפקודה ל-cron ולתת לה להתבצע אוטומטית בחצות מדי יום.
הבעייה: הרצת sudo תדרוש ססמה. אם ארצה להריץ אוטומטית, אצטרך להאקים מכוערים כמו רישום הססמה בקובץ והפניית הקלט לתוך הקובץ עם הססמה. רישום הססמה בקובץ טקסט הוא פרצה גדולה, גם אם חסמת אותו לקריאה.
הפתרון פשוט בצורה מביכה: יש להריץ את ה-cron מחשבון root.
עריכת קובץ cron עבור משתמש root:
sudo crontab -e
ואז מכניסים את השורה עם הפקודה המתאימה, במקרה זה:
0 0 * * * chown -R oldie /media/truecrypt
מה שיפה הוא שאין צורך ב-sudo. התהליך ירוץ גם אם משתמש root אינו logged-in.
הערה: עבור פקודות יותר מסובכות, יש לוודא שמשתני PATH של משתמש root עדכניים. את הPATH מוסיפים לקובץ cron של משתמש ה-root:
PATH=/usr/sbin:/usr/bin:/sbin:/bin
במידה ואתה לא רוצה להתעסק עם ה cron של root אפשר להוסיף שורה בקובץ ה sudoers להריץ את הפקודה הספציפית הזו ללא סיסמא
לחלופין אתה יכול לכתוב סקריפט שיעשה את הפעולה האמורה ולהרשות למשתמש שלך להריץ אותו כ־root ללא בקשת סיסמה:
oldie ALL = NOPASSWD:/path/to/script