שאלה להפעיל סקריפט כמשתמש שיש לו פגז nologin - -


כל מה שאני צריך לעשות זה להריץ סקריפט ספציפי כמשתמש מסוים שיש לו את nologin / פגז שקר המצוין / etc / passwd.

הייתי מפעיל את התסריט כשורש ואת זה צריך לרוץ כמו משתמש אחר. רץ:

~# su -c "/bin/touch /tmp/test" testuser

יעבוד אבל אני צריך פגז חוקי עבור testuser. אני יודע שאני יכול להשבית את הסיסמה עם passwd -d testuser ולהשאיר את הקליפה ל / bin / באש בדרך זו היה מאובטח קצת אבל אני צריך להיות nologin / פגז שווא.

ביסודו של דבר מה שאני צריך הוא מה crontab עושה כאשר אנו קובעים משרות להיות פועל כמשתמש מסוים, ללא קשר זה אחד יש nologin / פגז שווא.

p.s מצאתי את זה פתיל ביצוע פקודה כמשתמש nologin אבל אין לי מושג איך "לשרשר" את הפקודה su -s /bin/sh $user את התסריט אני צריך לרוץ

תודה


78
2018-01-18 13:56






תשובות:


ניתן להשתמש ב - s כדי לעבור כדי להפעיל פגז מסוים

su -s /bin/bash -c '/path/to/your/script' testuser

(הכן מראש sudo 100 testuser הוא משתמש ללא סיסמה).


110
2018-01-18 18:49



מה אם סו root:root -rwsr-x--- ? - Patryk
מה אם למשתמש אין סיסמה? - CMCDragonkai
@Wesley נמצא כי אתה צריך להיות שורש כדי להפעיל את הפקודה עבור משתמש ללא סיסמה. - CMCDragonkai
@lain, אם המשתמש אמור לא להיות פגז, התהליך הקשור הפקודה לא צריך להיות ילד של תהליך bash. לכן, אתה צריך גם להשתמש exec להחליף את הקליפה עם התסריט. ואם אתה רוצה לעשות את התסריט ילד של init, אתה פשוט להשתמש &, כדוגמה su -s /bin/bash -c 'exec /path/to/your/script &' test - Facundo Victor
מאז ביליתי 20 דקות האחרונות לעבוד על איך להשיג את אותה תוצאה באמצעות runuser, אני רוצה לציין את זה su -s SHELL פרמטר renders runuser הפקודה די הרבה חסר תועלת :) תודה ינואר! - jirka


אתה יכול לעשות את זה עם sudo -u אם יש לך את זה מותקן:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

7
2018-01-18 14:03



איך מעבירים פרמטרים sudo -u apache whoami? - CMCDragonkai
@CMCDragonkai כל הפרמטרים לאחר הפקודה יועברו יחד. אתה יכול לחשוב על זה כמו "sudo [-u apache] [whoami <param1> <param2>]". - Handyman5
אני חושב להשתמש sudo -u הוא כנראה לא רעיון טוב להפעלת פקודות כמשתמש nologin, כי זה חושף את SUDO_USER בסביבה שהוא האדם האמיתי שמפעיל את הפקודה. אולי אני פשוט חושב על זה. - Meow


על ידי מתן התסריט כארגומנט כדי לבצע את / bin / sh:

su -s "/bin/sh /your/script/location" username

4
2018-01-18 14:01





רק הבין :

su-"/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser

אולי יש דרך טובה יותר?


2
2018-02-16 07:18





למעשה, הדרך הטובה ביותר לעשות זאת היא דרך משתמש

עיין בדף האיש לפרטים נוספים

כלי זה משמש להתמודד עם המצב כמו היזם אמר בבולג שלו

בכל פעם ששירות פועל כשורש ורוצה לשנות את ה- UID באמצעות הקליפה הוא צריך להשתמש ב- runuser.

http://danwalsh.livejournal.com/55588.html

אני כבר לכתוב את התשובה הזאת בארמונות רבים, סלח לי אם אתה מוצא את זה מעצבן


0
2017-12-07 19:19



אנא אל תשלח תשובות קישורים בלבד כדי למנוע ריקבון הקישור. במקום זאת, הוסף את המידע הרלוונטי ביותר מהקישור לתגובתך או לחילופין, פרסם את הקישור כהערה במקום תשובה. תראה את זה serverfault.com/help/how-to-answer מאמר במרכז העזרה למידע נוסף. - Federico Galli
@FedericoGalli את המידע הרלוונטי ביותר כבר הוסיף, אין צורך להעתיק ולהדביק את השימוש, את דף האיש מספק מספיק מידע - Z-Y00


השתמש ב- sudo -u כדי לציין את המשתמש. כמו כן, השתמש בדגל - i כדי להגדיר משתני סביבה של משתמש היעד גם.

sudo -i -u user command

-1



זה נותן This account is currently not available. - knocte