This is a followup to my earlier post soliciting feedback on the right namespace for my object oriented Unix system administration framework. I've thought about the issues some more, and I've revised the names of the modules I've written. The PAUSE document states that "You need not wait for a response. Generally a lack of response can be taken as acceptance of the module name being proposed." Now, my previous proposal was so crappy, I can't take that statement too seriously. 8). Upon reflection it seems obvious that such a framework should live under Unix::Sysadmin or something like that. Accordingly, I'd like to announce that I intend to upload modules in development under the following names: Unix::Sysadmin::Ainf; # Automount map entry class Unix::Sysadmin::Ginf; # Unix group entry class Unix::Sysadmin::Hinf; # Unix host entry class Unix::Sysadmin::Nginf; # Netgroup class Unix::Sysadmin::Uinf; # Unix user entry class Unix::Sysadmin::List; # Abstract list class ::Ainf; # Automount map ::Ginf; # Group list ::Hinf; # Host list ::Nginf; # Netgroup list ::Uinf; # User list Unix::Sysadmin::Cmds; # Unix commands base class ::FreeBSD; # FreeBSD platform specific commands ::Linux; # Linux platform specific commands ::SunOS; # Solaris platform specific commands Unix::Sysadmin::Files; # Unix file paths base class ::FreeBSD; # FreeBSD platform specific files ::Linux; # Linux platform specific files ::SunOS; # Solaris platform specific files Unix::Sysadmin::Config; # Framework-wide configuration class Unix::Sysadmin::Utility; # Framework-wide utility class I'm about 90% finished designing, 80% finished documenting and 75% finished coding this puppy. (What? You're supposed to do those in sequence? Bah!) I'll wait a month or so to digest any feedback, or simmer in resentment over beeing ignored. Just kidding about the last part. 8) Here follows the toplevel Pod. Thanks for your attention and keep on saving the world! NAME Unix::Sysadmin - Object Oriented Framework for Unix System Administration SYNOPSIS use Unix::Sysadmin::Ainf; # Automount maps class use Unix::Sysadmin::Ginf; # Unix groups class use Unix::Sysadmin::Hinf; # Unix hosts class use Unix::Sysadmin::Nginf; # Netgroup class use Unix::Sysadmin::Uinf; # Unix user class use Unix::Sysadmin::List::<admin object> # Lists of the above use Unix::Sysadmin::Cmds::<OS> # Platform specific commands classes use Unix::Sysadmin::Files::<OS> # Platform specific files classes use Unix::Sysadmin::Config # Framework-wide configuration class use Unix::Sysadmin::Utility # Framework-wide utility class DESCRIPTION Unix::Sysadmin is an object oriented Perl framework for Unix system administration. It's main features are platform independence (at least among FreeBSD, Linux and Solaris), secure transport and a peer-to-peer management model that is in tune with many Unix networks we've seen. This framework does much of what NIS does, but uses a secure transport based on ssh. The trust model is therefore closely patterned on ssh1. It's cross platform (across FreeBSD, Linux and SunOS) and hides architectural differences from the user, so one can update passwd, group and automount information to a heterogeneous groups of hosts without regard to their OSen, or your own for that matter. Any host on the network can manage any number of other hosts provided that the managing host has the ssh key that enables root access on the managed hosts, and also has access to the database of managed hosts and users. Users may be granted access to one, some or all hosts on the network. Automount maps work transparently with amd or autofs, and particular keys may be distributed in the same way as users. Groups work similarly. Though managed users, hosts, groups and amd maps may be distributed selectively, the framework provides a place to keep these objects globally unique. Entity Classes Unix::Sysadmin provides several classes that represent entities that are frequently the target of Unix system administration activity. Of particular interest are the Hinf and Uinf classes, which represent hosts and users respectively. These are treated in detail in the section on "The Hinf Classes" and the section on "The Uinf Class" below. Other classes that represent manageable entities are the Ainf class for automount maps (either amd or autofs), the Ginf class for Unix groups and the Nginf class for "netgroups", an idea stolen from but not orthogonal with NIS. Support Classes In addition to entity classes, Unix::Sysadmin includes several classes that augment manageable entities. The List class is a base class for lists of the basic entity classes. This class provides storage, iteration, sorting, addition, and deletion of lists of the basic entities. The various subclasses of List provide methods to update their corresponding Unix administrative files. The Cmds and Files classes provide architecture dependant information about their respective subject matter.The Config and Utility classes contain the sort of information you'd expect. The following sections provide a somewhat lower-level treatment of each of these classes in turn Each class also has one or more manpages which are referred to in the appropriate section below. Entity Classes Entity classes represent manageable objects or resources in the Unix::Sysadmin framework. The Hinf Classes Unix::Sysadmin::Hinf is a base class for several system specific classes describing Unix hosts of various architectures: Unix::Sysadmin::Hinf::FreeBSD Tested on FreeBSD versions from 2.2.5 to 4.0 Unix::Sysadmin::Hinf::Linux Tested on Redhat 6.1 and 6.2 Unix::Sysadmin::Hinf::SunOS Tested on SPARC Solaris 2.6 through Solaris 8. An Hinf object knows what its hardware and software architectures are, what sorts of commands it can perform and where its configuration files are. It can therefore take actions (methods) on itself such as updating administrative files (with the help of List:: objects). Any host can be nominated as a 'master' host for all or a subset of Unix hosts on a network. All that is required for this is that the host possess an ssh key allowing root access on the hosts to be managed, and access to a database of the various entities. These databases are lists (see the section on "The List Classes") of Hinf, Uinf, Ainf, Ginf and Nginf objects. For a detailed look at the properties and methods of the Hinf class, see the Unix::Sysadmin::Hinf(3) manpage. The Uinf Class The Uinf class describes users in a Unix network. Uinf objects contain traditional Unix passwd information, as well as data suitable for export to an LDAP or other directory format. The class also keeps track of access permissions assigned to the user represented. A user can be granted or denied access to all, some or one host in the network. Though users may access different sets of hosts, the Unix::Sysadmin framework provides a central place to store UIDs and usernames so that these can be made unique across a set of managed hosts. For a detailed look at the properties and methods of the Uinf class, see the Unix::Sysadmin::Uinf(3) manpage. The Ainf Class The Ainf class represents automount map entries (keys). Automount keys may be applied to sets of hosts so that access to a particular exported filesystem can be distributed to one, some or all hosts in a network. For a detailed look at the properties and methods of the Ainf class, see the Unix::Sysadmin::Ainf(3) manpage. The Ginf Class The Ginf class represents Unix group entries. As with the other entity classes, a Ginf object may be applied to one, some or all hosts in a network. Like Uinf objects, Ginf objects can be made globally unique with regard to group name and GID. For a detailed look at the properties and methods of the Ginf class, see the Unix::Sysadmin::Ginf(3) manpage. Support Classes These classes serve support roles within the Unix::Sysadmin framework. The Nginf Class The Nginf class represents netgroups. This object allows entity objects to refer to sets of hosts with a single symbolic name. The idea is stolen from NIS, of course. I don't run NIS or NIS+ so I don't attempt to update its configuration. This class is therefore a support class rather than an entity class. For a detailed look at the properties and methods of the Nginf class, see the Unix::Sysadmin::Nginf(3) manpage. The List Classes These classes are where much of the action is. Unix::Sysadmin::List is a base class that provides storage, iteration, sorting, addition and deletion of its underlying entity class in a list. The various subclasses of List provide methods to produce the Unix administrative file(s) corresponding to the entity class being listed. Unix::Sysadmin::List::Hinf This class will produce a host file or DNS database from its contents. See the Unix::Sysadmin::List::Hinf(3) manpage for details of these methods and the Unix::Sysadmin::List::Hinf(5) manpage for file format. Unix::Sysadmin::List::Uinf If invoked by objects that belong to subclasses of Hinf, objects of this class will produce password databases in whatever format required by the invoking Hinf object. They may also enforce access policies which means they may produce different passwd entries depending on the rights assigned to a partcular user and on which particular Hinf object is involved, See the Unix::Sysadmin::List::Uinf(3) manpage for details of these methods and the Unix::Sysadmin::List::Uinf(5) manpage for file format. Unix::Sysadmin::List::Ainf If invoked by objects that belong to subclasses of Hinf, objects of this class will produce automount maps in either amd or automount format depending on the requirements of the invoking Hinf object. In a manner similar to List::Uinf, objects of this class may produce differing amd maps depending on the particular invoking Hinf object. See the Unix::Sysadmin::List::Ainf(3) manpage for details of these methods and the Unix::Sysadmin::List::Ainf(5) manpage for file format. Unix::Sysadmin::List::Ginf This class produces /etc/group files. In a manner similar to List::Uinf, objects of this class may produce differing group files depending on the particular invoking Hinf object. See the Unix::Sysadmin::List::Ginf(3) manpage for details of these methods and the Unix::Sysadmin::List::Ginf(5) manpage for file format. Unix::Sysadmin::List::Nginf This class produces no corresponding Unix file. It could produce an /etc/netgroup, but if you are running NIS, what do you need this stuff for? See the Unix::Sysadmin::List::Nginf(5) manpage for file format. The Cmds Classes The Unix::Sysadmin::Cmds class is a base class for os specific Unix commands. The base class provides "lowest common denominator" definitions which the following classes may override or supplement: Unix::Sysadmin::Cmds::FreeBSD FreeBSD specific commands. See the Unix::Sysadmin::Cmds::FreeBSD(3) manpage. Unix::Sysadmin::Cmds::Linux Linux specific commands. See the Unix::Sysadmin::Cmds::Linux(3) manpage. Unix::Sysadmin::Cmds::SunOS SunOS specific commands. See the Unix::Sysadmin::Cmds::SunOS(3) manpage. The Files Classes The Unix::Sysadmin::Files class is a base class for os specific Unix file paths. The base class provides "lowest common denominator" definitions which the following classes may override or supplement: Unix::Sysadmin::Files::FreeBSD FreeBSD specific files. See the Unix::Sysadmin::Files::FreeBSD(3) manpage. Unix::Sysadmin::Files::Linux Linux specific files. See the Unix::Sysadmin::Files::Linux(3) manpage. Unix::Sysadmin::Files::SunOS SunOS specific files. See the Unix::Sysadmin::Files::SunOS(3) manpage. SEE ALSO the Unix::Sysadmin::Hinf(3) manpage, the Unix::Sysadmin::Uinf(3) manpage, the Unix::Sysadmin::Ainf(3) manpage, the Unix::Sysadmin::Ginf(3) manpage, the Unix::Sysadmin::Nginf(3) manpage, the Unix::Sysadmin::List::Hinf(3) manpage, the Unix::Sysadmin::List::Unif(3) manpage, the Unix::Sysadmin::List::Ainf(3) manpage, the Unix::Sysadmin::List::Ginf(3) manpage, the Unix::Sysadmin::List::Hinf(5) manpage, the Unix::Sysadmin::List::Uinf(5) manpage, the Unix::Sysadmin::List::Ainf(5) manpage, the Unix::Sysadmin::List::Ginf(5) manpage, the Unix::Sysadmin::List::Nginf(5) manpage, the Unix::Sysadmin::Cmds::FreeBSD(3) manpage, the Unix::Sysadmin::Cmds::Linux(3) manpage, the Unix::Sysadmin::Cmds::SunOS(3) manpage, the Unix::Sysadmin::Files::FreeBSD(3) manpage, the Unix::Sysadmin::Files::Linux(3) manpage, the Unix::Sysadmin::Files::SunOS(3) manpage AUTHOR Howard Owen <[EMAIL PROTECTED]> -- Howard Owen - [EMAIL PROTECTED] - +1-831-477-1123 "Even if you are on the right track, you'll get run over if you just sit there."