Chameleon

The Chameleon is a process that provides the ability to start up a service on a remote machine. ssh could be used, but would also provide general access and can cause other security issues. As a result, an application has been created that can only start up Jicos services:

  • HSP (Host Service Provider)
  • TaskServer
  • Host
  • TaskServerMatlab
  • HostMatlab

By default, all five services may be started. This may be limited using the chameleon.security.allowable property listed below.

Another issue that the Chameleon addresses is software updates. Periodic updates to Jicos should be able to be installed with minimal effort required. To this end, the Chameleon can download the latest codebase, from a location defined by the site's administrator, and start the service using the new codebase.


Installation

In the .../framework/scripts/admin/startup directory, there are several tarballs that contain the files necessary to have Chameleon start up automatically at boot time. The information here is intentionally sparse. If these instructions don't make sense, please, Please, PLEASE get the help of your administrative staff.

redhat.tar.gz

This contains two files, etc/rc.d/init.d/chameleon and etc/sysconfig/chameleon. After installing, be sure to activate the service with chkconfig --add chameleon. Startup values can be placed in the etc/sysconfig/chameleon file. Future work includes building an RPM.

sh.tar.gz

This tarball contains chameleon.sh, a generic script that can be placed in the appropriate rc[345].d directory.

Windows

Still needs to be defined

macos-10.3.tar.gz

This file should be extracted in /Library/StartupItems. Set the site-specific properties in /etc/hostconfig.


Properties

A convenient place to store all of the properties is inside chameleon.jar file itself. When starting, Chameleon looks Additional properties can be specified on a site-by-site basis: the URL of the system JAR file, location of the policy file, etc. This file is located at edu/ucsb/cs/jicos/admin/chameleon/default.properties.

The folowing properties are currently supported:

Property Default Value Description
chameleon.property.filename null The name of a file containing all the properties.
chameleon.refresh.jarfile.baseurl null The "base" URL of the latest jicos-runtime.jar file. The file will be in the directory dist/jicos-runtime.jar relative to this directory.
chameleon.refresh.dirname /tmp The location that the new jicos-runtime.jar will be placed when downloaded.
chameleon.security.policy null The value of java.security.policy that the Chameleon is currently using. If the policy file is currently in chameleon.jar, then it will strip off the jar:file:jarfilename! and try to use that.
chameleon.security.policy.hsp null Uses value of chameleon.security.policy, if not defined.
chameleon.security.policy.taskserver null Uses value of chameleon.security.policy, if not defined.
chameleon.security.policy.host null Uses value of chameleon.security.policy, if not defined.
chameleon.security.policy.taskservermatlab null Uses value of chameleon.security.policy, if not defined.
chameleon.security.policy.hostmatlab null Uses value of chameleon.security.policy, if not defined.
chameleon.security.allowable all A comma or whitespace separated list of allowable services. The names of services are defined in Chameleon.java as CMD_x.
chameleon.start.refresh true Perform a codebase refresh before starting any service.
chameleon.start.jvmoptions null Any special options to pass to the JVM when starting a service.


Security Issues

Java has a feature in that if the specified policy file is not found, no error is displayed. Therefore, if you are getting a "Connection Refused" Exception, make sure that the policy file is available. It is common to start the Chameleon from the jar file. When started this way, the -Djava.security.policy=... must be defined before -jar chameleon.jar. Otherwise, a very strict security manager is installed before the java.security.policy property can be read, which prevents any further properties (including the policy property) from being modified.