Pythonのpwdモジュールでパスワードデータベースにアクセスする方法
LinuxなどのUNIX系システムでは、ユーザーアカウント情報が「パスワードデータベース」(/etc/passwd)として管理されています。Pythonからこのデータベースにアクセスするには、標準ライブラリのpwdモジュールを使用します。このモジュールを利用すると、ユーザーアカウントやパスワードデータベースのエントリを取得でき、各エントリはタプルのようなオブジェクトとして扱われます。
なお、pwdモジュールはUNIX系プラットフォーム専用であり、Windows環境では利用できない点に注意してください。
pwdモジュールを使用するには、まず次のようにインポートします。
import pwd
パスワードデータベースの主な属性
| インデックス | 属性と説明 |
|---|---|
| 0 | pw_name ログイン名(ユーザー名) |
| 1 | pw_passwd 暗号化されたパスワード |
| 2 | pw_uid ユーザーの数値ID(ユーザーID) |
| 3 | pw_gid ユーザーが属するグループの数値ID(グループID) |
| 4 | pw_gecos ユーザーの氏名やコメントフィールド(GECOSフィールド) |
| 5 | pw_dir ユーザーのホームディレクトリ |
| 6 | pw_shell ユーザーのログインシェル(コマンドインタプリタ) |
注意: 通常、pw_passwdには暗号化されたパスワードが格納されます。しかし、近年のシステムではセキュリティ強化のためシャドウパスワード(shadow password)方式が採用されており、実際にはpw_passwdには「*」や「x」といった記号しか入っていません。暗号化されたパスワード本体は/etc/shadowに分離して管理されています。
pwdモジュールの主なメソッド
pwd.getpwuid(uid)
指定した数値のユーザーID(uid)に対応するパスワードデータベースのエントリを返します。
pwd.getpwnam(name)
指定したユーザー名(name)に対応するパスワードデータベースのエントリを返します。
pwd.getpwall()
パスワードデータベースの全エントリをリストとして返します。
サンプルコード
import pwd
# rootユーザーの詳細情報を取得して表示
print("Root: " + str(pwd.getpwnam('root')) + '\n')
# 全ユーザーの名前とシェルを一覧表示
for entry in pwd.getpwall():
print("Name: " + entry[0] + "\t\tShell: " + entry.pw_shell)実行結果
$ python3 example.py Root: pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash') Name: root Shell: /bin/bash Name: daemon Shell: /usr/sbin/nologin Name: bin Shell: /usr/sbin/nologin Name: sys Shell: /usr/sbin/nologin Name: sync Shell: /bin/sync Name: games Shell: /usr/sbin/nologin Name: man Shell: /usr/sbin/nologin …… …… ……
このように、エントリはインデックス番号(entry[0])でも属性名(entry.pw_shell)でもアクセスできるため、目的に応じて読みやすい方法を選択できます。ユーザー管理ツールやシステム監視スクリプトを作成する際に、pwdモジュールは非常に便利です。
-
iPhoneアプリでSQLiteデータベースにアクセスする方法をSwiftで解説
はじめに:データ保存はアプリ開発の重要要素アプリケーションを設計するうえで、データの保存は最も重要な要素の一つです。データを保存する方法は数多くありますが、その中でも広く使われているのがSQLiteデータベースです。iPhone上でSQLiteデータベースへアクセスする方法は複数ありますが、本記事ではSwiftを使った最もシンプルな方法を紹介します。なお、SQLiteとはC言語のライブラリとして実装されたリレーショナルデータベース管理システム(RDBMS)であり、アプリケーションに組み込んで動作させる軽量データベースです。サーバーが不要で、モバイルアプリのローカルデータ保存に最適です。このチュ
-
Accessデータベースにパスワードを設定・解除する方法をわかりやすく解説
データベースへの不正利用や不正アクセスを防ぎたい場合、Microsoft Accessではデータベースにパスワードを設定して保護することができます。パスワードを覚えていれば、いつでも暗号化を解除してデータベースを利用できますが、万一路忘れてしまうとデータベース自体が使用できなくなるため、注意が必要です。 Accessデータベースにパスワードを設定する方法 ここからは、実際の設定手順を順番に見ていきましょう。 Accessデータベースをパスワードで暗号化する手順 まず、「ファイル」タブをクリックします。 次に、バックステージビューで「開く」をクリックします。 「参照」をクリックし、保護したいファ