2012-08-28 2 views

답변

1

su 유틸리티는 대화 형 모드에서만 사용하거나 su 인증과 함께 expect 유틸리티를 사용하여 target_user의 암호를 사용할 수 있습니다. 한 사용자를 sudo 유틸리티를 사용하여 다른 사용자로 인증하려면 - /etc/sudoers 파일에 루트로 적절한 규칙을 작성해야합니다 (따라서 source_user는 암호를 묻지 않습니다). 또한 sudo를 사용할 때 sudo -u root /bin/sh -c 'echo "root cat write anywhere" > /etc/anywhere'을 사용하면 sudo -u root echo "root can write anywhere" > /etc/anywhere의 경우에 권한 거부 오류가 발생합니다.

0

import os, subprocess 
text=str('23.33%') 
cmd = ['su', 'appid', '-c echo text >> /tofhisfile.txt'] 
proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,  stderr=subprocess.PIPE) 
proc.communicate('passx') 

또한이 작동하지 않습니다. 후자를하고 싶지는 않지만 쉘을 사용하더라도 쉘은 문자열을 사용하므로 두 번째 예제와 같은 종류의 문자열이 필요합니다.

어쨌든,이 모든 것을 스크립트 외부에서 수행하고 싶을 것입니다. 그러므로 setuid이 이미 올바르게 작성되었다고 가정하십시오 (스크립트 내에서 수행하는 경우 (os.setuid)이 파일을 작성한 다음 su whoever -c python mything.py으로 스크립트를 실행하십시오.

관련 문제