<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>User Administration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Bugzilla Guide - 2.20.1 
    Release"
HREF="index.html"><LINK
REL="UP"
TITLE="Administering Bugzilla"
HREF="administration.html"><LINK
REL="PREVIOUS"
TITLE="Bugzilla Configuration"
HREF="parameters.html"><LINK
REL="NEXT"
TITLE="Products"
HREF="products.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide - 2.20.1 
    Release</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="parameters.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 3. Administering Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="products.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="useradmin"
>3.2. User Administration</A
></H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="defaultuser"
>3.2.1. Creating the Default User</A
></H2
><P
>When you first run checksetup.pl after installing Bugzilla, it
      will prompt you for the administrative username (email address) and
      password for this "super user". If for some reason you delete
      the "super user" account, re-running checksetup.pl will again prompt
      you for this username and password.</P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you wish to add more administrative users, add them to 
        the "admin" group and, optionally, add edit the tweakparams, editusers,
        creategroups, editcomponents, and editkeywords groups to add the
        entire admin group to those groups.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="manageusers"
>3.2.2. Managing Other Users</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="createnewusers"
>3.2.2.1. Creating new users</A
></H3
><P
>Your users can create their own user accounts by clicking the
        "New Account" link at the bottom of each page (assuming they
        aren't logged in as someone else already.) However, should you
        desire to create user accounts ahead of time, here is how you do
        it.</P
><P
></P
><OL
TYPE="1"
><LI
><P
>After logging in, click the "Users" link at the footer of
            the query page, and then click "Add a new user".</P
></LI
><LI
><P
>Fill out the form presented. This page is self-explanatory.
            When done, click "Submit".</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Adding a user this way will 
              <EM
>not</EM
>

              send an email informing them of their username and password.
              While useful for creating dummy accounts (watchers which
              shuttle mail to another system, for instance, or email
              addresses which are a mailing list), in general it is
              preferable to log out and use the 
              <SPAN
CLASS="QUOTE"
>"New Account"</SPAN
>

              button to create users, as it will pre-populate all the
              required fields and also notify the user of her account name
              and password.</P
></TD
></TR
></TABLE
></DIV
></LI
></OL
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="modifyusers"
>3.2.2.2. Modifying Users</A
></H3
><P
>To see a specific user, search for their login name
        in the box provided on the "Edit Users" page. To see all users, 
        leave the box blank.</P
><P
>You can search in different ways the listbox to the right
        of the text entry box. You can match by 
        case-insensitive substring (the default),
        regular expression, or a 
        <EM
>reverse</EM
>
        regular expression match, which finds every user name which does NOT
        match the regular expression. (Please see
        the <B
CLASS="command"
>man regexp</B
>
        manual page for details on regular expression syntax.)
        </P
><P
>Once you have found your user, you can change the following
        fields:</P
><P
></P
><UL
><LI
><P
>&#13;            <EM
>Login Name</EM
>: 
            This is generally the user's full email address. However, if you
            have are using the emailsuffix Param, this may just be the user's
            login name. Note that users can now change their login names
            themselves (to any valid email address.)
            </P
></LI
><LI
><P
>&#13;            <EM
>Real Name</EM
>: The user's real name. Note that
            Bugzilla does not require this to create an account.</P
></LI
><LI
><P
>&#13;            <EM
>Password</EM
>: 
            You can change the user's password here. Users can automatically
            request a new password, so you shouldn't need to do this often.
            If you want to disable an account, see Disable Text below.
            </P
></LI
><LI
><P
>&#13;              <EM
>Disable Text</EM
>: 
              If you type anything in this box, including just a space, the
              user is prevented from logging in, or making any changes to 
              bugs via the web interface. 
              The HTML you type in this box is presented to the user when
              they attempt to perform these actions, and should explain
              why the account was disabled.
            </P
><P
>&#13;              Users with disabled accounts will continue to receive
              mail from Bugzilla; furthermore, they will not be able
              to log in themselves to change their own preferences and
              stop it. If you want an account (disabled or active) to
              stop receiving mail, add the account name (one account
              per line) to the file <TT
CLASS="filename"
>data/nomail</TT
>.
            </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                Even users whose accounts have been disabled can still
                submit bugs via the e-mail gateway, if one exists.
                The e-mail gateway should <EM
>not</EM
> be
                enabled for secure installations of Bugzilla.
              </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                Don't disable all the administrator accounts!
              </P
></TD
></TR
></TABLE
></DIV
></LI
><LI
><P
>&#13;            <EM
>&#60;groupname&#62;</EM
>: 
            If you have created some groups, e.g. "securitysensitive", then
            checkboxes will appear here to allow you to add users to, or
            remove them from, these groups.
            </P
></LI
><LI
><P
>&#13;            <EM
>canconfirm</EM
>: 
            This field is only used if you have enabled the "unconfirmed"
            status. If you enable this for a user,
            that user can then move bugs from "Unconfirmed" to a "Confirmed"
            status (e.g.: "New" status).</P
></LI
><LI
><P
>&#13;            <EM
>creategroups</EM
>: 
            This option will allow a user to create and destroy groups in
            Bugzilla.</P
></LI
><LI
><P
>&#13;            <EM
>editbugs</EM
>: 
            Unless a user has this bit set, they can only edit those bugs
            for which they are the assignee or the reporter. Even if this
            option is unchecked, users can still add comments to bugs.
            </P
></LI
><LI
><P
>&#13;            <EM
>editcomponents</EM
>: 
            This flag allows a user to create new products and components,
            as well as modify and destroy those that have no bugs associated
            with them. If a product or component has bugs associated with it,
            those bugs must be moved to a different product or component
            before Bugzilla will allow them to be destroyed.
            </P
></LI
><LI
><P
>&#13;            <EM
>editkeywords</EM
>: 
            If you use Bugzilla's keyword functionality, enabling this
            feature allows a user to create and destroy keywords. As always,
            the keywords for existing bugs containing the keyword the user
            wishes to destroy must be changed before Bugzilla will allow it
            to die.</P
></LI
><LI
><P
>&#13;            <EM
>editusers</EM
>: 
            This flag allows a user to do what you're doing right now: edit
            other users. This will allow those with the right to do so to
            remove administrator privileges from other users or grant them to
            themselves. Enable with care.</P
></LI
><LI
><P
>&#13;            <EM
>tweakparams</EM
>: 
            This flag allows a user to change Bugzilla's Params 
            (using <TT
CLASS="filename"
>editparams.cgi</TT
>.)</P
></LI
><LI
><P
>&#13;            <EM
>&#60;productname&#62;</EM
>: 
            This allows an administrator to specify the products in which 
            a user can see bugs. The user must still have the 
            "editbugs" privilege to edit bugs in these products.</P
></LI
></UL
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="parameters.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="products.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Bugzilla Configuration</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Products</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>