Ubuntuの/usr/binフォルダーに特別なファイルを置きたいのですが。基本的に私はPythonでセットアップファイルを書き込もうとしています。
しかし、仕事を遂行するために管理者特権が必要です、これらの特権をセットアップに提供する方法(パスワードを持っていて、それをプログラムで使用できる場合)?
Ubuntuの/usr/binフォルダーに特別なファイルを置きたいのですが。基本的に私はPythonでセットアップファイルを書き込もうとしています。
しかし、仕事を遂行するために管理者特権が必要です、これらの特権をセットアップに提供する方法(パスワードを持っていて、それをプログラムで使用できる場合)?
エスカレーションされた特権でプログラムを実行する必要があります。Ubuntuでは、これは通常sudo
、ユーザーにパスワードの入力を求めるコマンドを使用して実行されます。
すでに実行中のスクリプトの特権をエスカレートすることはできません(ローカルエクスプロイトを使用しない限り)。
最善の方法は、@ Lattywareのアドバイスに従い、ユーザーにルート特権を使用して(sudo
またはその他の方法で)スクリプトを実行するように強制することです。これは、インストーラーにとってはかなり一般的な方法です。
ただし、本当に途中で特権を昇格する必要がある場合(理由は想像できません)、次のようなことができます。
import os
cpstr = 'echo %(pass)s | sudo -S cp "%(from)s" "%(to)s"'
os.system(cpstr % {'pass':'userpassword', 'from':'./build/bin/myapp', 'to':'/bin/myapp'})