/sys-admin

A Ruby library that presents a unified, cross-platform replacement for the Etc module

Primary LanguageRuby

== Description
  The sys-admin library is a unified, cross platform replacement for the Etc module.
   
== Installation
  gem install sys-admin

== Synopsis
  require 'sys/admin'
  include Sys

  # Returns an Array of User objects
  a = Admin.users

  # Returns an Array of Group objects
  g = Admin.groups

  # Get information about a particular user
  p Admin.get_user("nobody")

  # Get information about a particular group
  p Admin.get_group("adm")

== Admin
Admin.get_login
  Returns the user name (only) of the current login.

Admin.get_user(name, options = {})
Admin.get_user(uid, options = {})
  Returns a User object based on +name+ or +uid+. The +options+ hash is
  for MS Windows only, and allows you to restrict the search based on the
  options you provide, e.g. 'domain' or 'localaccount'.
   
Admin.get_group(name, options = {})
Admin.get_group(gid, options = {})
  Returns a Group object based on +name+ or +uid+. The +options+ hash is
  for MS Windows only, and allows you to restrict the search based on the
  options you provide, e.g. 'domain' or 'localaccount'.

Admin.groups(options = {})
  Returns an Array of Group objects.

  The +options+ hash is for MS Windows only, and allows you to restrict the
  search based on the options you provide, e.g. 'domain' or 'localaccount'.

Admin.users(options = {})
  Returns an Array of User objects.
   
  The +options+ hash is for MS Windows only, and allows you to restrict the
  search based on the options you provide, e.g. 'domain' or 'localaccount'.
   
== User class
=== User (Windows)
  The User class has the following attributes on MS Windows systems:
	
  * account_type
  * caption
  * description
  * domain
  * password
  * full_name
  * gid
  * install_date
  * name
  * sid
  * status
  * disabled?
  * local?
  * lockout?
  * password_changeable?
  * password_expires?
  * password_required?
  * uid
     
=== User (Unix)
  The User class has the following attributes on Unix systems:
	
  * name
  * passwd
  * uid
  * gid
  * dir
  * shell
  * gecos
  * quota
  * age
  * class
  * comment
  * change
  * expire

== Group Classes
=== Group (Windows)
  The Group class has the following attributes on MS Windows systems:
	
  * caption
  * description
  * domain
  * install_date
  * name
  * sid
  * status
  * gid
  * local?
	
=== Group (Unix)
  The Group class has the following attributes on Unix systems:
	
  * name
  * gid
  * members
  * passwd

== Error Classes
Admin::Error < StandardError
  Raised if anything goes wrong with any of the above methods.

== Developer's Notes
=== MS Windows
  The Windows version now uses a win32ole + WMI approach to getting
  information.  This means that the WMI service must be running on the
  target machine in order to work (which it is, by default).
	
=== UNIX
  The underlying implementation is similar to core Ruby's Etc implementation.
  But, in addition to the different interface, I use the re-entrant version
  of the appropriate functions when available.

== Future Plans
  Make the User and Group objects comparable.
  Add ability to add, configure and delete users on Unix platforms.

== Known Bugs
  None that I'm aware of. If you find any, please log them on the project
  page at:

  https://github.com/djberg96/sys-admin

== Contributions
  Although this library is free, please consider having your company
  setup a gittip if used by your company professionally.

  http://www.gittip.com/djberg96/

== License
  Artistic 2.0

== Copyright
  (C) 2005-2014, Daniel J. Berger
  All Rights Reserved

== Author
  Daniel J. Berger