| <?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> |