擅长:python、mysql、java
<p>我终于解决了。我想强调的是,这个解决方案可能有安全缺陷,可能不是每个人都适合的选择。在我的例子中,它应该只运行一次,任何能够利用此代码中任何缺陷的人都已经走了很远。你知道吗</p>
<pre><code>r = Popen(('mkpasswd', '-m', 'sha-512', new_password), stdout=PIPE)
shadow = r.communicate()[0].strip()
proc = Popen(['sudo', '-S', '-k', 'usermod', '-p', shadow, 'foo'],
stdin=PIPE, stdout=PIPE)
proc.stdin.write(sudo_password + b'\n')
proc.stdin.flush()
proc.communicate()
</code></pre>