මුරපදයක් නොමැති වෙනත් පරිශීලකයෙකු ලෙස ෂෙල් ස්ක්‍රිප්ට් ධාවනය කරන්න


269

මුරපදයක් නොමැති වෙනත් පරිශීලකයෙකු ලෙස ප්‍රධාන උබුන්ටු කවචයෙන් පිටපතක් ධාවනය කිරීමට මම කැමතියි.

මට සම්පූර්ණ සුඩෝ වරප්‍රසාද ඇත, එබැවින් මම මෙය උත්සාහ කළෙමි:

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

එවිට මට මගේ මුරපදය ඇතුළත් කළ යුතුය, නමුත් එම පිටපත දැන් ඇත්ත වශයෙන්ම එම පරිශීලකයා යටතේ ක්‍රියාත්මක වේදැයි මට විශ්වාස නැත.

ස්ක්‍රිප්ට් එක ඇත්ත වශයෙන්ම එම පරිශීලකයා යටතේ ක්‍රියාත්මක වන බව මා සනාථ කරන්නේ කෙසේද?

Answers:


386

ඔබට එය කළ හැකිය , 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මුරපදයක් ලබා නොදී පරිශීලකයා මාරු කළ හැක්කේ ඔබ root නම් පමණි. කාලෙබ්ගේ පිළිතුර බලන්න

මුරපදය නොමැතිව /etc/pam.d/suඉඩ දීම සඳහා ඔබට ගොනුව වෙනස් කළ හැකිය su. මෙම පිළිතුර බලන්න .

ඔබ ඔබේ සත්යාපනය ගොනුව තුල පහත සඳහන් පරිදි වෙනස් නම්, පිරිසක් කොටසක් බව ඕනෑම පරිශීලකයෙකුට 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

4
කරුණාකර එය කළ හැකි ආකාරය එකතු කළ හැකිද su?
rubo77

2
මෙය මගෙන් මුරපදයක් ඉල්ලයි :-(
ඉයන් වෝගන්

1
AnIanVaughan, පෙරනිමි වින්‍යාසය සමඟ (sudo), ඔබ මුරපදයක් root ලෙස ක්‍රියාත්මක නොකරන්නේ නම් එය ඉල්ලනු ඇත. "මුරපදයක් අවශ්‍ය නොවී A පරිශීලකයාට cmd C පරිශීලක B ලෙස ධාවනය කිරීමට ඉඩ දීම" සඳහා ඔබට sudo වින්‍යාසගත කළ හැකිය. Help.ubuntu.com/community/Sudoers
geirha

1
මෙය root ලෙස ක්‍රියාත්මක කිරීමේදී මුරපදයක් ඉල්ලා සිටිමි. යෝජනා තිබේද?
Nate

1
Order ඇණවුම වැදගත් බව මතක තබා ගන්න. ඔබේ සුඩෝරයට ඔබේ පරිශීලකයාට හෝ ඔබ සාමාජිකයෙකු සඳහා වෙනත් අවසරයන් නියම කරන රීතියක් තව දුරටත් තිබේ නම්, එය ඔබගේ NOPASSWD රීතිය අභිබවා යනු ඇත.
geirha

113

ඔබට sudo වෙනුවට su භාවිතා කිරීමට අවශ්‍ය නම්, ඔබට මේ වගේ දෙයක් භාවිතා කළ හැකි යැයි මම විශ්වාස කරමි:

su - <username> -c "<commands>"
  • - මඟින් නිශ්චිත පරිශීලකයාගේ පිවිසුම අනුකරණය කරනු ඇත
  • -c එය ඔබට විධානයක් ක්‍රියාත්මක කිරීමට අවශ්‍ය බව පවසයි

ps. අවාසනාවට මට මෙම ක්‍රමය සමඟ rvm භාවිතා කර රූබී ස්ථාපනය කළ නොහැක, නමුත් එය බොහෝ විට සම්බන්ධ නොවේ.


6
මට sudoආරම්භයට එකතු කිරීමට අවශ්‍ය වූයේ නැතිනම් එය මගේ මුරපදය ඉල්ලා සිටියේය.
ඉයන් වෝගන්

2
මෙය අනිවාර්යයෙන්ම නොමැතිව ක්‍රියා නොකරයි sudo. sudo su - www-data -c "touch /tmp/test"
සුඩෝ

"සු" භාවිතා කිරීමට ඔබට මූල මුරපදය අවශ්‍ය වේ, "සුඩෝ" හි ලක්ෂ්‍යය වන්නේ එය වළක්වා ගැනීමයි. ඉහත පරිදි “su” භාවිතා කරමින් ඔබට මුරපදය තිබේ නම් එය හොඳින් ක්‍රියාත්මක විය යුතුය.
සැමුවෙල් ඔස්ලන්ඩ්

9

ඉහත පිළිතුරු මට ඇත්තෙන්ම ප්‍රයෝජනවත් නමුත් සත්‍ය ප්‍රශ්නයට පිළිතුරු දීමට ...

ස්ක්‍රිප්ට් එක ඇත්ත වශයෙන්ම එම පරිශීලකයා යටතේ ක්‍රියාත්මක වන බව මා සහතික කරන්නේ කෙසේද? -

භාවිත:

ps -ef | grep <command-name>

ප්‍රතිදානයට ඔබේ ස්ක්‍රිප්ට් එක සහ එය ක්‍රියාත්මක කරන සැබෑ පරිශීලකයා ඇතුළත් විය යුතුය. BSD වැනි පද්ධතිවල පුද්ගලයින්ට, උදා: MAC ට සමාන තොරතුරු සොයාගත හැක්කේ:

ps aux | grep <command-name>

ලිනක්ස් භාවිතා කරන්නන්ට ps aux භාවිතා කළ හැකිය.
ඩීන් හොවෙල්

E ඩීන් හෝවල්; ඇත්ත, නමුත් MAC භාවිතා කරන්නන්ට "ps -ef" භාවිතා කළ නොහැකි අතර "ps aux" යනු BSD විකල්පයන් වන අතර එය අනුකූලතා අංගයක් ලෙස පමණක් ලබා ගත හැකි අතර "ps -ef" ප්‍රමිතිගත යුනික්ස් / පොසික්ස් විකල්ප වේ.
සැමුවෙල් ඔස්ලන්ඩ්

3

මටත් ඒ වගේ ප්‍රශ්නයක් තිබුණා. විධානය ටයිප් කිරීමෙන් screen -dmS testscreenමෙය ඔබගේ සුඩෝ නොවන පරිශීලක ගිණුමේ වෙන් වූ තිරයක් නිර්මාණය කරනු ඇති අතර පසුව ඔබට එය ලොග් කර මෙම තිරය තිබේදැයි පරීක්ෂා කළ හැකිය screen -ls.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.