سؤال قم بتشغيل برنامج نصي shell كمستخدم آخر ليس لديه كلمة مرور


أود تشغيل برنامج نصي من shell ubuntu الرئيسي كمستخدم مختلف ليس له كلمة مرور.

لدي امتيازات sudo كاملة ، لذلك حاولت ذلك:

sudo su -c "Your command right here" -s /bin/sh otheruser

ثم يجب إدخال كلمة المرور الخاصة بي ، لكنني لست متأكداً مما إذا كان هذا البرنامج النصي قيد التشغيل بالفعل تحت هذا المستخدم.

كيف يمكنني التأكد من أن البرنامج النصي يعمل بالفعل تحت هذا المستخدم الآن؟


206
2018-05-13 10:55


الأصل




الأجوبة:


يمكنك القيام بذلك مع su أو sudo، لا حاجة لكليهما.

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

الأجزاء ذات الصلة من man sudo:

-H   The -H (HOME) option requests that the security policy set
     the HOME environment variable to the home directory of the
     target user (root by default) as specified by the password
     database.  Depending on the policy, this may be the default
     behavior.
-u user     The -u (user) option causes sudo to run the specified
      command as a user other than root.  To specify a uid
      instead of a user name, use #uid.  When running commands as
      a uid, many shells require that the '#' be escaped with a
      backslash ('\').  Security policies may restrict uids to
      those listed in the password database.  The sudoers policy
      allows uids that are not in the password database as long
      as the targetpw option is not set.  Other security policies
      may not support this.

su يمكنه تبديل المستخدم دون توفير كلمة مرور إذا كنت جذرًا. شاهد جواب كالب 

يمكنك تعديل /etc/pam.d/su ملف للسماح su بدون كلمة المرور انظر الى هذا إجابة.

إذا قمت بتعديل ملف auth الخاص بك إلى ما يلي ، أي مستخدم كان جزءًا من المجموعة somegroup استطاع su إلى otheruser بدون كلمة مرور

auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = otheruser
auth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

ثم اختبار من المحطة

rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser

287
2018-05-13 11:20



يمكنك من فضلك إضافة كيفية القيام بذلك مع فقط su جدا؟ - rubo77
هذا يطلب مني كلمة مرور :-( - IanVaughan
IanVaughan ، مع التكوين الافتراضي (من sudo) ، ستتم مطالبتك بكلمة مرور إلا إذا قمت بتشغيلها كجذر. يمكنك تكوين sudo إلى "السماح للمستخدم A بتشغيل cmd C كمستخدم B دون طلب كلمة مرور". نرى help.ubuntu.com/community/Sudoers - geirha
تتم مطالبتي بكلمة مرور عند تشغيل هذا كجذر. أي اقتراحات؟ - Nate
Nate ، لقد قمت بإجراء بعض التغييرات على ملف sudoers. يسمح التكوين الافتراضي للجذر بتشغيل أي شيء كأحد ، دون الحاجة إلى كلمة مرور. - geirha


إذا كنت تريد استخدام su بدلاً من sudo ، أعتقد أنه يمكنك استخدام شيء كهذا:

su - <username> -c "<commands>"
  • -  سوف محاكاة تسجيل الدخول للمستخدم المحدد
  • -c  يخبرك أنك تريد تشغيل أمر

فرع فلسطين. لسوء الحظ ، لم أتمكن من تثبيت روبي باستخدام rvm بهذه الطريقة ، ولكن ربما لا يكون ذلك مرتبطًا.


87
2018-04-07 00:01



كنت بحاجة إلى إضافة sudo إلى البداية وإلا سألتني عن كلمة المرور الخاصة بي. - IanVaughan
هذا بالتأكيد لا يعمل بدون sudo. مع sudo يعمل ، على سبيل المثال: sudo su - www-data -c "touch /tmp/test"نجح في إنشاء ملف باسم www-data - rubo77
لاستخدام "su" تحتاج إلى كلمة مرور الجذر ، فإن نقطة "sudo" هي تجنب ذلك. إذا كان لديك كلمة مرور الجذر باستخدام "سو" على النحو الوارد أعلاه يجب أن تعمل بشكل جيد. - Samuel Åslund


الإجابات المذكورة أعلاه مفيدة حقاً بالنسبة لي لكن للإجابة على السؤال الفعلي ...

كيف يمكنني أن أؤكد أن البرنامج النصي يعمل بالفعل تحت هذا المستخدم الآن؟

استعمال:

ps -ef | grep <command-name>

يجب أن يتضمن الإخراج البرنامج النصي الخاص بك والمستخدم الفعلي تنفيذه. الناس على أنظمة تشبه BSD ، على سبيل المثال يمكن لـ MAC العثور على معلومات مماثلة مع:

ps aux | grep <command-name>

6
2018-05-11 18:30





كان لي نفس المشكلة. اكتب فقط في الأمر screen -dmS testscreen هذا سيخلق شاشة منفصلة على حساب المستخدم الخاص بك غير sudo ومن ثم يمكنك تسجيل الدخول والتحقق مما إذا كانت هذه الشاشة موجودة من قبل screen -ls.


2
2018-05-06 08:35