blob: e33f735f727b5b919a4abfb3da19c8bf2e02e646 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<chapter xml:id="administration" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en"
xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Administration</title>
<indexterm>
<primary>administration</primary>
</indexterm>
<para>Users, user groups, connections, and active sessions can be administered from within the
web interface if the underlying authentication module supports this. The only
officially-supported authentication modules supporting this are the database extensions,
which are documented in <xref linkend="jdbc-auth"/>.</para>
<para>If you are using the default authentication mechanism, or another authentication
extension, this chapter probably does not apply to you, and the management options will not
be visible in the Guacamole interface. If, on the other hand, you are using one of the
database authentication providers, and you are logged in as a user with sufficient
privileges, you will see management sections listed within the settings screen:</para>
<informalfigure>
<mediaobject>
<imageobject>
<imagedata fileref="images/guacamole-settings-sections.png" format="PNG"
contentwidth="3.5in"/>
</imageobject>
<caption>
<para>Sections within the Guacamole settings screen.</para>
</caption>
</mediaobject>
</informalfigure>
<para>Clicking any of these options will take you to a corresponding management section where
you can perform administrative tasks.</para>
<section xml:id="session-management">
<title>Managing sessions</title>
<indexterm>
<primary>session management</primary>
</indexterm>
<para>Clicking "Active Sessions" navigates to the session management screen. The session
management screen displays all active sessions and allows system administrators to kill
them as needed.</para>
<para>When any user accesses a particular remote desktop connection, a unique session is
created and will appear in the list of active sessions in the session management screen.
Each active session is displayed in a sortable table, showing the corresponding user's
username, how long the session has been active, the IP address of the machine from which
the user is connecting, and the name of the connection being used.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/manage-sessions.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Session management interface</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>To kill one or more sessions, select the sessions by clicking their checkboxes. Once
all desired sessions have been selected, clicking "Kill Sessions" will immediately
disconnect those users from the associated connection.</para>
<section xml:id="filtering-sessions">
<title>Filtering and sorting</title>
<para>The table can be resorted by clicking on the column headers. Clicking any column
will resort the table by the values within that column, while clicking a column
which is already sorted will toggle between ascending and descending order.</para>
<para>The content of the table can be limited through search terms specified in the
"Filter" field. Entering search terms will limit the table to only sessions
containing those terms. For example, to list only connections by the user
"guacadmin" which have been active since March, 2015, you would enter: "guacadmin
2015-03". Beware that if a search term needs to contain spaces, it must be enclosed
in double quotes to avoid being interpreted as multiple terms.</para>
<informalfigure>
<mediaobject>
<imageobject>
<imagedata fileref="images/session-filter-example-1.png" format="PNG"
contentwidth="5in"/>
</imageobject>
</mediaobject>
</informalfigure>
<para>If you wish to narrow the content of the table to only those connections which
originate from a particular block of IP addresses, you can do this by specifying the
block in standard CIDR notation, such "10.0.0.0/8" or "2001:db8:1234::/48". This
will work with both IPv4 and IPv6 addresses.</para>
<informalfigure>
<mediaobject>
<imageobject>
<imagedata fileref="images/session-filter-example-2.png" format="PNG"
contentwidth="5in"/>
</imageobject>
</mediaobject>
</informalfigure>
</section>
</section>
<section xml:id="connection-history">
<title>Connection history</title>
<indexterm>
<primary>history</primary>
</indexterm>
<indexterm>
<primary>connection history</primary>
</indexterm>
<para>Clicking "History" navigates to the connection history screen. The connection history
screen displays a table of the most recent connections, including the user that used
that connection, the time the connection began, and how long the connection was
used.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/manage-history.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Connection history interface</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<section xml:id="filtering-history">
<title>Filtering and sorting</title>
<para>Initially, the connection history table will display only the most recent history
records. You can page through these records to see how and when Guacamole has been
used.</para>
<para>Just as with the table of active sessions described earlier, the table of history
records can be resorted by clicking on the column headers or filtered by entering
search terms within the "Filter" field.</para>
<para>The same filtering format applies - a search term containing spaces must be
enclosed in double quotes to avoid being interpreted as multiple terms, and only
history records which contain each term will be included in the history table.
Unlike the table of active sessions, however, the filter will only take effect once
you click the "Search" button. This is due to the nature of the connection history,
as the number of records may be quite extensive.</para>
</section>
</section>
<section xml:id="user-management">
<title>User management</title>
<indexterm>
<primary>user management</primary>
</indexterm>
<para>Clicking "Users" within the list of settings sections will take you to the user
management screen. Here you can add new users, edit the properties and privileges of
existing users, and view the times that each user last logged in. If you have a large
number of users, you can also enter search terms within the "Filter" field to filter the
list of users by username.</para>
<para>To add a new user, click the "New User" button. This will take you to a screen where
you will be allowed to enter the details of the new user, such as the password and
username. Note that, unless you specify otherwise, the new user will have no access to
any existing connections, nor any administrative privileges, and you will need to
manually set the user's password before they will be able to log in.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/manage-users.png" format="PNG" contentwidth="5in"
/>
</imageobject>
<caption>
<para>User management interface</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>To edit a user, just click on the user you wish to edit. You will be taken to a screen
which allows you to change the user's password, expire their password (such that it must
be changed at next login), add or remove administrative permissions, and add or remove
read access to specific connections, sharing profiles, or groups. If you are managing a
large number of connections or groups and wish to reduce the size of the list displayed,
you can do so by specifying search terms within the "Filter" field. Groups will be
filtered by name and connections will be filtered by name or protocol.</para>
<para>If you have delete permission on the user, you will also see a "Delete" button.
Clicking this button will permanently delete the user. Alternatively, if you only wish
to temporarily disable the account, checking "Login disabled" will achieve the same
effect while not removing the user entirely. If they attempt to log in, the attempt will
be rejected as if their account did not exist at all.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-user.png" format="PNG" contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing a user</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<section xml:id="user-group-membership">
<title>Editing group membership</title>
<para>When editing a user, the groups that user is a member of may be modified within
the "Groups" section. By default, only groups that the user is already a member of
will be displayed. If you have permission to modify the user's membership within a
group, an "X" icon will be available next to that group's name. Clicking the "X"
will remove the user from that group, taking effect after the user is saved.</para>
<para>To add users to a group, the arrow next to the list of groups must be clicked to
expand the section and reveal all available groups. Available groups may then be
checked/unchecked to modify the user's membership within those groups:</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-user-membership.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing group membership of a user</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>If you have a large number of available groups, you can also enter search terms
within the "Filter" field to filter the list of groups by name.</para>
</section>
</section>
<section xml:id="user-group-management">
<title>User group management</title>
<indexterm>
<primary>user group management</primary>
</indexterm>
<indexterm>
<primary>user groups</primary>
</indexterm>
<indexterm>
<primary>groups</primary>
</indexterm>
<para>Clicking "Groups" within the list of settings sections will take you to the user group
management screen. Here you can add new groups and edit the properties and privileges of
existing groups. If you have a large number of user groups, you can also enter search
terms within the "Filter" field to filter the list of groups by name:</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/manage-groups.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>User group management interface</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>To add a new group, click the "New Group" button. This will take you to a screen where
you will be allowed to enter the details of the new group, including membership and any
permissions that members of the group should have.</para>
<para>To edit a group, just click on the group you wish to edit. You will be taken to a
screen which allows you to modify membership, add or remove administrative permissions,
and add or remove read access to specific connections, sharing profiles, or connection
groups. If you are managing a large number of connections or groups and wish to reduce
the size of the list displayed, you can do so by specifying search terms within the
"Filter" field. Connection groups will be filtered by name and connections will be
filtered by name or protocol.</para>
<para>If you have delete permission on the group, you will also see a "Delete" button.
Clicking this button will permanently delete the group. Alternatively, if you only wish
to temporarily disable the effects of membership in the group, checking "Disabled" will
achieve the same effect while not removing the group entirely.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-user-group.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing a user group</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<section>
<title>Group membership of groups</title>
<para>Managing the group membership of groups is more complex than that of users, as
groups may contain both users and groups, with permissions from parent groups
possibly being inherited. Parent groups, member groups, and member users, can all be
managed identically to the <link xmlns:xlink="http://www.w3.org/1999/xlink"
linkend="user-group-membership">group memberships of users</link>, with a
corresponding section dedicated to each within the user group editor:</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-group-memberships.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing the various membership relations of a user group</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>Note that it is ultimately up to the extension providing the group to determine
how permissions granted to that group are inherited, if at all. The <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="jdbc-auth">database
authentication extension</link> implements full recursive inheritance of group
permissions, with permissions granted to a group being granted to all
members/descendants of that group, regardless of how deeply those members are
nested.</para>
</section>
</section>
<section xml:id="connection-management">
<title>Connections and connection groups</title>
<indexterm>
<primary>connection management</primary>
</indexterm>
<indexterm>
<primary>connection groups</primary>
</indexterm>
<indexterm>
<primary>groups</primary>
</indexterm>
<para>Clicking "Connections" within the list of settings sections will take you to the
connection management screen. The connection management screen allows administrators to
create and edit connections, sharing profiles, and connection groups. If you have a
large number of connections, you can also enter search terms within the "Filter" field
to filter the list of connections by name or protocol.</para>
<para>To add a new connection or connection group, click the "New Connection" or "New Group"
button, or the "New Connection" or "New Group" placeholders which appear when you expand
an existing connection group. These options will take you to a screen where you will be
allowed to enter the details of the new object, such as its location, parameters, and
name. This name should be descriptive, but must also be unique with respect to other
objects in the same location.</para>
<para>Once you click "Save", the new object will be added, but will initially only be usable
by administrators and your current user. To grant another user access to the new
connection or connection group, you must <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="user-management">edit that
user</link> or <link xmlns:xlink="http://www.w3.org/1999/xlink"
linkend="user-group-management">a user group that the user is a member of</link>,
checking the box corresponding to the connection or connection group you created.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/manage-connections.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Connection management interface</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<para>Editing connections, sharing profiles, and connection groups works identically to
editing a user. Click on the object you wish to edit, and you will be taken to screen
which allows you to edit it. The screen will display all properties of the object,
including its usage history, if applicable.</para>
<para>If you have delete permission on the object, you will also see a "Delete" button.
Clicking this button will permanently delete the object being edited.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-connection.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing a connection</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
<section xml:id="connection-group-management">
<title>Connection organization and balancing</title>
<para>Connection groups can be either "organizational" or "balancing". Each group can
contain any number of other connections or groups, but the semantics of the group
change depending on the type.</para>
<para>An organizational group behaves exactly as a folder or directory in a file system.
It simply contains connections and other groups, but provides no other behavior.
Clicking on an organizational group within a connection list will expand the group,
revealing its contents.</para>
<para>A balancing group behaves as a connection. It dynamically balances load across the
connections it contains, choosing the connection with the fewest number of active
users. Unlike organizational groups, clicking on a balancing group causes a new
connection to be opened. The actual underlying connection used depends on which
connection has the least load at the time the group was clicked, and whether session
affinity is enabled on that group.</para>
<para><indexterm>
<primary>session affinity</primary>
</indexterm>Enabling session affinity for a balancing group ensures that users are
consistently routed to the same underlying connections until they log out of
Guacamole. The load balancing behavior of the balancing group will apply only for
the first time a particular user connects to the group. If your users may lose their
desktop state if they are routed to a different underlying connection, this option
should be enabled.</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-group.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing a connection group</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
</section>
<section>
<title>Connection sharing</title>
<para>The ability to share a connection is governed through the use of "sharing
profiles". If a sharing profile is created for a connection, users with access to
both that connection and that sharing profile will be able to share the connection
with other users by <link xmlns:xlink="http://www.w3.org/1999/xlink"
linkend="client-share-menu">generating connection sharing links</link>, even if
those users do not otherwise have user accounts within Guacamole.</para>
<para>The name of the sharing profile will be presented an option within the <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="client-share-menu">share
menu</link> for any users with access, while the level of access granted to
users of generated share links will be dictated by the parameters specified for the
sharing profile.</para>
<important>
<para><emphasis>The only extension which ships with Guacamole and implements enough
of the <link xmlns:xlink="http://www.w3.org/1999/xlink"
linkend="guacamole-ext">Guacamole extension API</link> to share its
connections is the <link xmlns:xlink="http://www.w3.org/1999/xlink"
linkend="jdbc-auth">database authentication extension</link></emphasis>.
If you wish to share connections (or allow your users to share connections), you
will need to use the database authentication extension to store those
connections.</para>
<para>If you need to use other authentication schemes, keep in mind that the
database authentication extension can be used <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="ldap-and-database"
>alongside other extensions</link>, with the database handling connection
storage and permissions only. Writing your own extension which supports sharing
is another alternative, though that may be overly complicated if everything you
need is already provided.</para>
</important>
<para>Unlike connections and groups, there is no "New Sharing Profile" button. Sharing
profiles are created through clicking the "New Sharing Profile" placeholders which
appear when connections are expanded. Just as expanding a connection group reveals
the connections or groups therein, expanding a connection reveals the sharing
profiles associated with that connection. This holds true with both <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="connection-management">the
list of connections in the connection management screen</link> and <link
xmlns:xlink="http://www.w3.org/1999/xlink" linkend="user-management">the list of
connections in the user editor</link>.</para>
<para>Creating or editing a sharing profile is virtually identical to creating or
editing a connection, with the exception that not all connection parameters are
available:</para>
<informalfigure>
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="images/edit-sharing-profile.png" format="PNG"
contentwidth="5in"/>
</imageobject>
<caption>
<para>Editing a sharing profile</para>
</caption>
</mediaobject>
</screenshot>
</informalfigure>
</section>
</section>
</chapter>