>開発>python>[Python]Pythonの実行ユーザーを確認

ジョブ管理ツールなどで、外部からPythonを実行すると、パーミッション関連のエラーがよく起こる。そういった場合は、Pythonを実行しているユーザーを確認する。osモジュールのgeteuid関数ではEUID、getuid関数ではUIDを確認できる。

UIDはユーザやプロセスを特定させるIDで、EUIDは、権限を特定させるID。一般ユーザがrootユーザの権限がコマンドを実行する際に、”sudo”などを利用して権限を一時的に昇格させた場合、ログイン中にUIDを変えることができないが、EUIDを変えられる。よって、UIDはユーザやプロセスを特定させるIDで、EUIDは、権限を特定させるID、ということになるのでUIDが0であればrootユーザ、EUIDが0であればrootユーザの権限と言うことになる。

import os
 
# 実行UID(EUID)確認
euid = os.geteuid()
print(euid)

# UID確認
uid = os.getuid()
print(uid)

下記は、上記コードの出力結果(自分の開発環境内)。IDなので数値が出力される。

1002 # EUID
1002 # UID

この値がどのユーザーにあたるかは、”\etc\passwd”のファイルの中身を確認するばよい。

sudo cat \etc\passwd

今回の場合だと、”1002″なのでtestユーザーで実行されたことがわかる。

root:x:0:0:root:/root:/bin/bash
・
・
・
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
ssm-user:x:1001:1001::/home/ssm-user:/bin/sh
postgres:x:111:116:PostgreSQL administrator :/var/lib/postgresql:/bin/bash
test:x:1002:1002:,,,:/home/webapp:/bin/bash

この他にも、osモジュールにはプロセスの制御端末にログインしているユーザー名を返す関数などもある。

Pythonに関する記事

記事を読んでいただきありがとうございました。

Page Top