Recently, I was following installation instructions for Guacamole in the manual on http://guac-dev.org/. My system is Ubuntu 14.04.
First, I installed the basic required dependencies:
$ apt-get install -y apache2 libcairo2-dev libjpeg62-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libpulse-dev libssl-dev libvorbis-dev maven tomcat7
$ apt-get install -y libvncserver-dev
Then, I downloaded guacamole-server-0.9.8.tar.gz and guacamole-0.9.8.war and installed them according to the instructions in the manual:
$ tar xf guacamole-server-0.9.8.tar.gz
$ cd guacamole-server-0.9.8
$ ./configure
$ make
$ make install
$ cp guacamole-0.9.8.war /var/lib/tomcat7/webapps/guacamole.war
$ mkdir /etc/guacamole
I created the /etc/guacamole/guacamole.properties, containing the following:
guacd-hostname: localhost # although the guide says it should be guacd-host, but the example shown in http://guac-dev.org/doc/gug/configuring-guacamole.html is guacd-hostname
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
/etc/guacamole/user-mapping.xml contains the following:
<user-mapping>
<authorize username="USERNAME" password="PASSWORD">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">123456</param>
</authorize>
<authorize username="wangx" password="wangxiang">
<protocol>vnc</protocol>
<param name="hostname">192.168.1.111</param>
<param name="port">5901</param>
<param name="password">123456</param>
</authorize>
</user-mapping>
I then restarted tomcat7 and guacd:
$ /etc/init.d/tomcat7 restart
$ /etc/init.d/guacd restart
The GUACAMOLE_HOME environment variable is empty:
$ echo $GUACAMOLE_HOME
There is no .guacamole directory in /home/<user> nor in /var/lib/tomcat7/webapps/guacamole. When I visit the http://localhost:8080/guacamole, I entered username "wangx" and password "wangxiang", it shows invalid login.
How can I solve this? Where should I locate the guacamole.properties and user-mapping.xml file? Did I do something wrong?
Thank you for your attention.
according to the instructions in the manual:
... $ mkdir /etc/guacamole
Guacamole will not automatically read from /etc/guacamole. It will read from GUACAMOLE_HOME, but this is not an environment variable - it is a placeholder for the Guacamole configuration directory which can be determined through an environment variable of the same name, but there are other possible locations. From the GUACAMOLE_HOME description in the Guacamole manual:
GUACAMOLE_HOMEGuacamole reads files from its own configuration directory by default, resorting to the classpath only when this directory cannot be found. When locating this directory, Guacamole will try, in order:
- The directory specified within the system property
guacamole.home.- The directory specified within the environment variable
GUACAMOLE_HOME.- The directory
.guacamole, located within the home directory of the user running the servlet container.This directory will be referred to as
GUACAMOLE_HOMEelsewhere in the documentation.Guacamole uses
GUACAMOLE_HOMEas the primary search location for configuration file likeguacamole.properties. ...
Your guacamole.properties and user-mapping.xml look fine, but Guacamole will not be able to find those files unless they are within GUACAMOLE_HOME. An extremely simple way to solve this would be to symbolically link .guacamole within the Tomcat user's home directory to /etc/guacamole. In the case of the "tomcat7" package on Ubuntu, the Tomcat user's home directory is /usr/share/tomcat7:
$ ln -s /etc/guacamole/ /usr/share/tomcat7/.guacamole
Alternatively, you could create the .guacamole directory, and make a symbolic link to guacamole.properties instead. Since the location of your user-mapping.xml is explicitly specified within your guacamole.properties, you do not need to place it within GUACAMOLE_HOME:
$ mkdir /usr/share/tomcat7/.guacamole
$ ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/
Be sure to restart Tomcat after you make these changes, and things should start working.
来源:https://stackoverflow.com/questions/33499048/the-user-mapping-xml-file-doesnt-work-in-guacamole-invalid-login