私のサーバーでubuntuを使用しています。Pythonシェル内のユーザーを変更する
私は二人のユーザーを持って、彼らはUSER1とuser2の
各ユーザーが自分のニーズのために設定されたアクセス権を持つ独自のプロジェクトフォルダを持つことができます。しかしuser1は、他のユーザーのプロジェクトフォルダにあるpythonスクリプトを実行する必要があります。私はこれにsubprocess.Popen
を使用します。 Pythonファイルにはアクセス権が必要なので、そのスクリプトを呼び出す際に問題はありません。しかし、ログファイル(user2の許可を持っている)によって、のパーミッションが拒否されたエラー(それらは使用する必要があるものではなく、他のユーザーに属しているため)エラーが発生します。
だから私は
Popen("exit", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE) #exit from current user, and be root again
Popen(["sudo", "user2"], shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
Popen("/usr/bin/python /some/file/directory/somefile.py param1 param2 param3", shell=True, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
でユーザーを変更しようとしたが、第2 Popen
はSU
で失敗します。ターミナル
から実行する必要がありますが変更する方法はありますPythonシェル内のユーザーですか?
PS:何らかの理由により、私はログファイルに関するユーザー権限を変更できません。私が実行している2つの異なるDjangoのプロジェクトを持って
...私は物事を明確にするためにいくつかのexplenaitonを行う必要があります。私は他のユーザーに切り替える方法を見つける必要がある...
EDIT。各プロジェクトにはユーザがあり、それぞれのプロジェクトコードとログが保存される独自のユーザフォルダがあります。
場合によっては、私はproject1からprojet2にいくつかのデータを転送する必要があります。最も簡単な方法は、パラメータを受け取り、2番目のプロジェクトに関連する仕事[データ挿入]を行うPythonスクリプトを書くことです。
したがって、project1内でいくつかの特定の関数が呼び出されると、私はproject2プロジェクトフォルダにあるpyスクリプトを呼び出したいので、2番目のprjectでデータを更新できます。
しかし、これはproject1内のPopen
を呼び出すため、currntユーザーはuser1です。しかし、私のスクリプト(プロジェクト2で)は、アクセス許可のために私を拒否するいくつかのログファイルを持っています...
だから、どういうわけか、私はアクセス権の問題がないので、私はuser1からuser2に切り替える必要があります。 pythonファイル。または、これを行うための別の方法を見つけることができます。
Popenは、pythonプロセスのサブプロセスで指定されたコマンドを実行します。私はそれがあなたの最初の誤解だと思う。 –