Pythonのgrpモジュールを使ってUNIXグループデータベースにアクセスする方法
UNIXのグループデータベースへアクセスするには、Python標準ライブラリのgrpモジュールを使用します。このモジュールが返すエントリーは、タプルのようなオブジェクトとして扱えます。
grpモジュールを使用するには、まず以下のようにインポートします。
import grp
grpデータベースの属性
グループデータベースの各エントリーには、次の4つの属性が含まれています。
| インデックス | 属性と説明 |
|---|---|
| 0 | gr_name グループ名(文字列) |
| 1 | gr_passwd グループの暗号化されたパスワード(通常は空、または「x」) |
| 2 | gr_gid グループID(数値・整数型) |
| 3 | gr_mem グループに所属するユーザー名のリスト(文字列のリスト) |
つまり、グループオブジェクトにおいてgidは整数型、グループ名とパスワードは文字列型、メンバーリストは文字列のリスト型となります。
grpモジュールの主なメソッド
grp.getgrgid(gid)
指定したグループID(gid)に対応するグループデータベースのエントリーを返します。該当するグループが存在しない場合はKeyErrorが発生します。
grp.getgrnam(name)
指定したグループ名(name)に対応するグループデータベースのエントリーを返します。該当するグループが存在しない場合もKeyErrorが発生します。
grp.getgrall()
システムに登録されているすべてのグループデータベースのエントリーをリストとして返します。
サンプルコード
import grp
# グループIDからパスワード情報を取得
print("ID: 4: " + str(grp.getgrgid(4)) + '\n')
# グループ名からパスワード情報を取得
print("cdrom group: " + str(grp.getgrnam('cdrom')) + '\n')
# すべてのグループを一覧表示
for entry in grp.getgrall():
print("Group Name: " + entry[0] + "\t\tMembers: " + str(entry.gr_mem))
実行結果
$ sudo python3 example.py ID: 4: grp.struct_group(gr_name='adm', gr_passwd='x', gr_gid=4, gr_mem=['syslog', 'unix_user']) cdrom group: grp.struct_group(gr_name='cdrom', gr_passwd='x', gr_gid=24, gr_mem=['unix_user']) Group Name: root Members: [] Group Name: daemon Members: [] Group Name: bin Members: [] Group Name: sys Members: [] Group Name: adm Members: ['syslog', 'unix_user'] Group Name: tty Members: [] Group Name: disk Members: [] Group Name: lp Members: [] Group Name: mail Members: [] Group Name: news Members: [] Group Name: uucp Members: [] Group Name: man Members: [] Group Name: proxy Members: [] Group Name: kmem Members: [] Group Name: dialout Members: [] Group Name: fax Members: [] Group Name: voice Members: [] Group Name: cdrom Members: ['unix_user'] Group Name: floppy Members: [] Group Name: tape Members: [] Group Name: sudo Members: ['unix_user'] Group Name: audio Members: ['pulse'] Group Name: dip Members: ['unix_user'] Group Name: www-data Members: [] Group Name: backup Members: [] …….. …….. ……..
なお、グループデータベースへのアクセスには管理者権限が必要になる場合があるため、実行時にsudoコマンドを使用しています。また、getgrall()の出力は環境によって異なり、登録されているグループの数だけ表示されます。
-
iPhoneアプリでSQLiteデータベースにアクセスする方法をSwiftで解説
はじめに:データ保存はアプリ開発の重要要素アプリケーションを設計するうえで、データの保存は最も重要な要素の一つです。データを保存する方法は数多くありますが、その中でも広く使われているのがSQLiteデータベースです。iPhone上でSQLiteデータベースへアクセスする方法は複数ありますが、本記事ではSwiftを使った最もシンプルな方法を紹介します。なお、SQLiteとはC言語のライブラリとして実装されたリレーショナルデータベース管理システム(RDBMS)であり、アプリケーションに組み込んで動作させる軽量データベースです。サーバーが不要で、モバイルアプリのローカルデータ保存に最適です。このチュ
-
Pythonデバッガー(pdb)の使い方を徹底解説!基本コマンドからブレークポイントまで
Pythonデバッガー(pdb)とはソフトウェア開発の分野では、プログラム内のエラー(バグ)を発見し修正するプロセスを「デバッグ」と呼びます。Pythonの標準ライブラリにはpdbモジュールが含まれており、これはPythonプログラムをデバッグするための一連のユーティリティを提供します。デバッグ機能はPdbクラスとして定義されており、このモジュールは内部的にbdbおよびcmdモジュールを利用しています。コマンドラインからの起動方法pdbモジュールには非常に便利なコマンドラインインターフェースが用意されています。Pythonスクリプトの実行時に-mスイッチを使ってインポートすることで、デバッガー