/etc
に存在するデータベースから情報を得るためのモジュール。
クラスにインクルードして使うこともできる。
require 'etc' p Etc.getlogin
Etc.endgrent
(ruby 1.8 feature)Etc.endpwent
(ruby 1.8 feature)Etc.getgrent
(ruby 1.8 feature)Etc.getpwent
(ruby 1.8 feature)Etc.setgrent
(ruby 1.8 feature)Etc.setpwent
(ruby 1.8 feature)Etc.getlogin
自分の login 名を返す。得られなかった場合は nil を返す。
getlogin は su などでログイン時のユーザとは異なるユーザになっている場合、 現在ではなくログイン時のユーザを返します。
このメソッドが失敗した場合は Etc.getpwuid に フォールバックするとよい。
たとえば、環境変数 USER などもあわせて、以下のようにフォールバックできます。
login_user = ENV['USER'] || ENV['LOGNAME'] || Etc.getlogin || Etc.getpwuid.name
Etc.getpwnam(name)
passwd データベースを検索し、 名前が name である passwd エントリを返す。 戻り値は passwd 構造体で、以下のメンバを持つ。
struct passwd name # ユーザ名(文字列) passwd # パスワード(文字列) uid # ユーザID(整数) gid # グループID(整数) gecos # gecosフィールド(文字列) dir # ホームディレクトリ(文字列) shell # ログインシェル(文字列) # 以降のメンバはシステムによっては提供されない change # パスワード変更時間(整数) quota # クォータ(整数) age # エージ(整数) class # ユーザアクセスクラス(文字列) comment # コメント(文字列) expire # アカウント有効期限(整数) end
名前が name である passwd エントリがなかった場合、 ArgumentError を発生する。
詳細は getpwnam(3) を参照のこと。
Etc.getpwuid([uid])
passwd データベースを検索し、 ユーザ ID が uid である passwd エントリを返す。 戻り値は Etc.getpwnam と同様である。 引数を省略した場合には getuid(2) の値を用いる。
詳細は getpwuid(3) を参照のこと。
Etc.getgrgid(gid)
group データベースを検索し、グループ ID が gid であるグループエントリを返す。 戻り値は group 構造体で、以下のメンバを持つ。
struct group name # グループ名(文字列) passwd # グループのパスワード(文字列) gid # グループID(整数) mem # グループメンバ名の配列 end
詳細は getgrgid(3) を参照のこと。
Etc.getgrnam(name)
name という名前のグループエントリを返す。 戻り値は Etc.getgrgid と同様である。
詳細はgetgrnam(3) を参照のこと。
Etc.group
Etc.group {|group| ... }
全てのグループエントリを順にアクセスするためのイテレータ。
Etc.passwd
Etc.passwd {|passwd| ... }
全てのpasswdエントリを順にアクセスするためのイテレータ。