On Mon, Apr 27, 2009 at 10:03 AM, Asiri Rathnayake < [email protected]> wrote:
> Hi Devs, > > Jodconverter 3.0-beta-2 version has been released: > > http://groups.google.com/group/jodconverter/browse_thread/thread/8b73b26b701c3249 > > One of the most important fix for us is the first point mentioned there: > > "OOo is now started with -nofirststartwizard by default. This avoids the > frequent problem of OOo refusing to work on a new machine because it's > expecting somebody to accept its license dialogue even in -headless mode" > > Without this fix currently we have to copy an already initialized ooprofile > directory to the destination server and point to it from xwiki.properties > file. This is a pain. +1, However, I'd also like to express a wish for the ability to launch the openoffice server the "old fashioned tedious way" for those with security concerns and a desire for standards of service administration on web servers. Does this new release re-enable that capability that was removed from 1.8M2? IMHO, many security-conscious administrators will prefer to have control over this service via traditional and accepted mechanisms like chkconfig(8) and /etc/init.d/ scripts. They may be surprised or made uncomfortable by the notion of an externally accessible Internet application running in a java web server that launches a rather extensive "untrusted system" (openoffice running as a server) and runs it with the same exact privileges as your "trusted" web server and "trusted' java and Servlet spec, thereby potentially "tainting" all, as well as exposing unexpected privilege-escalation exploits <http://en.wikipedia.org/wiki/Privilege_escalation>. >From a security standpoint, it would be nice to have "separation of concerns<http://en.wikipedia.org/wiki/Separation_of_concerns>" and "separation of privilege<http://en.wikipedia.org/wiki/Privilege_separation>" : run the Openoffice server as a different "user" on the system that can only write its own home directory and /tmp but not have the same access capabilities given to the java web server (and vice-versa). The 1.8M1/M2 releases where this advice still applied, required that both OpenOffice server and the java web server be run as the same user (tomcat). This does not have to be a fundamental limitation of the "named pipe" and unix-domain ipc used -- it's a limitation of the OpenOffice server or its configuration. Below is a section I wrote for http://code.xwiki.org/xwiki/bin/view/Applications/OfficeImporterApplicationto deal with this issue. > Installation notes for Fedora 10 > > Strange bugs can occur if the incorrect or incomplete openoffice install is > selected, or if this particular build of openoffice is run with a different > Java JVM than the GNU GCJ which "yum" loads as a dependency of OpenOffice. > After numerous troubles with the OpenOffice server using the default Sun JDK > used to run Tomcat and Xwiki, I set the JVM used by OpenOffice back to "GCJ" > and things began working reliably and quickly. Therefore these instructions > assume you've done "yum groupinstall 'Office/Productivity'" and "yum install > openoffice.org-headless" and have the entailed Java dependencies installed: > 'java-1.5.0-gcj' , 'sinjdoc', 'java_cup', 'lucene', 'saxon', 'jdom', > 'xalan-j2', … See > here<http://jira.xwiki.org/jira/browse/XAOFFICE-5?focusedCommentId=35043&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_35043>for > details. > > The OpenOffice server currently must run as same user running the Java Web > Container. For example, if user 'tomcat' runs the Tomcat server, then the > same user must be used to start the OpenOffice server. However since > 'tomcat' is not a login account, the OpenOffice server setup requires a > first interactive run of the application via the "console" or remote X > server. This allows it to write configuration files used when it is launched > as a server. > > First, we create a new account 'OOo' to run the Open Office server > interactively for its first run: > > ROOT-MYHOST-105-~> useradd --user-group --password MYPASSWORD OOo > ROOT-MYHOST-106-~> cp -rp .ssh ~OOo ## optional copy existing user's > SSH credentials, for remote login > > ROOT-MYHOST-107-~> chown -R OOo ~OOo/.ssh ## optional change ownership so > SSH works > > Log in to this account "OOo/MYPASSWORD" via console or via "ssh -Y > o...@myhost". Run OpenOffice launch program 'ooffice' once either from the > SSH session or from a console menu or terminal. From the menu-bar, select > "Tools->Options..." and from the "Options" dialog, open the "Openoffice.org" > hierarchy and select "Java." In "Java options" be sure "Use a java runtime > environment" checkbox is selected, and that the "Free Software Foundation > 1.5.0" (/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre) java is selected. Then > click Ok to submit the "Options" dialog. Finally, select "File->Exit" from > menu-bar and openoffice should save this configuration for future use by the > OpenOffice server. > > Now that OpenOffice is setup for interactive use, we now need to change it > over to a "server" setup. This is done by changing permissions on the ~OOo > home-directory so that 'tomcat' can write the directory. Since we're no > longer going to login on the "OOo" account, first thing we do is disable it: > > > chsh -s /sbin/nologin OOo ## you may also want to !! away the > associated password in /etc/shadow > > Openoffice uses two directories to persist "user" files in ~OOo; > 'ooserver-start' also writes log files into ~OOo. Therefore we set > permissions for the affected directories: > > ROOT-MYHOST-112-~> chown -R tomcat.tomcat ~OOo/.openoffice.org > ROOT-MYHOST-113-~> chown -R tomcat.tomcat ~OOo/.fontconfig > ROOT-MYHOST-125-~> chown tomcat.tomcat ~OOo > > The server invocation is: > > sudo -u tomcat /usr/local/bin/ooserver-start > > Sudo <http://fedorasolved.org/post-install-solutions/sudo> is used to run > the script /usr/local/bin/ooserver-start as user 'tomcat': > > #!/bin/bash > export OO_SERVER="/usr/bin/ooffice" > export OO_FLAGS="-nofirststartwizard" > export OO_ACCEPT="socket,host=127.0.0.1,port=8100;urp;" > > export OO_LOG="OOSERV.log" > export USER="OOo" > export LOGNAME="$USER" > export HOME="/home/$USER" > > unset DISPLAY #### Prevent OO from running interactive; > force failure on missing openoffice.org-headless > echo DISPLAY="$DISPLAY" #### for details, see > http://www.artofsolving.com/node/12 > > echo Cleaning up in $HOME > cd $HOME > killall soffice.bin > killall soffice.bin ### second kill's error message means the > first one succeeded > rm -f .openoffice.org/3/.lock ### Lockfile left from previous ^C'd invocation > > rm -f OOSERV-LOG.bak > mv -f $OO_LOG OOSERV-LOG.bak ### Backup previous logfile > echo Starting $OO_SERVER -- see $OO_LOG for details > exec $OO_SERVER -headless -accept="$OO_ACCEPT" $OO_FLAGS < /dev/null > > $OO_LOG 2>&1 & > > The running Openoffice server leaves a socket for communications in /tmp by > default (perhaps this is the reason why the OpenOffice server must be the > same user as the java webserver??): > > srwxr-xr-x 1 tomcat tomcat 0 2009-01-27 17:57 > /tmp/OSL_PIPE_91_SingleOfficeIPC_cabcdef0123456789abcd= > > To automate startup of the OpenOffice server on boot, consider using the SysV > init runlevel > system<http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-boot-init-shutdown-sysv.html>and > a script like > /etc/init.d/openoffice<http://little.bluethings.net/2008/05/30/automating-document-conversion-in-linux-using-jodconverterooo/> > . > ... nmayer | 2009/01/22 02:14 > IMHO, it would be a significant improvement if the OpenOffice server could > run as a different user than the one which runs the web-container, such as > 'tomcat' on fedora 10. The entire reason you want to run tomcat as a > lower-privilege user is specifically to give it a "container" to run in, in > which it has less chance of accidentally overwriting some other part of the > system configuration, such as the port-80 webserver's configuration. By the > "principle of least privilege" we want Java/Web-Container stuff running as a > low-priv user (100<499) that can only bind nonprivileged ports. That's why > tomcat runs on port 8080 or 8000 and you use Apache httpd and mod_jk etc to > provide a "secure" front for Java that sysadmins have approved for use on > privileged ports like port 80. > > Also, by the principle of least priviledge and reduction of overlapping > concerns, low privilege users such as 'tomcat' should only be able to write > to a very specific part of the filesystem. Likewise a different user, e.g. > 'ooserv' in the example above, should be the only user able to write in > /home/ooserv and be the user running the OpenOffice server. If someone > "hacks" via the OpenOffice server importer, at best they'll be able to get > it to write some data into /home/ooserv, but it will not be able to change > which web-apps are deployed on your server. The latter could potentially > happen, in theory, because the OpenOffice server is running as same user as > the Java web conainer. > > There's no reason for this either. The openoffice server should be able to > accept connections from any other process on the system given that it is > listening on localhost, per the "socket,host=127.0.0.1,port=8100;urp;" > setting. > -- Niels http://nielsmayer.com _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

