рдХреНрдпрд╛ рдпрд╣ "sudo su - user_name" рдХрдорд╛рдВрдб рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
run
рдФрд░ sudo
рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП
рдХреНрдпрд╛ рдЖрдк рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдореЗрдВ '-' рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ? (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдЧрд┐рди рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ) рдпрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд░реВрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдпрджрд┐ рд▓реЙрдЧрд┐рди рдХрд╛ рдкреНрд░рднрд╛рд╡ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ...
sudo("mkdir /var/www/new_docroot", user="www-data")
рдпрд╛
with settings(sudo_user='mysql'):
sudo("whoami") # prints 'mysql'
рдпрд╛ рдпрджрд┐ рд▓реЙрдЧрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рд╣реИрдХреА рддрд░реАрдХрд╛) рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ ...
sudo("su - usernaeme -c 'command to be run'")
рд╣рд╛рдБ - рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореБрдЭреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдореЗрд░рд╛ рдЦрд╛рддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЪрд░рдг 2 рдореЗрдВ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
sudo su - user_name
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ
sudo("su - usernaeme -c 'command to be run'")
Sorry, user user_name is not allowed to execute '/usr/bin/su - another_user -c pwd' as root on server.
рдХреЛрдИ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡?
@polusok : рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдХрд╛рдордХрд╛рдЬ рдорд┐рд▓рд╛ рд╣реИ? рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ jboss рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ sudo su - jboss
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
@polusok @kusnier рдореИрдВ рд╕рдорд╛рди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░рди ('рдЗрдХреЛ "рд╡реНрд╣рд╛рдореА" | рд╕реБрдбреЛ рд╕реБ - рдпреВрдЬрд░рдиреЗрдо')
npalrecha, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл sudo su - user рдФрд░ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдж рдХреЗ рд╕рднреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА ... рдпрджрд┐ рдЖрдк /etc/sudoers
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред рдЖрдкрдХреА рд▓рд╛рдЗрди рд╢рд╛рдпрдж username host = ALL
рдкрдврд╝рддреА рд╣реИ рд▓реЗрдХрд┐рди username host = (ALL) ALL
рдкрдврд╝рдиреА рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде sudo(command, user="otheruser")
рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред
class Sudosu:
def __init__(self, user):
self.user = user
def __enter__(self):
self.old_sudo_prefix = env.sudo_prefix
self.old_sudo_user, env.sudo_user = env.sudo_user, self.user
env.sudo_prefix = "sudo -S -p '%(sudo_prompt)s' su - %(sudo_user)s -c"
def __exit__(self, a, b, c):
env.sudo_prefix = self.old_sudo_prefix
env.sudo_user = self.old_sudo_user
рдРрд╕реЗ рдХрд░реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓...
<strong i="17">@task</strong>
def test():
with Sudosu(user=username):
sudo("whoami")
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ...
def sudosu(user):
def wrap(f):
def inner(*args, **kwargs):
old_sudo_prefix = env.sudo_prefix
old_sudo_user, env.sudo_user = env.sudo_user, user
env.sudo_prefix = "sudo -S -p '%(sudo_prompt)s' su - %(sudo_user)s -c"
f(*args, **kwargs)
env.sudo_prefix = old_sudo_prefix
env.sudo_user = old_sudo_user
inner.__name__ = f.__name__
return inner
return wrap
рдРрд╕реЗ рдХрд░реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓...
<strong i="24">@task</strong>
@sudosu("username")
def whoami():
sudo("whoami")
рдпрд╛...
sudo = sudosu("username")(sudo)
<strong i="28">@task</strong>
def whoami():
sudo("whoami")
рдЖрдкрдХреЛ рдЬреИрд╕рд╛ рднреА рд▓рдЧреЗред рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред
рдмреЗрд╢рдХ, рдЖрдк рдмрд╕ env.sudo_prefix
рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдбреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЬреБрдЪрд┐рдЙ, рдореБрдЭреЗ рдмрд╣реБрдд рдЙрдореНрдореАрджреЗрдВ рдереАрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ред рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдЕрдХреЗрд▓реЗ рдХрдкрдбрд╝реЗ рджреЗ рд░рд╣рд╛ рдерд╛ред рдореИрдВ Red Hat Enterprise Linux рд╕рд░реНрд╡рд░ рд░рд┐рд▓реАрдЬ 5.4 (рдЯрд┐рдХрдВрдЧрд╛) рдкрд░ рд╣реВрдВред Npalrecha рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рддреНрд░реБрдЯрд┐:
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ xxxx рдХреЛ '/bin/su - yyyy -c -u . рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ
yyyy /bin/bash -l -c whoami' myserver.com.com рдкрд░ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВред
рдирд┐рд╖реНрдкрд╛рджрд┐рдд: sudo -S -p 'sudo password:' su - yyyy -c -u "yyyy" /bin/bash -l -c "whoami"
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдЕрднреА рднреА рд╕реВрдбреЛ рдХреЛ -u yyyy
рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдирд╛ sudo()
рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рднреА рдЖрдк user
рдХреЛ kwarg рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ sudo рдореЗрдВ рдХреБрдЫ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, esp рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ sudo su - yyyy
рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рддрд░реНрдХ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрдпрд╛ рдЕрдЬреАрдм рдерд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реВрдбреЛ рдиреЗ su - yyyy -c -u "yyyy" /bin/bash -l -c "whoami"
рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рд╕реБ рддрдм -u "achuser" /bin/bash -l -c "whoami"
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ whoami
рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ -c рдХрдИ рдмрд╛рд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рд▓реЗрддрд╛ рд╣реИред рдореИрдВ рд╢рд╛рдпрдж рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рдХрдкрдбрд╝реЗ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдЪрд╛рд░рд╛ рд╣реИ - рдЗрд╕ рддрд░рд╣ рдмрдВрдж рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@polusok @kusnier рдореИрдВ рд╕рдорд╛рди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░рди ('рдЗрдХреЛ "рд╡реНрд╣рд╛рдореА" | рд╕реБрдбреЛ рд╕реБ - рдпреВрдЬрд░рдиреЗрдо')