특정 계정 ID "appid"및 passwd "passx"에서만 액세스 할 수있는 파일에 텍스트를 추가하고 싶습니다. 다음 코드를 시도했는데 작동하지. 당신은 shell=True
와 함께 목록을 사용하는Python에서 변경된 (전환 된) 사용자의 명령 행 스크립트를 실행하십시오.
os.system('su appid -c echo text >> /tothisfile.txt')
특정 계정 ID "appid"및 passwd "passx"에서만 액세스 할 수있는 파일에 텍스트를 추가하고 싶습니다. 다음 코드를 시도했는데 작동하지. 당신은 shell=True
와 함께 목록을 사용하는Python에서 변경된 (전환 된) 사용자의 명령 행 스크립트를 실행하십시오.
os.system('su appid -c echo text >> /tothisfile.txt')
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
의 경우에 권한 거부 오류가 발생합니다.
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
으로 스크립트를 실행하십시오.