home changes contents help options

212:ユーザやグループに関する情報を得る

プロセスを実行したユーザのユーザ名を得る

プロセスを実行したユーザのユーザ名を確認するには次のようにします。 os.getuid で現在のプロセスのユーザ id を得ます。それを元に pwd.getpwuid でパスワードデータベースを調べます。

>>> import os
>>> import pwd
>>> pwd.getpwuid(os.getuid()).pw_name
'spam'

ユーザ情報を得る

pwd モジュールを用います。

ユーザー ID を元にパスワードデータベースにアクセスするには pwd.getpwuid を、ユーザ名を元にするならば pwd.getpwnam を使います。全ユーザを表示するには pwd.getpwall() を使います。

>>> pwd.getpwuid(1000)
('spam', 'x', 1000, 1000, 'spam...', '/home/spam', '/bin/bash')
>>> pwd.getpwnam('spam')
('spam', 'x', 1000, 1000, 'spam...', '/home/spam', '/bin/bash')

対応するユーザが見つかればタプル状のオブジェクトが返ってきます。見つからなければ KeyError? 例外が送出されます。このタプル状オブジェクトには、インデックスもしくは pw_name のような属性名でのアクセスが可能です。

>>> p = pwd.getpwuid(1000)
>>> p[0]
'spam'
>>> p.pw_name
'spam'

インデックス、属性名およびそれらの意味するところは Python ライブラリリファレンスの pwd を参照してください。

なお、シャドウパスワードデータベースのほうにアクセスしたい場合は spwd モジュールを使用してください。

グループ情報を得る

grp モジュールを用います。

グループ ID を元にグループデータベースにアクセスするには grp.getgrgid を、グループ名を元にするならば grp.getgrnam を使います。全グループを表示するには grp.getgrall() を使います。

これらの関数の戻り値の意味するところは Python ライブラリリファレンスの grp を参照してください。