\language=0 % Switch to English (see below) \input amigatexinfo \input texinfo @c -*-texinfo-*- @c Make sure you have at least texinfo.tex version 2.109 @c (see definition of \texinfoversion) @c This is the English .texinfo documentation for AM @c Use this file when translating the doc into another language @c When compiling with TeX use a format file created from plain.initex @c with the appropriate hyphenation table @c Or (if you have a multilanguage format file) set the \language @c counter. (See above) @c %**start of header @setfilename am1_1.guide @set docVersion 2.66 @set docDate 20.2.95 @settitle AM Manual @setchapternewpage odd @c uncomment the following lines and translate the terms @c @set Chapterstring Chapter @c @set Appendixstring Appendix @c @set sectionstring section @c @set Sectionstring Section @c @set pagestring page @c @set xrefstring see @c @set Xrefstring See @c @set tocstring Table of Contents @c Do not modify the following part upto %**end of header @iftex @tex % This is a replacement for the (R) defined in amigatexinfo.tex {\gdef^^ae{{\ooalign{\hfil\raise.07ex\hbox{\sevenrm R}\hfil\crcr\mathhexbox20D}}}} % % We use only an uparrow to indicate an index entry \gdef\ref#1{{\tt\frenchspacing$\uparrow$#1}} % % This is a replacement for the @contents command. It is now able to % handle umlauts etc. \outer\gdef\contents{% \catcode`\"=\other% \startcontents{\value{tocstring}}% \input \jobname.toc \endgroup \vfill \eject } @end tex @end iftex @synindex fn cp @synindex vr cp @synindex ky cp @synindex pg cp @synindex tp cp @c %**end of header @set version 1 @set revision 1 @set fullVersion 1.1 @set nameVer AM 1.1 @ifinfo This file documents AM, an account manager for the Multi User Security System for the Commodore Amiga Computer. Copyright © 1994/1995 by Ingolf Koch Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute translations of this manual into another language as long as this copyright notice is stated in the translation. @end ifinfo @titlepage @title AM @subtitle MultiUser Account Manager @subtitle Version @value{fullVersion}, released on @value{docDate} @author by Ingolf Koch @page @vskip 0pt plus 1filll Copyright © 1994/1995 Ingolf Koch Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute translations of this manual into another language as long as this copyright notice is stated in the translation. @end titlepage @node Top, , , (dir) @ifinfo @center AM - Account Manager for MultiUser @center Version @value{fullVersion} @center © 1994/1995 by Ingolf Koch $VER: english/am1_1.guide @value{docVersion} (@value{docDate}) This file documents version @value{fullVersion} of AM, an Account Manager for @ref{MultiUser}. @end ifinfo @menu * Overview:: Preliminary information. * Legal Stuff:: Responsibility, @dots{} * Requirements:: What you @emph{do} need. * Getting Started:: * Main Window:: * Options Window:: * ARexx port:: * Online Help:: OS 3.0+ only * Development:: Author, crew, credits, history * Localization:: For translators * Related products:: Info on MultiUser, MUI, AmiTCP * Index:: @end menu @node Overview, Legal stuff, , Top @unnumbered Overview @cindex About AM @cindex Overview Are you running @ref{MultiUser}, the Multi User Security System for the Commodore Amiga? Then you surely have thought of a program providing an easy way to maintain the users and groups in your system. Of course, such a program should have a graphical user interface which allows doing all necessary operations by a few mouse klicks or key strokes. Additionally, it should be localized i.e.@: speaking to you in your preferred language. Then @code{AM} is the program you want. It was written to support the system operator's work by supplying an easy-to-use user interface based on @ref{MUI} (Magic User Interface) by Stefan Stuntz. The following gives you a quick overview on @code{AM}'s facilities: @itemize @bullet @item localized (see @ref{Localization}) @item needs and makes extensive use of @w{MUI 2.0} (@code{muimaster.library} @w{version 7+}) @item supports the following operations on the @ref{MultiUser} system files @itemize @minus @item create new users/groups @item edit any characteristics of an existing user/group @item delete users/groups @item temporarily ban a user from the system @item edit the @file{MultiUser.config} file @end itemize @item automatically creates new $HOME directories and installs default files there by executing a user supplied script @item checks $HOME directories @item searches @ref{MultiUser} partitions for files with bad owner information and changes them @item supports @ref{AmiTCP} @code{office}, @code{work phone}, and @code{home phone} entries @item AmigaGuide® @ref{Online Help} system @item @code{ReadArgs()} and ToolTypes argument handling @item @ref{ARexx port} @end itemize @node Legal Stuff, Requirements, Overview, Top @unnumbered Legal Stuff @cindex Legal Stuff There's not very much to say about this topic: This program may be freely distributed i.e.@: without any charge except for a copying fee of maximum @w{USD 5}. It may not be included in commercial programs without prior written consent by the author. This program may be included in shareware or public domain libraries as long as the price per disk does not exeed @w{USD 5}. `@value{nameVer}' may be stored and made accessible in electronic networks such as the Internet, on anonymous ftp servers and in bulletin board systems. `@value{nameVer}' may be stored on CD-ROMs (especially on ``Fresh Fish'', ``Meeting Pearls'', and ``Aminet'' CD-ROMs). Storage and use of this program is only permitted for non military purposes, i.e.@: this program may not be used by military institutions or by non-military institutions co-operating with military institutions. Although @value{nameVer} has been thoroughly tested on various platforms there might still be some bugs in it. So use this program at your own risk. The author of @value{nameVer} may not be made responsible for any damage caused directly or indirectly by @value{nameVer}. @node Requirements, Getting Started, Legal Stuff, Top @chapter Requirements @cindex Bugs @cindex Requirements @cindex Stack There are a few things you should have installed when you want to start @code{AM}: @itemize @bullet @item Of course, you need @ref{MultiUser} (Multi User Security System by Geert Uytterhoeven) @w{:@minus{})} @item This implies that another requirement @w{(AmigaOS 2.0+)} is automatically satisfied. @item @code{AM} makes extensive use of the new features of @w{@ref{MUI} 2.0}. So make sure you have at least @w{version 7} of @code{muimaster.library}. @ref{MUI} (Magic User Interface) is © by Stefan Stuntz (see the file @file{ReadMe.mui} for more info). @item If you want to use the locale facilities, you need at least @w{AmigaOS 2.1}. @item The partition scan function could use a lot of stack if you have a very deep directory tree. The minimal stack for @code{AM} can be roughly calculated by the formula (only valid for @w{AmigaOS 3.0}---might be less for 2.0 and 2.1): @iftex @tex $$@var{min\_stack} = \max(5000\>,\>900+500\cdot@var{max\_depth})\;.$$ @end tex @end iftex @ifinfo @example @var{min_stack} = @code{maximum_of} 5000 and (900 + 500*@var{max_depth}). @end example @end ifinfo @item To open the @ref{Options Window}, you need a screen with at least about 300 rows (or a very tiny font). Due to a bug in @code{muimaster.library} @w{version 7}, @code{AM} will hang if a window cannot be opened. This has been fixed since @w{version 8} (thanks, Stefan). @item Although not required, it is recommended that you have at least a 68020 processor. The GUI would be very slow otherwise @w{;@minus{})} @item @code{AM} should be owned by @t{root} and can be made readable and executable for everyone. But @emph{never} set the @w{@t{u} flag}!!! @end itemize @node Getting Started, Main Window, Requirements, Top @chapter Getting Started @cindex Getting Started You can start @code{AM} both from Workbench and CLI. To modify its standard behaviour see @ifinfo @menu * ToolTypes:: * Command line arguments:: @end menu @end ifinfo @iftex @ref{ToolTypes} and @ref{Command line arguments}. @end iftex If you start from CLI make sure you have enough stack before running @code{AM}. In this version, @code{AM} will not check and automatically increase stack size. If @code{locale.library} is present in your system, @code{AM} will try to open the specified catalog (if you start from CLI and supply a language name) or the default language (set by Workbench's @file{Prefs/Locale}). If there's no @code{locale.library} or the desired catalog could not be opened, @code{AM} will talk to you in English (the builtin language). Please refer to the chapter on @ref{Localization} for information on which languages are supported or on what to do if you want to translate @code{AM}. After opening @code{locale.library}, @code{AM} checks if you are @t{root}. If not, you are prompted to enter @t{root}'s password. Note that @code{AM} refuses to work if you supply a wrong password @w{:@minus{})} If you are running @code{AM} for the first time (i.e.@: there's no @file{ENV:mui/MU_AM.cfg} file) the GUI will open with the default layout. You may want to change the layout and save it permanently (see @ref{Edit/Save} and your @file{Prefs/MUI} doc). @code{AM} automatically finds your @ref{passwd} and @ref{MultiUser.group} files and loads them into its memory. All error messages are localized, so if there's an error during startup, you'll see the reason in your preferred language (if there's a suitable catalog). Have a look at the @ref{Requirements} chapter for more information on what is needed to run @code{AM}. @node ToolTypes, Command line arguments, , Getting Started @section Starting from Workbench @cindex ToolTypes @cindex Workbench @code{AM} supports some ToolTypes: @itemize @bullet @item @code{LANGUAGE=@var{language name}}: Try to open the catalog for the specified language @item @code{PASSWDFILE}: Indicate that this Workbench project is a @ref{passwd} file @item @code{GROUPFILE}: Indicate that this Workbench project is a @ref{MultiUser.group} file @item @code{CONFIGFILE}: Indicate that this Workbench project is a @ref{MultiUser.config} file @item @code{LOGFILE}: Indicate that this Workbench project is an @ref{am.log} file @item @code{HELP=@var{online help filename}}: Use a different @ref{Online Help} file name (@code{%s} still supported) @end itemize @emph{Note:} @code{PASSWDFILE}, @code{GROUPFILE}, @code{CONFIGFILE}, and @code{LOGFILE} do not take arguments. They determine the type of the file belonging to that project icon. @emph{Never put these ToolTypes into program icon for @code{AM}.} You can multiselect various project icons to tell @code{AM} to use them instead of the corresponding default files. If you already have icons for files created by revision 1.0 of @code{AM} you should either delete these icons or add the appropriate tool type entry. @node Command line arguments, , ToolTypes, Getting Started @section Starting from CLI/Shell @cindex Command line args @cindex CLI @cindex Shell Template: @var{Language}, @var{P=PasswdFile/K}, @var{G=GroupFile/K}, @var{C=ConfigFile/K}, @var{L=LogFile/K}, @var{H=HelpFile} @itemize @bullet @item @var{Language}: Try to open the catalog for the specified language @item @var{PasswdFile}: Use this file as the @ref{passwd} file @item @var{GroupFile}: Use this file as the @ref{MultiUser.group} file @item @var{ConfigFile}: Use this file as the @ref{MultiUser.config} file @item @var{LogFile}: Use this file as the @ref{am.log} file @item @var{HelpFile}: Use this file as the @ref{Online Help} file (@code{%s} still supported) @end itemize Remember to set a sufficient stack size. See @ref{Requirements}. @node Main Window, Options Window, Getting Started, Top @chapter The main window @tindex Main Window If the system libraries are opened successfully @code{AM} opens its main window. This window consists of various areas: @ifinfo @menu * Listviews:: Two listviews for users and groups in the system * Info display:: A text object displaying error messages and other info * Buttons:: Action buttons * Quit:: Leave the program * Main Menu:: Yes, @code{AM} even has a menu bar @w{:@minus{})} @end menu @end ifinfo @node Listviews, Info display, , Main Window @section The Users and Groups listviews and buttons @tindex Listviews After loading the @ref{passwd} and @ref{MultiUser.group} files, the users and groups known to the system are displayed in two listviews. The left listview contains the users whereas you find the groups in the right listview. For both users and groups, each entry in the according listview shows the UserID and GroupID as well as the UID and GID, respectively. The UID/GID will only be displayed, if there's enough space in the listview. You may scroll the listviews via the propgadget or the keyboard. In the latter case, use the @key{TAB} key to step through the main window's @code{CycleChain} until the appropriate listview is the active one. To scroll up and down, hit the corresponding cursor key. Below each of the listviews there are a few buttons which allow modification of the users/groups list. In most cases they operate on the currently activated user/group, so make sure you have an active entry in the corresponding listview. To activate an entry, click once on the entry in the listview or use the cursor keys. @ifinfo The following buttons appear below the @code{User} listview: @menu * New (User):: Create a new user (no activated entry necessary) * Edit (User):: Modify an existing user * Delete (User):: Delete a user * Ban:: Temporarily disable a user * Admit:: Re-enable the user @end menu There are similar buttons at the bottom of the @code{Groups} listview: @menu * New (Group):: Create a new group (no activated entry necessary) * Edit (Group):: Modify an existing group * Delete (Group):: Delete a group @end menu The @key{New} and @key{Edit} buttons will open a window: @menu * Users Window:: or * Groups Window:: @end menu @end ifinfo @node New (User), Edit (User), , Listviews @subsection Creating a new user @findex New (User) Select the @key{New} button to create a new user. The @ref{Users Window} will open with most of the entries cleared. The UID entry already contains a valid number, namely the lowest available UID in the system (not currently occupied by another user) You have to supply at least a valid @ref{UserID}, a valid @ref{UID (User)} and a valid @ref{Primary GroupID} to successfully add the new user to the system. The @ref{Primary GroupID} will initially be set to the value you supplied in the @ref{Default Primary Group} string gadget. See @ref{Edit (User)}. @node Edit (User), Delete (User), New (User), Listviews @subsection Editing a user's characteristics @findex Edit (User) If you press the @key{Edit} button at the bottom of the @code{Users} listview in the @ref{Main Window} the @ref{Users Window} opens displaying the present characteristics of the selected user. You may modify each of them but keep in mind that changing the @ref{UserID} automatically clears the user's @ref{Password} and that changing the user's @ref{UID (User)} makes a @ref{Scan} of the whole file system necessary to update. (You may want to @ref{Scan} after changing the @ref{Primary GroupID}, too.) @node Delete (User), Ban, Edit (User), Listviews @subsection Deleting a user @findex Delete (User) Pressing the @key{Delete} button will automatically remove the selected user from the @code{Users} listview. @emph{Caution:} You are not asked to confirm this action! If you find it necessary to open a confirmation requester before actually deleting the user, please inform me about that (see @ref{Author}). Strictly speaking, the user is not totally removed from the system at all. He remains in the @ref{passwd} file until you @ref{Save} your configuration. Additionally, the deleted user is kept in @code{AM}'s internal memory because this information is needed when you @ref{Scan} the file system. @c Translate the next node name "Ban" exactly as the BUTTON_BAN @node Ban, Admit, Delete (User), Listviews @subsection Temporarily disabling a user @findex Ban Sometimes you might find it necessary to forbid a user's access to the system without deleting information on this user. Usually, this is done by changing this user's password. @code{AM} changes the encrypted password string of the selected user to @code{User_banned}. As it is (nearly) impossible to find a password which will match this magic string after encryption, this is quite a safe way of banning. If @code{AM} detects a user whose encrypted password matches @code{User_banned} during @ref{Open} this user will automatically be marked as banned. Banned users are surrounded by asterisks @key{*} in the Users listview. @emph{Note:} If you @ref{Clear Password} a banned user's password the ban will be released. @emph{Note:} @code{AM} only remembers the original password until you leave the program or @ref{Open} the files. So if you @ref{Admit} the user again, the original password can only be restored if you did not leave @code{AM} or @ref{Open} the files before. @c Translate the next node name "Admit" exactly as the BUTTON_ADMIT @node Admit, Users Window, Ban, Listviews @subsection Releasing a ban @findex Admit To permit a banned user to access the system again, click on the @key{Admit} button. In most cases the selected user's password will be cleared, so access is made possible after the next @ref{Save} operation. The only exception of this rule is made if you did not @ref{Open} or @ref{Quit} between the @ref{Ban} and the @key{Admit} operations. If you by mistake @ref{Ban} a user you may safely click on @key{Admit} without destroying the user's password. @emph{Note:} Remember that the user should set his password immediately after @ref{Save}. You must reload the files to let @code{AM} know the new password. @node Users Window, New (Group), Admit, Listviews @subsection The @code{Users} Window @tindex Users Window The @code{Users} window is divided into two parts: On the lefthand side there are the user's main characteristics, on the righthand side you find the list of the user's secondary groups. Let's turn to the @code{Characteristics} part of this window. You may modify each of the entries as you like. Well, to be honest@dots{} nearly as you like (see @ref{UserID}, @ref{UID (User)}, @ref{Clear Password}). @menu * UserID:: * Password:: * UID (User):: * Primary GroupID:: * Name (User):: * Office:: * Work phone:: * Home phone:: * Home:: * Shell:: * Clear Password:: * Add Secondary Group:: * Delete Secondary Group:: * Ok (User):: * Cancel (User):: @end menu @c Don't translate the node name "UserID" here! It must be constant! @node UserID, Password, , Users Window @subsubsection The @code{UserID} entry @vindex UserID Every user @emph{must} have a valid @code{UserID}. That's the name you use to login. Of course, the @code{UserID} must be unique. So @code{AM} does not allow you to specify a @code{UserID} which already exists. @emph{Note:} If the user has a @ref{Password} set and you modify his @code{UserID} the @code{password} will be cleared, as it is dependant on the @code{UserID}. Some characters, for example @key{|}, are not allowed for a @code{UserID}. These will be rejected automatically by @ref{MUI}. @node Password, UID (User), UserID, Users Window @subsubsection The user's password @vindex Password If the user has a password set it will be displayed in the password text object. This is @emph{not} the real password but the encrypted 11 character string (as it is not possible to decrypt it --- better say: it's very difficult to decrypt it @w{:@minus{})}. There are three ways for you to manipulate the password string: @itemize @bullet @item Clicking on the @ref{Clear Password} button will remove the password. @emph{Now everyone can login as this user!} @item Modifying the @ref{UserID} clears the password, too. @emph{Again, everyone can login as this user!} @item If you @ref{Ban} a user from the system the password will be set to the magic string @code{User_banned}. Remember that after clicking on @ref{Admit} the password will be cleared! @end itemize If there is a user with no password supplied you'll be informed about that in the @ref{am.log} when you @ref{Save}. @node UID (User), Primary GroupID, Password, Users Window @subsubsection The user's UID @vindex UID (User) The UID is a number in the range [1..65535]. You @emph{must} supply a valid (i.e.@: in the correct range and unique) UID for every user in the system. If you try to set a wrong UID you'll be informed about that. Currently, the only way to see which UIDs are available is to look at the @code{Users} listview (see @ref{Listviews}). If you change the UID of a user who is already known to the system (i.e.@: there's an entry for that user in the @ref{passwd} file) you should @ref{Scan} the @ref{MultiUser} formatted partitions on your hard drive, since the information on the files' owners must be updated. Modifying a user's UID makes sense if you want to change the users hierarchy in your system imposed by the UIDs. Unlike @ref{UserID}, modifying the UID does not clear the @ref{Password}. @node Primary GroupID, Name (User), UID (User), Users Window @subsubsection The user's primary group @vindex Primary GroupID Every user belongs to at least one group in the system. The main group is also called @code{primary group}. You @emph{must} supply a valid GroupID for the user's primary group. To make this easier the GroupID may be entered by a @code{popup object}. Just click on the popup button to make a listview of currently available GroupIDs appear. You can then select the GroupID you wish by double clicking on the according entry in the listview. Of course, you can enter the GroupID ``by hand'' in the string gadget. If you mistype the GroupID @code{AM} will refuse this string and open the listview automatically. If the new primary group is already in the list of secondary groups it will be automatically removed from that list. @node Name (User), Office, Primary GroupID, Users Window @subsubsection The user's real name @vindex Name (User) In this string gadget, you should supply the user's real name. You may use (nearly) any characters except @key{|} and @key{,} as these are the separators in the @ref{passwd} file. @node Office, Work phone, Name (User), Users Window @subsubsection The user's office @vindex Office This string gadget is mostly intended for @ref{AmiTCP} users. You can enter the user's office here. @node Work phone, Home phone, Office, Users Window @subsubsection The user's work phone number @vindex Work phone This string gadget is mostly intended for @ref{AmiTCP} users. It should contain the user's phone number at his/her place of work. @node Home phone, Home, Work phone, Users Window @subsubsection The user's private phone number @vindex Home phone This string gadget is mostly intended for @ref{AmiTCP} users. It should contain the user's phone number at home. @node Home, Shell, Home phone, Users Window @subsubsection The user's $HOME directory @vindex Home @vindex $HOME The user's home directory ($HOME) is specified here. You may enter any syntactically correct path here---in other words: the path needn't exist. If you set the @ref{Set up new $HOMEs} switch non existing $HOMEs will be created and the necessary files will be installed there after @ref{Save}. If you use the ASL file requester to select the $HOME directory @code{ASL} automatically appends a slash @key{/} to that string. You needn't worry about that as @code{AM} removes trailing slashes automatically. Via the @ref{Check $HOMEs} switch you can tell @code{AM} if you want to be informed about $HOMEs which are not located on @ref{MultiUser} partitions. See also @ref{Default Home}. @c Don't translate the node name "Shell" here! It must be constant! @node Shell, Clear Password, Home, Users Window @subsubsection The user's default shell @vindex Shell You may enter the user's default shell here. Future versions of @code{AM} will supply a popup object for this. @node Clear Password, Add Secondary Group, Shell, Users Window @subsubsection Clear the user's password @findex Clear Password Clicking on this button clears the password string. Since a user without a password is in a dangerous state you'll be warned about missing passwords in the @ref{am.log}. @node Add Secondary Group, Delete Secondary Group, Clear Password, Users Window @subsubsection Add a new secondary group @findex Add Secondary Group There are two ways of adding a new secondary group to the list: @itemize @bullet @item Type the group's name in the string gadget and hit @key{RETURN} @item Click on the popup button and select the new group by double clicking on the entry in the popup. (This is the more comfortable way.) @end itemize If the secondary group is already in the list or if it is the primary group nothing will happen. If you supply an invalid GroupID a requester pops up and nothing will be added. @node Delete Secondary Group, Ok (User), Add Secondary Group, Users Window @subsubsection Delete a secondary group @findex Delete Secondary Group Click on this button to remove the currently active secondary group from the listview. `Active' means: the selected entry in the listview. @emph{Note:} There's no @key{Undo} button. If you delete a secondary group by mistake, either reenter this GroupID or choose @ref{Cancel (User)} and start editing again. @node Ok (User), Cancel (User), Delete Secondary Group, Users Window @subsubsection Leaving the Users window by clicking on @key{Ok} @findex Ok (User) The @key{Ok} button is one way to leave the Users Window. If all important settings are valid (i.e.@: @ref{UserID}, @ref{UID (User)}, and @ref{Primary GroupID}) the new values are stored in @code{AM}'s memory. If @code{AM} finds an invalid value it will complain and refuse to close the window. @node Cancel (User), , Ok (User), Users Window @subsubsection Leaving the Users window by clicking on @key{Cancel} @findex Cancel (User) If you click on @key{Cancel} all changes will be ignored, and the Users window is closed. @node New (Group), Edit (Group), Users Window, Listviews @subsection Creating a new group @findex New (Group) Select the @key{New} button to create a new group. The @ref{Groups Window} will open with most of the entries cleared. The GID entry already contains a valid number, namely the lowest available GID in the system (not currently occupied by another group). You have to supply at least a valid @ref{GroupID}, a valid @ref{GID (Group)} and a valid @ref{Manager UserID} to successfully add the new group to the system. The @ref{Manager UserID} will initially be set to the value you supplied in the @ref{Default Group Manager} string gadget. See @ref{Edit (Group)}. @node Edit (Group), Delete (Group), New (Group), Listviews @subsection Editing a group's characteristics @findex Edit (Group) If you press the @key{Edit} button at the bottom of the @code{Groups} listview in the @ref{Main Window} the @ref{Groups Window} opens displaying the present characteristics of the selected group. @node Delete (Group), Groups Window, Edit (Group), Listviews @subsection Deleting a group @findex Delete (Group) Pressing the @key{Delete} button will automatically remove the selected group from the @code{Groups} listview. @emph{Caution:} You are not asked to confirm this action! If you find it necessary to open a confirmation requester before actually deleting the group, please inform me about that (see @ref{Author}). Strictly speaking, the group is not totally removed from the system at all. It remains in the @ref{MultiUser.group} file until you @ref{Save} your configuration. Additionally, the deleted group is kept in @code{AM}'s internal memory because this information is needed when you @ref{Scan} the file system. @node Groups Window, , Delete (Group), Listviews @subsection The @code{Groups} Window @tindex Groups Window This window displays the group's @code{Characteristics}. You may modify each of the entries as you like. Well, to be honest@dots{} nearly as you like (see @ref{GroupID}, @ref{GID (Group)}). @menu * GroupID:: * GID (Group):: * Manager UserID:: * Name (Group):: * Ok (Group):: * Cancel (Group):: @end menu @c Don't translate the node name "GroupID" here! It must be constant! @node GroupID, GID (Group), , Groups Window @subsubsection The @code{GroupID} entry @vindex GroupID Every group @emph{must} have a valid @code{GroupID}. That's the group's symbolic name. Of course, the @code{GroupID} must be unique. So @code{AM} doesn't allow you to specify a @code{GroupID} which already exists. Some characters, such as @key{|}, are not allowed for a @code{GroupID}. These will be rejected automatically by @ref{MUI}. @node GID (Group), Manager UserID, GroupID, Groups Window @subsubsection The group's GID @vindex GID (Group) The GID is a number in the range [0..65535]. You @emph{must} supply a valid (i.e.@: in the correct range and unique) GID for every group in the system. If you try to set a wrong GID you'll be informed about that. Currently, the only way to see which GIDs are available is to look at the @code{Groups} listview (see @ref{Listviews}). If you change the GID of a group which is already known to the system (i.e.@: there's an entry for that group in the @ref{MultiUser.group} file) you should @ref{Scan} the @ref{MultiUser} formatted partitions on your hard drive, since the information on the files' owners must be updated. Modifying a group's GID makes sense if you want to change the groups hierarchy in your system imposed by the GIDs. @node Manager UserID, Name (Group), GID (Group), Groups Window @subsubsection The UserID of the group's manager @vindex Manager UserID Every group needs to have a manager responsible for this group. So you @emph{must} supply a valid UserID for the group's manager. To make this easier the UserID may be entered by a @code{popup object}. Just click on the popup button to make a listview of currently available UserIDs appear. You can then select the UserID you wish by double clicking on the according entry in the listview. Of course, you can enter the UserID ``by hand'' in the string gadget. If you mistype the UserID @code{AM} will refuse this string and open the listview automatically. @node Name (Group), Ok (Group), Manager UserID, Groups Window @subsubsection The group's real name @vindex Name (Group) In this string gadget, you should supply the group's real name. You may use (nearly) any characters except @key{|} as this is the separator in the @ref{MultiUser.group} file. @node Ok (Group), Cancel (Group), Name (Group), Groups Window @subsubsection Leaving the Groups window by clicking on @key{Ok} @findex Ok (Group) The @key{Ok} button is one way to leave the Groups Window. If all important settings are valid (i.e.@: @ref{GroupID}, @ref{GID (Group)}, @ref{Manager UserID}) the new values are stored in @code{AM}'s memory. If @code{AM} finds an invalid value it will complain and refuse to close the window. @node Cancel (Group), , Ok (Group), Groups Window @subsubsection Leaving the Groups window by clicking on @key{Cancel} @findex Cancel (Group) If you click on @key{Cancel} all changes will be ignored, and the Groups window is closed. @node Info display, Buttons, Listviews, Main Window @section The Info display @tindex Info display This frame displays information on what @code{AM} is doing. If something has gone wrong you'll be informed about that here. Usually a requester will pop up first in this case, but you are reminded of the error by the error message displayed in the Info display. @node Buttons, Main Menu, Info display, Main Window @section Buttons in the main window @cindex Buttons There are three buttons which start some of @code{AM}'s operations: @iftex @key{Open}, @key{Save}, and @key{Scan}. @end iftex @ifinfo @menu * Open:: Reread the @ref{passwd} and @ref{MultiUser.group} files * Save:: Save both the @ref{passwd} and @ref{MultiUser.group} files * Scan:: Scan the @ref{MultiUser} partitions for invalid files @end menu @end ifinfo @c Translate the next node name "Open" exactly as the STR_OPEN @node Open, Save, , Buttons @subsection Load the passwd and group file @findex Open @findex Load If you select the @key{Open} operation @code{AM} will check first whether the configuration is modified and should be saved first. If so a requester pops up and you may answer that you really want to load or that you've decided to abort. All old information on users and groups (deleted ones, too) is discarded from the memory. See also @ref{ARexx Open}. @c Translate the next node name "Save" exactly as the STR_SAVE @node Save, Scan, Open, Buttons @subsection Save the passwd and group file @findex Save @code{AM} does not just save the files. It checks first if the configuration contains serious errors. @code{AM} does not save if there was a load error before or if there's no user with @w{UID 65535} (no root!). In some situations @code{AM} will warn you (and you are asked if you want to proceed): @itemize @bullet @item If the user having the root UID has been changed @item If root's primary group's GID is not equal to 65535 @item If you have modified one of the file names (see @ref{ARexx port}) @end itemize If you set the @ref{Backup to *.bak} switch in the @ref{Options Window} the old @ref{passwd} and @ref{MultiUser.group} files will be moved to @file{@var{filename}.bak} before writing anything. In case of a write error during the @key{Save} operation, @code{AM} will then do its best to restore the old files. In some cases it may be necessary to @ref{Scan} after saving---if UIDs or GIDs have been changed. In those cases @code{AM} informs you about that. See also @ref{ARexx Save}. @c Translate the next node name "Scan" exactly as the STR_SCAN @node Scan, , Save, Buttons @subsection Scan MultiUser partitions @findex Scan This is probably the most complex operation provided by @code{AM}. It is used to update the file system if you change certain settings, for example the UID. In such cases there might exist files on your @ref{MultiUser} formatted partitions which don't have a valid OwnerUID or OwnerGID. Therefore @code{AM} opens a new window (the @code{Scan} window) and scans the whole directory tree (or better say `trees' if you have more than one @ref{MultiUser} partition). All files which need to be updated are collected and displayed in the @ref{Scan Listview}. You can then select the files you want to modify and tell @code{AM} what to do with them. While scanning, @code{AM} disables some buttons. Don't worry: They'll be enabled again when the scan is finished. The current directory is displayed in the text object surrounded by the @code{Scanning} frame. So you have an idea of where @code{AM} currently is and how long it will take to scan the rest. See @ref{Requirements}. If you don't want to wait till @code{AM} has finished the scan you may click on the @key{Abort} button. The scan process is aborted but you can modify the files already found. If you click on the @key{Back} button instead, the scan will be aborted as with @key{Abort} but additionally the @code{Scan} window will be closed. Each file displayed falls into exactly one of five categories which is shown in the @ref{Scan Listview}, too: @ifinfo @menu * Nobody:: owned by Nobody (OwnerUID = 0) * Deleted:: owned by a user whom you deleted before * Orphan:: the file's OwnerUID is not known to the system * UID:: the UID of the file's owner was changed * GID:: the file's OwnerGID is different from the owner's primary GID @end menu @end ifinfo @iftex @example Nobody: {@rm owned by Nobody (@code{OwnerUID} = 0)} Deleted: {@rm owned by a user whom you deleted before} Orphan: {@rm the file's OwnerUID is not known to the system} UID: {@rm the UID of the file's owner was changed} GID: {@rm the file's OwnerGID is different from the owner's primary GID} @end example @end iftex With the five buttons you can select/deselect the corresponding files in the @ref{Scan Listview} all at once. To explicitly select/deselect a single file click on the entry in the @ref{Scan Listview}. Before you @key{Start} modifying the selected files you should click on the @ref{Set Actions...} button to tell @code{AM} what to do with the selected files. If everything is to your satisfaction use the @key{Start} button to modify the selected files. Correctly processed files are removed from the @ref{Scan Listview}. When the conversion is finished @code{AM} does not return to the @ref{Main Window} but lets you select other files, modify the actions by @ref{Set Actions...}, and process the newly selected files in a different way. At any time you can return to the @ref{Main Window} by clicking on the @key{Back} button. @emph{Note:} Scanning is only possible if @code{AM}'s internal memory reflects the contents of the @emph{real} @ref{passwd} file used by @ref{MultiUser}. You could run into serious problems otherwise. @node Scan Listview, Nobody, , Scan @subsubsection The listview in the Scan window @tindex Scan Listview All files to be modified found during a scan of the @ref{MultiUser} partitions are displayed in the Scan listview. This listview consists of three columns namely the file name, the file's type, and the directory where the file is located. The file's type is either @ref{Nobody}, @ref{Deleted}, @ref{Orphan}, @ref{UID}, or @ref{GID} and tells you about the reason why the file appears in the listview. This listview is multiselectable, i.e.@: you may select as many entries at the same time as you like. You may select entries either by using the @code{File Selection} buttons or by mouse clicking on the corresponding entry. You need not use the multi select qualifier (such as the @key{SHIFT} key) for this multi selection. @c Translate the next node name "Nobody" exactly as the STR_NOBODY @node Nobody, Deleted, Scan Listview, Scan @subsubsection The Nobody type @tindex Nobody Files of type `Nobody' are those with an OwnerUID of zero. Usually all files will be owned by Nobody if you've just installed @ref{MultiUser} in your system. So be prepared to have lots of entries if you run @code{AM} for the first time @w{:@minus{})} There may appear new `Nobody' files later if someone creates a new file without logging in before. @c Translate the next node name "Deleted" exactly as the STR_DELETED @node Deleted, Orphan, Nobody, Scan @subsubsection The Deleted type @tindex Deleted If you delete a user @code{AM} does not remove this entry from its internal memory. So @code{AM} is able to detect files which were owned by this deleted user and therefore don't have a valid owner now. @emph{Note:} Of course you must not leave @code{AM} between deleting the user and scanning. Otherwise @code{AM} would not be able to remember the deleted user's UID and the deleted user's files would be of type @ref{Orphan} or would even be owned by someone else who now has the original owner's UID! @c Translate the next node name "Orphan" exactly as the STR_ORPHAN @node Orphan, UID, Deleted, Scan @subsubsection The Orphan type @tindex Orphan Orphan files are those files having an OwnerUID not equal to zero but without a user known to the system with this UID. In most cases these files will appear if you delete a user from the system without scanning directly after that. After leaving @code{AM} no information about the deleted user can be recovered so files owned by that user are marked as orphan. @c Don't translate the node name "UID" here! It must be constant! @node UID, GID, Orphan, Scan @subsubsection The UID type @tindex UID @code{AM} allows you to change a user's UID. After doing so, all files owned by that user will no longer have a valid OwnerUID as this must be adjusted to the new value, too. @emph{Note:} Although you can give another user the UID 65535 (the root UID), under no circumstances files owned by root will change their OwnerUID as they should be owned by the new root user (i.e.@: keep the OwnerUID of 65535). @c Don't translate the node name "GID" here! It must be constant! @node GID, , UID, Scan @subsubsection The GID type @tindex GID Usually a file's OwnerGID should match its owner's primary GID. Files having a different OwnerGID will be added to the @ref{Scan Listview}, as you might have changed the owner's primary group and want to adjust the OwnerGID. But there might be situations in which the different OwnerGID is intended to make the file accessible to members of a group different from the owner's primary group. Then you should keep such files deselected. Quick note: This will be improved a lot in the future. At the moment, it might be better not to use this@dots{} Sorry. @node Main Menu, Quit, Buttons, Main Window @section The main menu @cindex Main Menu @cindex Menu If you are in the @ref{Main Window} you can start some of @code{AM}'s operations by selecting the appropriate menu item. But there's even more in the main menu: @menu * Project:: The `usual' project menu * Edit:: Load and save @code{AM}s configuration file @end menu @node Project, Edit, , Main Menu @subsection The Project menu @cindex Project From this menu you can select the @ref{Open}, @ref{Save}, and @ref{Scan} operations (the same as clicking on the corresponding button in the @ref{Main Window}), as well as open the @ref{Options Window}, get information about the @ref{Author} and the translator (@key{About...} item) and @ref{Quit} the program. @node Edit, , Project, Main Menu @subsection The Edit menu @cindex Edit This menu is very much like the standard @file{Prefs} menu of the same name. @code{AM} automatically stores some of your settings in a private configuration file in ENV: when you @ref{Quit} the program. This file is loaded automatically during startup or explicitly (see below). The saved/restored settings comprise the @ref{AM Options} and the @ref{Set Actions...} part. You'll find the following items in the @key{Edit} menu: @menu * Edit/Last Saved:: Load from ENVARC: * Edit/Restore:: Load from ENV: * Edit/Save:: Save to ENVARC: @end menu @node Edit/Last Saved, Edit/Restore, , Edit @subsubsection Load configuration from ENVARC: @findex Edit/Last Saved Selecting the @code{Edit/Last Saved} item causes @code{AM} to read the configuration data from the file @file{ENVARC:mui/MU_AM.cfg}. @node Edit/Restore, Edit/Save, Edit/Last Saved, Edit @subsubsection Load configuration from ENV: @findex Edit/Restore Selecting the @code{Edit/Restore} item causes @code{AM} to reread the configuration data from the file @file{ENV:mui/MU_AM.cfg}. This file is automatically loaded at startup and saved on @ref{Quit}. @node Edit/Save, , Edit/Restore, Edit @subsubsection Save configuration to ENVARC: @findex Edit/Save Selecting the @code{Edit/Save} item makes @code{AM} permanently save the configuration data to the file @file{ENVARC:mui/MU_AM.cfg}. There's no need for a menu item which saves to ENV: as this is automatically node on @ref{Quit}. @c Translate the next node name "Quit" exactly as the STR_QUIT @node Quit, , Main Menu, Main Window @section Quit the program @cindex Quit Pressing the @key{Quit} button or selecting the @key{Quit} item from the @ref{Project} menu terminates @code{AM}. Before really exiting @code{AM} checks if the files need to be saved and informs you about that by popping up a requester. You can still continue to work with all information in @code{AM}'s memory at this point. If you decide to terminate @code{AM} all information on deleted users is discarded. See @ref{Deleted}. @node Options Window, ARexx port, Main Window, Top @chapter The @code{Options} Window @tindex Options Window Many @ref{MultiUser} and @code{AM} features can be controlled in this window. To distinguish between these two parts the window is divided into @iftex MultiUser.config Options and AM Options. @end iftex @ifinfo @menu * MultiUser.config Options:: all entries in the @ref{MultiUser.config} file * AM Options:: various @code{AM} settings @end menu @end ifinfo This window may be too tall for your screen (see @ref{Requirements} how to change this). @node MultiUser.config Options, AM Options, , Options Window @section The @file{MultiUser.config} Options @tindex MultiUser.config Options The @ref{MultiUser.config} file contains some information on how @ref{MultiUser} should behave in varoius situations. This file is automatically loaded into @code{AM}'s memory when you open the @ref{Options Window}. The current state of the switches are displayed in the left part of the window. @ref{MultiUser} provides a way of freezing some users' passwords. With the strings and sliders in the @code{Allow password change...} part you can select which users are allowed to change their password. All users with a UID of the displayed number or higher as well as users whose primary GID is the displayed number or higher can change their password. The @key{Open} button reloads the @file{MultiUser.config} file without checking if you have altered the state of some entries. With the @key{Save} button you write the @file{MultiUser.config} file. Both @key{Open} and @key{Save} use the filename you supplied in your @ref{Command line arguments} or in the @ref{ToolTypes} entry. The filename defaults to @file{@var{MultiUser_Group_Dir}/MultiUser.config}. @node AM Options, , MultiUser.config Options, Options Window @section Some helpful features @tindex AM Options In this part of the @ref{Options Window} you can control some of @code{AM}'s features. @ifinfo It contains the following switches and string gadgets: @noindent $HOMEs: @menu * Set up new $HOMEs:: * Check $HOMEs:: * $HOME icons:: @end menu @noindent Files: @menu * File icons:: * Backup to *.bak:: @end menu @noindent Miscellaneous: @menu * Logging:: * Display:: @end menu @noindent Defaults: @menu * Default Primary Group:: * Default Group Manager:: * Default Home:: @end menu At the bottom of this frame there are two buttons: @menu * Set Actions...:: * Files:: @end menu @end ifinfo @iftex They belong to four different categories: $HOMEs, Files, Miscellaneous, and Defaults. @end iftex All these settings are saved automatically to @file{ENV:} when you @ref{Quit} @code{AM}. If you want to store them permanently use the @ref{Edit/Save} menu item. @c Translate the next node name "Set up new $HOMEs" exactly as the SWITCH_CREATE_HOMES @node Set up new $HOMEs, Check $HOMEs, , AM Options @subsection Set up new $HOME directories @findex Set up new $HOMEs @findex am_create_home.script If a $HOME directory does not exist when you @ref{Save} it will be created, and the script file @file{@var{MultiUser_passwd_dir}/am_create_home.script} will be executed (if it exists). This script is executed after logging in as the new user. The current directory is the @var{MultiUser_passwd_dir}. So you could create a @file{@var{MultiUser_passwd_dir}/default_home} directory containing all files to be installed in the new $HOME. If you have a @code{MAssign HOME: %h} running you could put a @code{Copy default_home/#? HOME: CLONE ALL} command into the @file{am_create_home.script}. In case you want to install files having a different owner just call (from script) @code{Logout} (you are @code{root} then), @code{Login} as the new user (you don't have to supply a password!), and proceed with the installation. @emph{Note:} Remember to make the @file{default_home} directory and its contents readable by everyone. @emph{Note:} Due to a small bug in MultiUser, automatic creation of home directories might fail in some cases. For some reason, MultiUser does not react on the file notification caused by the write to the @ref{passwd} and @ref{MultiUser.group} files. So MultiUser does not recognize the new users, and @code{AM} cannot log in as these new users. As a workaround, I suggest to delete the new home directory and @ref{Save} again until MultiUser knows about the new users. @c Translate the next node name "Check $HOMEs" exactly as the SWITCH_CHECK_HOMES @node Check $HOMEs, $HOME icons, Set up new $HOMEs, AM Options @subsection Check $HOME directories @findex Check $HOMEs If set, @code{AM} will check during @ref{Save} if the users' $HOME directories are located on @ref{MultiUser} partitions. @c Translate the next node name "$HOME icons" exactly as the SWITCH_HOME_ICONS @node $HOME icons, File icons, Check $HOMEs, AM Options @subsection Create icons for new $HOME directories @findex $HOME icons @findex HOME icons If set, @code{AM} puts an icon for newly created $HOME directories. Its image will be the default drawer icon. Its owner is the corresponding user, so he can adjust the dimensions of the drawer's window. @c Translate the next node name "File icons" exactly as the SWITCH_FILE_ICONS @node File icons, Backup to *.bak, $HOME icons, AM Options @subsection Create icons for the system files @findex File icons If set, @code{AM} creates icons for the @ref{passwd}, @ref{MultiUser.group}, @ref{MultiUser.config}, and @ref{am.log} files which are owned and only accessible by root. Their image is taken from @code{AM}'s image, but they are @code{Project} icons with a default tool of @code{AM}. Other @ref{ToolTypes} are set according to the files' types. @c Translate the next node name "Backup to *.bak" exactly as the SWITCH_BACKUP_TO_BAK @node Backup to *.bak, Logging, File icons, AM Options @subsection Safe saves @findex Backup to *.bak @findex Safe saves If set, @code{AM} first moves the @ref{passwd} and @ref{MultiUser.group} files to @file{*.bak} when you @ref{Save}. So @file{passwd.bak} and @file{MultiUser.group.bak} represent the status before saving. If there is an error during the write process, @code{AM} tries to recover from this situation by restoring the old contents from these @file{*.bak} files. @c Translate the next node name "Logging" exactly as the SWITCH_LOGGING @node Logging, Display, Backup to *.bak, AM Options @subsection Turn on/off logging @findex Logging This switch turns logging on/off. If selected, important information is appended to @ref{am.log} during @ref{Save} and @ref{Scan}. @c Translate the next node name "Display" exactly as the SWITCH_DISPLAY @node Display, Default Primary Group, Logging, AM Options @subsection Freezing the display @findex Display This switch is intended mostly for those of you who must work with slow machines. To make life a bit easier you can turn this switch off. When you @ref{Scan} the @ref{MultiUser} partitions the listview is not updated every time a new entry is added to that list. Of course this will only save reasonable time if there are many files to be added. Maybe this feature will be improved in future releases. @node Default Primary Group, Default Group Manager, Display, AM Options @subsection The default primary group @findex Def. Prim. Group Every newly created user's @ref{Primary GroupID} will initially be set to the group you supply here. @node Default Group Manager, Default Home, Default Primary Group, AM Options @subsection The default group manager @findex Def. Group Manager Every newly created group's @ref{Manager UserID} will initially be set to the user you supply here. @node Default Home, , Default Group Manager, AM Options @subsection The default $HOME directory @findex Def. Home This string gadget describes the string which is copied to a newly created user's @ref{Home} field. For example you could enter here the directory in which all the $HOME directories are located. @c Translate the next node name "Set Actions..." exactly as the STR_SET_ACTIONS @node Set Actions..., Files, , AM Options @subsection The Actions window @findex Set Actions... After pressing the @key{Set Actions...} button a window will open containing three register groups (@ref{Nobody}, @ref{Deleted}, and @ref{Orphan}) with lots of buttons. For each of these three types you can tell @code{AM} what to do with files which fall into this category. Two types of Actions are supported: @itemize @bullet @item @key{Change} means that the file's owner is changed to the owner given in the string gadget below, and the file's protection bits are modified as stated in the @code{Protection} part of this column. @item @key{Delete} means that the file will be deleted. The owner string gadget and the @code{Protection} area are disabled in this case. @end itemize If you choose @key{Change} you must supply the new owner's UserID in the string gadget. The most comfortable way is to use the popup. @emph{@code{AM} will not close this window if there is an illegal UserID.} In the @code{Protection} area you state how each of the file's protection flags should be modified. All @ref{MultiUser} supported flags are listed here. @itemize @minus @item @key{u}: Only clearing and keeping is allowed here. @emph{Keeping this flag unmodified is very very dangerous!!!} Default is `Clear'. @item @key{spa}: These flags may either be set, cleared or kept unmodified. Default is `Keep'. @item @key{rwed} for owner: These flags may either be set, cleared or kept unmodified. Default is `Keep'. @item @key{rwed} for group members or others: You have the choice between `Set', `Clear', `Keep' and `Owner'. If you select `Owner' the corresponding flag of the owner's @key{rwed} part is copied. This is done @emph{after} altering the owner @key{rwed} flags. @end itemize Use the @key{Ok} button to close this window. Please note again that the string gadgets must contain valid UserIDs if they are not disabled. @emph{If there is an invalid setting in one of the string gadgets for the new owner, @code{AM} does not close the window but displays the popup list for that entry!} All settings in this window are saved automatically to @file{ENV:} when you @ref{Quit} @code{AM}. If you want to store them permanently (of course you want to do so @w{:@minus{})} use the @ref{Edit/Save} menu item. @node Files, , Set Actions..., AM Options @subsection The Files requester @findex Files When you click on this button a requester pops up showing the file names currently in use for the following types of files: @menu * passwd:: * MultiUser.group:: * MultiUser.config:: * am.log:: @end menu @node passwd, MultiUser.group, , Files @subsubsection The MultiUser passwd file @pindex passwd This is the file where nearly all information on the users is stored (all but the secondary group information). See the @ref{MultiUser} doc for more info. This filename can be changed at run time by an @ref{ARexx ChPasswd} call. @node MultiUser.group, MultiUser.config, passwd, Files @subsubsection The MultiUser group file @pindex MultiUser.group This is the file where all information on the groups is stored. See the @ref{MultiUser} doc for more info. This filename can be changed at run time by an @ref{ARexx ChGroup} call. @node MultiUser.config, am.log, MultiUser.group, Files @subsubsection The MultiUser config file @pindex MultiUser.config This is the file where you can control the various @ref{MultiUser} features. See the @ref{MultiUser} doc for more info. @node am.log, , MultiUser.config, Files @subsubsection @code{AM}'s log file @pindex am.log @pindex Log file The log file informs you about some important things. The following information appears in the log file: @itemize @bullet @item The file names when you @ref{Save} @item Users who don't have a password set when you @ref{Save} @item Files modified by @ref{Scan} @item Errors encountered during @ref{Save} or @ref{Scan} @end itemize The default place for the log file is in the same directory as the passwd file (determined by a @code{muGetPasswdDirLock()} call). See also @ref{Logging}. @node ARexx port, Online Help, Options Window, Top @chapter @code{AM}'s ARexx port @cindex ARexx port Besides the standard @ref{MUI} ARexx commands, @code{AM} understands some additional ones which are usually not needed very often as they are mostly intended for testing purposes: @menu * ARexx ChPasswd:: * ARexx ChGroup:: * ARexx Open:: * ARexx Save:: @end menu The ARexx port's name is @code{MU_AM}. If you find it useful to add more power to the ARexx port please contact the @ref{Author}. @node ARexx ChPasswd, ARexx ChGroup, , ARexx port @section The ARexx @code{ChPasswd} command @findex ARexx ChPasswd @findex ChPasswd This command is used to change the name for the @ref{passwd} file at run time. If the new file already exists @code{AM} uses the full path to the file. @emph{Note:} This command does not load the new file into its memory. Template: @var{FileName/A} Example: @example @kbd{rx "ADDRESS MU_AM ChPasswd 'foo'"} @end example Please note the single quotes around @file{foo} preventing ARexx from changing it to uppercase @file{FOO} which IMHO looks a bit PC-ish. @node ARexx ChGroup, ARexx Open, ARexx ChPasswd, ARexx port @section The ARexx @code{ChGroup} command @findex ARexx ChGroup @findex ChGroup This command is used to change the name for the @ref{MultiUser.group} file at run time. If the new file already exists @code{AM} uses the full path to the file. @emph{Note:} This command does not load the new file into its memory. Template: @var{FileName/A} Example: @example @kbd{rx "ADDRESS MU_AM ChGroup 'bar'"} @end example Please note the single quotes around @file{bar} preventing ARexx from changing it to uppercase @file{BAR} which IMHO looks a bit PC-ish. @node ARexx Open, ARexx Save, ARexx ChGroup, ARexx port @section The ARexx @code{Open} command @findex ARexx Open @findex Open Sending this command to the @code{MU_AM} port is the same as clicking on the @ref{Open} button in the @ref{Main Window}. @node ARexx Save, , ARexx Open, ARexx port @section The ARexx @code{Save} command @findex ARexx Save @findex Save Sending this command to the @code{MU_AM} port is the same as clicking on the @ref{Save} button in the @ref{Main Window}. @node Online Help, Development, ARexx port, Top @chapter @code{AM}'s online help system @findex Online Help @findex Help Since AmigaOS 3.0 (V39+), @code{intuition.library} provides an online help support: Place the mouse pointer over a portion of the window (a button, string, or even the background) and press the @key{Help} key on your keyboard. If you supplied a valid help file (and have at least AmigaOS 3.0) you can make use of this feature to get quick help. @code{AM} then searches for the help file in the following order: @example (1) the user supplied help file (if any) (2) @file{PROGDIR:docs/%s/am1_1.guide} (3) @file{HELP:%s/am1_1.guide} (4) the user supplied help file (if any); @code{%s} replaced by @code{english} (5) @file{PROGDIR:docs/english/am1_1.guide} (6) @file{HELP:english/am1_1.guide} @end example In (1), (2), and (3), the @code{%s} is replaced by the name of the language you want @code{AM} to run in. See also @ref{ToolTypes} and @ref{Command line arguments}. @node Development, Localization, Online Help, Top @chapter Information on @code{AM}'s development @cindex Development @ifinfo In this chapter you find information on the following topics: @menu * Author:: * Crew:: * Credits:: * Known bugs:: * History:: @end menu @end ifinfo @node Author, Crew, , Development @section Short information on the author @cindex Author @cindex Bug report @noindent @code{AM} was written by: @example Ingolf Koch Wellenkampstraße 38 D@minus{}32791 Lage Germany Phone: 05232/2700 @end example @noindent If you call from other countries replace the leading 0 by the appropriate prefix for Germany.@* My email address is @code{ingolf@@mathematik.uni-bielefeld.de}.@* Additionally, I can often be found on IRC. My nick name is @code{Balin}. Please note that my email address will change in March or April '95 as I will probably move to Jena. If you want to be informed about my new address let me know! @emph{And don't forget to send me a postcard if you like this program!} @node Crew, Credits, Author, Development @section The development crew @cindex Crew There are quite a few people who had great influence on @code{AM} being what it is now. On the one hand, there are the translators: @itemize @bullet @item @b{Paul Dolk} (Dutch catalog) @item @b{Håkon Enger} (Norwegian catalog) @item @b{Christofer Kull} (Swedish catalog) @item @b{Gaël Marziou} (French catalog) @item @b{Tomasza Nideckiego} (Polish catalog) @item @b{Goncalo Valverde} (Portuguese catalog) @end itemize They also did a lot of testing (and bug reporting @w{:@minus{})}. Thank you! (The German `translation' was done by the @ref{Author} himself.) On the other hand, there are additional testers who helped me very much with their bug reports, criticism, and suggestions (and the list of suggestions is growing and growing@dots{}): @itemize @bullet @item @b{Reza Elghazi} @item @b{Walter Francis} @item @b{Michael Hohmann} @item @b{Krunoslav Njers} @item @b{Bernhard Seefeld} @item @b{Horst Weber} @end itemize Thanks again for your work, guys. @node Credits, Known bugs, Crew, Development @section Lots of thanks @cindex Credits Besides the @code{AM} development @ref{Crew} I'd like to thank the following people @itemize @bullet @item Geert Uytterhoeven for @ref{MultiUser} @item Stefan Stuntz for creating @ref{MUI}, answering lots of questions and bearing my frequent (positive and negative) criticism @item Matt Dillon for DICE @item Markus Illenseer (ill) and other people on IRC (#AmigaGER) for their help @item Gaël Marziou for YAK @item Stefan Becker for ToolManager @end itemize I'm sure there are many more people I should mention here but they don't come to my mind just now@dots{} @node Known bugs, History, Credits, Development @section Known bugs @cindex Bugs There are some bugs I'm aware of. They are not really caused by @code{AM} but can make the work with @code{AM} difficult in some cases. @itemize @bullet @item There is a bug in @w{version 7} of @code{muimaster.library} making @code{AM} hang if a window could not be opened. This has been fixed since @w{version 8}. (See @ref{Requirements}.) @item Sometimes @ref{MultiUser} does not recognize that the @ref{passwd} or @ref{MultiUser.group} files have been changed. In this case @ref{Set up new $HOMEs} does not work properly. @end itemize If you find additional bugs: don't hesitate to inform the @ref{Author}. @node History, , Known bugs, Development @section Program history @cindex History @example 1.1: 20-Feb-95 * New: "Check $HOMEs" now works * New: Options window replacing and extending the Options menu * New: MultiUser.config supported * New: new entries "office", "work phone", and "home phone" (AmiTCP) * New: Tooltypes supported * New: ReadArgs() argument utilization * New: Online AmigaGuide® help system * New: Some own ARexx commands supported (ADDRESS MU_AM) * Safer saves (*.bak file support) * Description for am_create_home.script added to the doc * Set Actions... window now with register groups - Bug fixed: Popup button in User window was not disabled correctly - Bug fixed: Popups sometimes were not correctly reenabled 1.0: 29-May-94 * First public release @end example @node Localization, Related products, Development, Top @chapter Translating @code{AM} to another language @cindex Localization @cindex Translation Currently, there are eight languages available for @code{AM}: English (the builtin), Dutch, French, German, Norwegian, Polish, Portuguese, and Swedish (see @ref{Crew}). If you'd like to translate @code{AM} to another language, please fill in the translated strings in the blank @file{am.ct} file which comes with this distribution. In many cases, a look at the catalog descriptor (@file{am.cd}) will help you translate the strings in the right way. You can then compile the new catalog using Commodore's @code{CatComp} utility (or similar). @emph{But please don't spread your private catalog versions!} If you have a new catalog or just want to improve an already existing one, you should contact the @ref{Author} of @code{AM}. You can even translate the documentation. It is written in @code{Texinfo}, a simple @TeX{} dialect. Via @code{makeinfo}, it can be converted to an AmigaGuide® file, but you can also run @TeX{} with this file to produce a printed document. Your translation should be based on the English @file{am@value{version}_@value{revision}.texinfo} file. There are lots of hints for the translation and compilation in it. @node Related products, Index, Localization, Top @chapter Information on related products @cindex Related products @ifinfo In this chapter you find information on the following topics: @menu * MultiUser:: * MUI:: * AmiTCP:: @end menu @end ifinfo @node MultiUser, MUI, , Related products @section Short information on MultiUser @pindex MultiUser MultiUser is a (or better say 'the') Multi User Security System. It was created by Geert Uytterhoeven for the Commodore Amiga computer. It works with @w{AmigaOS 2.0+} and is implemented as a normal DOS file system. So it works with (nearly) all programs. For more information see the @file{MultiUser.doc} which comes with the MultiUser distribution. @node MUI, AmiTCP, MultiUser, Related products @section Short information on MUI @pindex MUI MUI is an abbreviation for Magic User Interface. It was created by Stefan Stuntz for the Commodore Amiga computer. To utilize MUI at least a 68020 or better is recommended, your computer will be very slow otherwise@dots{} For more information see the @file{ReadMe.mui} which comes with this distribution of @code{AM}. @node AmiTCP, , MUI, Related products @section Short information on AmiTCP @pindex AmiTCP @pindex Networking AmiTCP is freely distributable TCP/IP networking package (better say: was---from version 4.0 it isn't free any longer). In many cases @ref{MultiUser} is used in combination with AmiTCP. But unfortunately there are (still) differences in the passwd and group file formats. Currently @code{AM} supports only the @ref{MultiUser} formats, but you may set @ref{Office}, @ref{Work phone}, and @ref{Home phone} information for a user (which is a feature of AmiTCP). @code{MultiUser 2.0} will have a passwd format compatible with AmiTCP. So future versions of @code{AM} will be usable both for MultiUser and AmiTCP. @node Index, , Related products, Top @chapter Index @printindex cp @contents @bye