<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Security Advancements at the Monastery &#187; Leopard</title>
	<atom:link href="http://blog.securitymonks.com/category/leopard/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.securitymonks.com</link>
	<description>Information about developments at the Monastery</description>
	<lastBuildDate>Fri, 03 Sep 2010 05:41:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Request Tracker Installation  (Part 2 of 2)</title>
		<link>http://blog.securitymonks.com/2008/08/03/request-tracker-installation-part-2-of-2/</link>
		<comments>http://blog.securitymonks.com/2008/08/03/request-tracker-installation-part-2-of-2/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 02:33:46 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[ModSecurity]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Request Tracker]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=211</guid>
		<description><![CDATA[Awhile back, I posted &#8220;Request Tracker Installation  (Part 1 of 2),&#8221; which provided information and additional links concerning Request Tracker (RT).  As a reminder, RT is an enterprise-grade ticketing system which allows for the checking of the status of various tasks including when the tasks were requested, who requested the tasks and why, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/opensource.jpg" alt="Open Source Installation" align="left"/>Awhile back, I posted &#8220;<a href="http://blog.securitymonks.com/category/request-tracker">Request Tracker Installation  (Part 1 of 2)</a>,&#8221; which provided information and additional links concerning <a href="http://bestpractical.com/rt/">Request Tracker (RT)</a>.  As a reminder, RT is an enterprise-grade ticketing system which allows for the checking of the status of various tasks including when the tasks were requested, who requested the tasks and why, when the tasks were completed, prioritizing, etc.  I delayed the second part of the post, which was to step through installation of RT, until I could add some background information.  I wanted to walk through implementing secure open source software such as <a href="http://www.apache.org/">Apache</a>, <a href="http://www.php.net">PHP</a>, <a href="http://www.mysql.com">MySQL</a>, <a href="http://www.openssl.org">OpenSSL</a>, and <a href="http://www.modsecurity.org">ModSecurity</a>.  No small task.  It is all about integration both in terms of security and the power that a software package like RT can provide your organization.  That is why I selected the image on the left of all these various open source software symbols for this post on RT.</p>
<p>
If you are going to be using RT, you need to get the &#8220;<a href="http://rtbook.bestpractical.com/">RT Essentials</a>&#8221; book written by Jesse Vincent, Robert Spier, Dave Rolsky, Darren Chamberlain, and Richard Foley.  It is a good reference and a quick read.  For up-to-date information, see the <a href="http://wiki.bestpractical.com/view/HomePage">RT Wiki</a> and the <a href="http://blog.bestpractical.com/">Best Practical Solutions blog site</a>.
</p>
<p><h3>Prerequisites</h3>
<p>To start, please review the following posts:</p>
<ol>
<li><a href="http://blog.securitymonks.com/2008/04/14/an-apache-implementation/">An Apache Implementation</a>
	</li>
<li><a href="http://blog.securitymonks.com/2008/04/24/apache-and-openssl/">Apache and OpenSSL</a></li>
<li><a href="http://blog.securitymonks.com/2008/04/21/php-implementation/">PHP Implementation</a></li>
<ul>
<li><a href="http://blog.securitymonks.com/2008/04/21/php-as-a-module/">PHP as a Module</a></li>
<li><a href="http://blog.securitymonks.com/2008/04/21/php-as-a-cgi/">PHP as a CGI</a></li>
<li><a href="http://blog.securitymonks.com/2008/04/21/php-configuration-modifications/">PHP Configuration Modifications</a></li>
</ul>
<li><a href="http://blog.securitymonks.com/2008/04/07/introduction-to-mysql/">Introduction to MySQL</a></li>
<li><a href="http://blog.securitymonks.com/2008/02/28/setting-up-and-securing-mysql-references/">Setting Up and Securing MySQL: References</a></li>
<li><a href="http://blog.securitymonks.com/2008/07/31/implementing-a-web-application-firewall-with-modsecurity/">Implementing a Web Application Firewall with ModSecurity</a></li>
</ol>
<h3>Install Software</h3>
<p>With Apache, MySQL, PHP, OpenSSL, and ModSecurity installed, we are now ready to focus on software packages required by RT.</p>
<h4><strong>1.  Installing <a href="http://expat.sourceforge.net/">expat</a>.</strong></h4>
<p>Different operating systems will vary on whether <a href="http://expat.sourceforge.net/">expat</a>, the XML parser, is installed.  Expat is needed to complete the cpan install for <a href="http://perl-rss.sourceforge.net/">XML::RSS</a>.  Check your particular operating system.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# cd /usr/local/src
 /usr/local/src root# wget http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz
 /usr/local/src root# tar xzf expat-2.0.1.tar.gz
 /usr/local/src root# cd expat-2.0.1
 /usr/local/src/expat-2.0.1 root# ./configure
 /usr/local/src/expat-2.0.1 root# make
 /usr/local/src/expat-2.0.1 root# make check
 /usr/local/src/expat-2.0.1 root# make install
</pre>
</td>
</table>
<p></p>
<h4><strong>2.  Install FastCGI</strong></h4>
<p>For RT, you can install <a href="http://perl.apache.org/">mod_perl</a> or <a href="http://www.fastcgi.com/">mod_fastcgi</a>.  In this posting, we are going to walks through the installation of FastCGI.  Information concerning mod_perl will be provided below so the reader can chose what fits best in their environment.  FastCGI is much simpler to install and allows the core Apache process to stay small in size.  With FastCGI, RT runs as a separate process from Apache allowing RT to be stopped and restarted without affecting the Apache server.  In general, FastCGI programs are easier to manage.
</p>
<p>
The Apache module mod_fastcgi allows a web server to run CGI scripts via a separate, persistent program.  PHP comes with FastCGI support compiled in by default, so nothing needs to be done to the PHP installation.
</p>
<p>
You can have the Apache program call FastCGI, and have it run as the same user as the Apache server or use suexec to have FastCGI switch to a different user.  Under some operating systems, suexec may not get compiled and installed when installing Apache.  Check if suexec is installed, and if not go back to the Apache source, compile it, and install it.  Initially, we are not going to use the suexec program.  Instead we will create the group &#8220;rt&#8221;, add user httpd to group rt, and set permissions that way.  You may choose later to use suexec.  </p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# ls -la /usr/local/apache/bin/suexec
ls: /usr/local/apache/bin/suexec: No such file or directory
 root# cd /usr/local/src/httpd-2.2.8
 /usr/local/src/httpd-2.2.8 root# make suexec
 /usr/local/src/httpd-2.2.8 root# cp ./support/suexec /usr/local/apache/bin/suexec
</pre>
</td>
</table>
<p>
Now, we are ready to get mod_fastcgi installed.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# cd /usr/local/src
 /usr/local/src root# wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
 /usr/local/src root# tar xzf mod_fastcgi-2.4.6.tar.gz
 /usr/local/src root# cd mod_fastcgi-2.4.6
 /usr/local/src/mod_fastcgi-2.4.6 root# cp Makefile.AP2 Makefile
 /usr/local/src/mod_fastcgi-2.4.6 root# make top_dir=/usr/local/apache
 /usr/local/src/mod_fastcgi-2.4.6 root# make top_dir=/usr/local/apache install
 /usr/local/src/mod_fastcgi-2.4.6 root# /usr/local/apache/bin/apachectl stop
 /usr/local/src/mod_fastcgi-2.4.6 root# vi /usr/local/apache/conf/httpd.conf
</pre>
</td>
</table>
<p>
Add the following lines to the Apache httpd.conf file:</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
# Load the mod_fastcgi module.
LoadModule fastcgi_module modules/mod_fastcgi.so
</pre>
</td>
</table>
<p>
Check if installation and configuration is working.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/mod_fastcgi-2.4.6 root# /usr/local/apache/bin/apachectl configtest
Syntax OK
 /usr/local/src/mod_fastcgi-2.4.6 root# /usr/local/apache/bin/apachectl start
 /usr/local/src/mod_fastcgi-2.4.6 root# cat /var/www/logs/error_log | grep -i fastcgi
[Fri Aug 01 12:17:22 2008] [notice] FastCGI: process manager initialized (pid 15221)
[Fri Aug 01 12:17:22 2008] [notice] Apache/2.2.8 (Unix) mod_ssl/2.2.8
OpenSSL/0.9.7a mod_fastcgi/2.4.6 configured -- resuming normal operations
</pre>
</td>
</table>
<p>
For in depth coverage of mod_perl, <a href="http://stason.org/">Stas Bekman</a> and <a href="http://www.oreillynet.com/pub/au/999">Eric Cholet</a> have written the book, &#8220;<a href="http://modperlbook.org/">Practical mod_perl</a>.&#8221;  They have made the complete book available online in both <a href="http://modperlbook.org/html/index.html">HTML</a> and <a href="http://modperlbook.org/pdf/index.html">PDF</a> format under the <a href="http://creativecommons.org/">Creative Commons</a> Attributes Share-Alike License.  <a href="http://stason.org/">Stas Bekman</a> and <a href="http://www.onyxneon.com/people/jim_brandt.html">Jim Brandt</a> have also written the &#8220;<a href="http://www.amazon.com/gp/product/0977920119?ie=UTF8&#038;tag=theultimatlearna&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0977920119">mod_perl2 User&#8217;s Guide Book</a>&#8221; where 50% of the book&#8217;s proceeds go to <a href="http://www.perlfoundation.org/">The Perl Foundation</a>.
</p>
<p>
If you are installing under Mac OS X, mod_perl may complain about Perl 5.8.8 being built without threads and you will get a message about building perl with -Duserthreads.  If you are determined to use mod_perl, consider dropping back to Apache 1.3.x and using mod_perl 1.x.  While Apache 1.3.x is legacy code, and I tend to want to use the code that is being actively developed, there is an argument for using Apache 1.3.x.  One major feature of Apache 2.x is threading. On Windows, where most basic libraries are and must be threadsafe, Apache 2 is really the only choice.  <a href="http://search.cpan.org/~nwclark/perl-5.8.8/README.macosx">Earlier Mac OS X</a> releases did not include a completely thread-safe libc, so threading is still not fully supported in Perl.  This is why the Perl version that comes with Mac OS X is not compiled to use threads.  To use  Apache2.x, Perl will need to be configured to use threads.  The code is available from the <a href="http://www.perl.com/download.csp">Perl web site</a>.
</p>
<p>
Rather than getting bogged down in compiling Perl to use thread, we will move ahead and use FastCGI.  By the time this post, I will have worked on getting RT installed under Linux, Mac OS X, and FreeBSD.  Figuring out what software works best in a multi OS environment can be challenging.  </p>
<h4><strong>3. Configure RT</strong></h4>
<p>Let us start by adding the group RT.  Under many operating systems, this would be done with the simple command &#8220;<strong>groupadd rt</strong>.&#8221;  Things are always more interesting under Mac OS X, where you would have to first look at what group ids (gid), choose an unused gid, and then create the rt group using that gid.  Under Mac OS X Leopard, group rt would be created with the commands:</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# dscl . list /groups PrimaryGroupID | sort -k 2,2 -n
 root# dscl . create /groups/rt gid gid-of-rt
 root# dscl . create /groups/rt passwd '*'
 root# dscl . read /groups/rt
AppleMetaNodeLocation: /Local/Default
Password: *
PrimaryGroupID: gid-of-rt
RecordName: rt
RecordType: dsRecTypeNative:groups
</pre>
</td>
</table>
<p>
RT&#8217;s primary maintenance and documentation site is <a href="http://www.bestpractical.com">http://www.bestpractical.com</a>.   Documentation can be found at the Best Practical Solutions RT Wiki located at <a href="http://wiki.bestpractical.com/view/HomePage">http://wiki.bestpractical.com/</a>. The latest TAR/GZ is located at <a href="http://download.bestpractical.com/pub/rt/release/rt.tar.gz">http://download.bestpractical.com/pub/rt/release/rt.tar.gz</a>. The lack of any version numbers means the version can be updated at any time. The latest version, as of this writing, is 3.8.0.
</p>
<p>
The following are the steps for downloading and configuring RT:</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# cd /usr/local/src
 /usr/local/src root# wget http://download.bestpractical.com/pub/rt/release/rt.tar.gz
 /usr/local/src root# tar xzf rt.tar.gz
 /usr/local/src root# cd rt-3.8.0
 /usr/local/src/rt-3.6.5 root# ./configure \
  --with-web-user="httpd" \
  --with-web-group="httpd" \
  --with-rt-user="httpd" \
  --with-rt-group="rt"
</pre>
</td>
</table>
<p></p>
<h4><strong>4.  Install Apache::TEST</strong></h4>
<p>Perl module Apache::TEST will not allow you to run the test check as root. You can download the module separately as a non root user and after configuring, compiling, and testing the program, you install it as root.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# su - goofy
 ~$ cd src
 ~/src goofy$ wget http://search.cpan.org/CPAN/authors/id/P/PH/PHRED/Apache-Test-1.30.tar.gz
 ~/src goofy$ tar xzf Apache-Test-1.30.tar.gz
 ~/src goofy$ cd Apache-Test-1.30
 ~/src goofy$ perl Makefile.PL
 ~/src goofy$ make
 ~/src goofy$ make test
 ~/src goofy$ sudo su root
 root# make instal
</pre>
</td>
</table>
<p></p>
<h4><strong>5.  Run fixdeps Command and Install Perl Modules</strong></h4>
<p>Now you are ready to utilize the <strong>fixedeps</strong> utility that comes with RT to install required Perl modules.  There is also the <strong>testdeps</strong> utility to test if all dependencies are installed and RT is ready to be installed.  You may need to run fixdeps multiple times before testdeps reports that you have all required software packages.  The first time through, it can take awhile (depending on your installation).  Be aware that some perl modules may need to be installed manually.  It various depending on OS and your environment.  You will be able to tell which modules need manual installation by the final message provided by the fixdeps program.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# cd /usr/local/src/rt-3.8.0
 /usr/local/src/rt-3.8.0 root# make fixdeps
 /usr/local/src/rt-3.8.0 root# make fixdeps
 /usr/local/src/rt-3.8.0 root# make testdeps
</pre>
</td>
</table>
<p></p>
<h4><strong>6.  Install RT</strong></h4>
</p>
<p>
The final installation of RT is the easy part.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# make install
</pre>
</td>
</table>
<p></p>
<h4><strong>7.  Configure RT_SiteConfig.pm</strong></h4>
<p>We now will configure /opt/rt3/etc/RT_SiteConfig.pm.  In the next step a database user and a database will be setup.  We are only adding those values to the configuration file in this step.  I am going to set up a hostname (rt.securitymonks.com) for my current machine.  Please do not copy blindly.  Change this to your environment.  We will create the hostname so it only exists locally by adding an entry into the machines /etc/hosts file.  Right now, I am only going to access the Apache server from this machine.  In other words, the client and server will be on the same box.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# vi /etc/hosts
</pre>
</td>
</table>
<p>
Add the following line, adapting it to your organization:</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# vi /etc/hosts
##
127.0.0.1       localhost
10.1.218.202   rt.securitymonks.com
</pre>
</td>
</table>
<p>
We are now ready to modify the RT_SiteConfig.pm file.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# vi /opt/rt3/etc/RT_SiteConfig.pm
</pre>
</td>
</table>
<p>
At minimum, add the following linesto /opt/rt3/etc/RT_SiteConfig.pm:</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
Set($rtname, 'BRORT');
Set($Organization, 'securitymonks');

Set($CorrespondAddress , 'john@securitymonks.com');
Set($CommentAddress , 'john@securitymonks.com');

Set($Timezone , 'US/Eastern'); # obviously choose what suits you

# THE DATABASE:

Set($DatabaseType, 'mysql'); # e.g. Pg or mysql

# These are the settings we used above when creating the RT database,
# you MUST set these to what you chose in the section above.

Set($DatabaseUser , 'rtuser');
Set($DatabasePassword , 'secret');
Set($DatabaseName , 'rtdb');

# THE WEBSERVER:

Set($WebPath , '');
Set($WebBaseURL , 'https://rt.securitymonks.com');

# Logging
Set($LogToSyslog, '');
Set($LogToFile, 'debug');
Set($LogDir, '/opt/rt3/var/log');
Set($LogToFileNamed, "rt.log");
</pre>
</td>
</table>
<p></p>
<h4><strong>8.  Initialize the Database</strong></h4>
<p>RT needs to create the rtdb database, the rt db users, and initialize some tables.  This can be done with the command <strong>initialize-database</strong>, which should be run only once.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# make initialize-database
 /usr/local/bin/perl sbin/rt-setup-database --action init --dba root --prompt-for-dba-password
In order to create or update your RT database, this script needs to connect to your mysql
instance on localhost as root.  Please specify that user's database password below. If the
user has no database

password, just press return.

Password:
Working with:
Type:   mysql
Host:   localhost
Name:   rtdb
User:   rtuser
DBA:    root
Now creating a mysql database rtdb for RT.
Done.
Now populating database schema.
Done.
Now inserting database ACLs
Granting access to rtuser@'localhost' on rtdb.
Done.
Now inserting RT core system objects
Done.
Now inserting data
Done inserting data
Done.
</pre>
</td>
</table>
<p>
Check the MySQL database out.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# mysql -u rtuser -p
mysql> use rtdb;
</pre>
</td>
</table>
<p>
</p>
<h4><strong>9.  Modify Apache Configuration File</strong> </h4>
<p>Edit the /usr/local/apache/conf/httpd.conf file.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# /usr/local/apache/bin/apachectl stop
 /usr/local/src/rt-3.8.0 root# vi /usr/local/apache/conf/httpd.conf
</pre>
</td>
</table>
<p>
We are going to have the RT server run under our secure web server.  Find the &#8220;<strong>&#60virtualhost _default_:443&#62</strong>&#8221; line, change it to &#8220;<strong>&#60virtualhost 10.1.218.202:443&#62</strong>&#8220;.  Add the following lines to that section (adjusting to your environment):</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
   ServerName rt.securitymonks.com
   DocumentRoot /opt/rt3/share/html
   ErrorLog /usr/local/apache/logs/rt.error
   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
   CustomLog /usr/local/apache/logs/rt.access_log combined
   AddHandler fastcgi-script fcgi
   ScriptAlias / /opt/rt3/bin/mason_handler.fcgi/
</pre>
</td>
</table>
<p>
Add the user the Apache server runs as (httpd by default), to the RT group.  For non Mac OS X, modify group membership by editing the file /etc/group (<strong>vi /etc/group</strong>).  Mac OS X users need to user the dscl command.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# dscl . append /groups/rt GroupMembership httpd
 root# dscl . read /groups/rt
</pre>
</td>
</table>
<p>
Change the group and permission on the log area if you have told RT to log to /opt/rt3/var/log. </p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root# chgrp rt /opt/rt3/var/log
 root# chmod g+w /opt/rt3/var/log
</pre>
</td>
</table>
<p>
Test the configuration of the file, and if everything checks out start up Apache. </p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 /usr/local/src/rt-3.8.0 root# /usr/local/apache/bin/apachectl configtest
Syntax OK
 /usr/local/src/rt-3.8.0 root# /usr/local/apache/bin/apachectl start
</pre>
</td>
</table>
<p>
 Remember there are now three files to check for problems with RT.
<ul>
<li>/opt/rt3/var/log/rt.log</li>
<li>/usr/local/apache/logs/rt.error</li>
<li>/usr/local/apache/logs/rt.access_log</li>
</ul>
<p>There are many configuration operations.  The options chosen in this post represents only the minimal to get RT running.  Please see the <a href="http://wiki.bestpractical.com/view/FastCGIConfiguration">RT Wiki&#8217;s FastCGIConfiguration</a> page for additional information.</p>
<h4><strong>10.  Access RT and Change the Default Password</strong> </h4>
<p><a href="http://blog.securitymonks.com/images/RT_login.jpg"><img align="left" width="150" title="ModifyUserImage" src="/images/RT_login.jpg"/></a>Now it is time to log in and change the default password.  Using the entry we made in our /etc/hosts file, we can now access the site by going to <strong>https://rt.securitymonks.com</strong>.  This URL should be different for your site.  You will see a login screen similar to the image on the left.</p>
<p>
Log in using the username &#8220;<strong>root</strong>&#8221; and password &#8220;<strong>password</strong>&#8220;.  Once logged in, you will see the screen similar to the image below (click on the image if you need to enlarge):<br />
<a href="http://blog.securitymonks.com/images/RT_ataglance.jpg"><img width="400" title="RT_at_a_glance" src="/images/RT_ataglance.jpg"/></a><br />
Over on the left menu bar, select &#8220;<strong>Configuration</strong>.&#8221;  That will bring you to the &#8220;RT Administration&#8221; screen:<br />
<a href="http://blog.securitymonks.com/images/RT_Administration.jpg"><img width="200" title="RT_administration" src="/images/RT_Administration.jpg"/></a><br />
Select, &#8220;<strong>Users</strong>.&#8221;  That will bring you to the &#8220;Select a user&#8221; screen:<br />
<a href="http://blog.securitymonks.com/images/RT_selectauser.jpg"><img width="300" title="RT_Select_a_User" src="/images/RT_selectauser.jpg"/></a><br />
Select the user &#8220;<strong>root</strong>,&#8221; which will bring you to the &#8220;Modify the user root&#8221; screen.  If you look at the lower left of the screen, there is a &#8220;Access Control area.&#8221;  There is a place to enter &#8220;New Password.&#8221;  Do so.  The screen looks like:<br />
<a href="http://blog.securitymonks.com/images/RT_modifyauser.png"><img width="200"  title="RT_Modify" src="/images/RT_modifyauser.png"/></a><br />
Make sure to hit the &#8220;Save Changes&#8221; button at the bottom of the screen.  With a working copy of RT, you are not ready to start adjusting configurations and working with the program.  For additional information, Please check out the “<a href="http://rtbook.bestpractical.com/">RT Essentials</a>” and the <a href="http://wiki.bestpractical.com/view/HomePage">RT Wiki</a> and the Best Practical Solutions <a href="http://blog.bestpractical.com/">blog site</a>.  Look for future posts to build upon the RT installation and database.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2008/08/03/request-tracker-installation-part-2-of-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MacPorts Under Mac OS X Leopard</title>
		<link>http://blog.securitymonks.com/2008/04/18/macports-under-mac-os-x-leopard/</link>
		<comments>http://blog.securitymonks.com/2008/04/18/macports-under-mac-os-x-leopard/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 03:42:17 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Leopard]]></category>
		<category><![CDATA[MacPorts]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/2008/04/18/macports-under-mac-os-x-leopard/</guid>
		<description><![CDATA[Put simply, MacPorts makes software installation easier under Mac OS X.  As you may know by now, I prefer to compile from source important software packages, like those used to create the servers accessed by untrusted sources.  That software should be customized to the operating system, environment, and requirements of the organization.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.evaborka.co.nz/place_of_buried_memories_a_samples.jpg"><img src="/images/place_of_buried_memories_a_samples.jpg" alt="Buried" align="left" width=150 /></a>Put simply, <a href="http://www.macports.org/">MacPorts</a> makes software installation easier under Mac OS X.  As you may know by now, I prefer to compile from source important software packages, like those used to create the servers accessed by untrusted sources.  That software should be customized to the operating system, environment, and requirements of the organization.  By doing so, you make the server more secure and stable.  Still, many software packages that support the services, such as awk, glib, etc., can be installed through packages or ports.  If you were to configure every piece of software on your server, you would probably end up spending your whole life keeping software up-to-date.  That would not be fun.  MacPorts makes life considerably easier.  It is similar to the <a href="http://www.freebsd.org/ports/">FreeBSD ports</a> collection.  </p>
<p>
A little background.  The <a href="http://www.macports.org">MacPorts Project</a> is an open-source community initiative to design an easy-to-use system for compiling, installing, and upgrading either command-line, X11 or Aqua based open-source software on the Mac OS X operating system.
</p>
<p>
Below are some basic instructions on <a href="http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts">installing</a> and <a href="http://guide.macports.org/#using">using</a> the ports command.  I initially posted this under &#8220;<a href="http://blog.securitymonks.com/2007/06/17/installing-packages-under-macports/">Installing Packages under MacPorts</a>.&#8221;  Later, while wrestling with Leopard, I added some addition information in the post &#8220;<a href="http://blog.securitymonks.com/2008/02/17/backing-up-using-amanda-on-mac-os-x-leopard-part-i/">Backing Up Using Amanda on Mac OS X Leopard Part I</a>.&#8221;  This post is an attempt to pull together information buried in both posts.
</p>
<p>
If you upgraded to Leopard, you may run into problems with an the previous copy of MacPorts installed under Tiger.  The simplest solution is to do a fresh install of MacPorts.  Move /opt/local under another directory (so you have it in case you need to switch back) and reinstall MacPorts.  A clean install of Leopard will bypass many problems but for many, upgrades are a fact of life that have to be dealt with.</p>
<h3>Installation</h3>
<p>As with many things involving computers, to do one thing requires several steps.  Installing MacPorts is no different.  </p>
<h4><strong>1. Install Xcode Tools</strong></h4>
<p>Xcode is Apple&#8217;s premiere development environment for Mac OS X. </p>
<ol TYPE="A">
<li>Download the latest verson of Xcode Tools from <a href="http://developer.apple.com/tools/download/">Apple&#8217;s developer site</a> —do not install an older version from the install disk or some ports may fail to install.</li>
<li>Run the binary installer.</li>
</ol>
<p>
<strong>Notes:</strong><br />
Xcode Tools is neither installed nor updated via the Software Update utility.  You will want to makre sure you keep it up to date.</p>
<h4><strong>2. Install X Windows (X11)</strong></h4>
<p>Apple&#8217;s X11 is an optional install (MacPorts&#8217; X11 package is not recommended at this time).  If the application X11 is not present in /Applications/Utilities:</p>
<ol TYPE="A">
<li>Insert the OS X 10.5 installation DVD and run the package named Additional Software.</li>
<li>At the software selection window expand the Applications category and click the checkbox beside X11 (and nothing else).</li>
<li>Click Install to install X11.</li>
<li>Drag the /Applications/Utilities/X11 icon to your dock —you must open X11 before launching an X11 application.</li>
</ol>
<p><strong>Notes:</strong></p>
<ul>
<li>X Windows (X11) is required for many MacPorts apps and it is highly recommended that you install it even if you don&#8217;t plan to run X11 apps immediately.</li>
<li>The X11SDK is also required to run X11 software, but it is installed by default during the Xcode Tools install above.  If you wish to check to see if X11 (X11User) and X11SDK are installed, look in /Library/Receipts for the files <i>X11User.pkg</i> and <i>X11SDK.pkg</i>.</li>
<li>If you have upgraded to Max OS X Leopard, please check your /usr/lib directory for any libraries ending with a &#8221; 1&#8243; (that is a space followed by 1).  For example, &#8220;<strong>/usr/lib/ruby 1</strong>&#8221; and &#8220;<strong>/usr/X11R6 1</strong>&#8220;.  These files are created, possibly as a backup copy, when Leopard or Xcode 3 is installed.  If you fail to remove those libraries, you will get an error &#8220;<strong>i686-apple-darwin9-gcc-4.0.1: 1/lib: No such file or directory</strong>.&#8221;</li>
</ul>
<h4><strong>3. Set the shell environment</strong></h4>
<p>Setting the Unix shell environment is critical for MacPorts to function.  In you <i>~/.profile</i> file, add the MacPorts paths in front of the standard UNIX paths for the default BASH shell.  This is done so that if you have utilities or libraries from both MacPorts and OS X&#8217;s standard install, the MacPorts libraries will be run instead of the ones provided by Apple.  You can change the PATH via the command line with the command:
</p>
<p>
<strong><tt>export PATH=/opt/local/bin:/opt/local/sbin:$PATH</tt></strong>
</p>
<p>
You&#8217;ll need to add this variable to your <i>~/.profile</i> to run X11 applications:
</p>
<p>
<strong><tt>export DISPLAY=:0.0</tt></strong>
</p>
<p>
So a <i>~/.profile</i> file might look like this:</p>
<pre>export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export DISPLAY=:0.0
</pre>
</p>
<p>
<strong>Note:</strong>
</p>
<ul>
<li>Changes to ~/.profile do not take effect on the current shell session — they take effect on new sessions so open a new shell session and type &#8216;env&#8217; to see the path and variable changes.</li>
<li>Other profile files may take precedence over ~/.profile.  If you are using one of the following profile files in your home directory, you will need to merge the contents of it into ~./profile, or vice versa because the shell will ignore one of them:
<ul>
<li><i>~/.bash_login</i></li>
<li><i>~/.bash_profile</i></li>
</ul>
</li>
</ul>
<p>To verify that your ~/.profile has set your shell environment:</p>
<ul>
<li>Open a new terminal window</li>
<li>Type the command: <tt>env</tt></li>
</ul>
<p>Check to make sure the reported path begins with the MacPorts&#8217; paths as show above.  Sample output of command <tt>env</tt>:</p>
<pre>TERM_PROGRAM=Apple_Terminal
TERM=xterm-color
SHELL=/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
</pre>
<h4><strong>4. Install MacPorts</strong></h4>
<p>To install MacPorts using the binary installer (to /opt/local/ only):</p>
<ol TYPE="A">
<li>Download the latest MacPorts .dmg disk image, currently <a class="ext-link" href="http://svn.macports.org/repository/macports/downloads/MacPorts-1.6.0/"><span class="icon"></span>version 1.6.0</a>.</li>
<li>Run the binary installer.</li>
<li>Perform the default “easy” install.</li>
</ol>
<p>
A MacPorts&#8217; selfupdate (see below) will automatically update to the latest release if the binary .dmg image is behind the latest released tarball.
</p>
<p>
To install MacPorts from source (to any path except /usr/local/):</p>
<ol TYPE="A">
<li>Download and unzip the latest MacPorts tarball from the <a href="http://svn.macports.org/repository/macports/downloads/">MacPorts download area</a>.</li>
<li>Perform these commands in a terminal window.<br />
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
cd /usr/local/src
wget http://svn.macports.org/repository/macports/downloads/MacPorts-1.6.0/MacPorts-1.6.0.tar.gz
tar xzf MacPorts-1.6.0.tar.gz
cd MacPorts-1.6.0
./configure
make
sudo make install
</pre>
</td>
</table>
</li>
</ol>
<p>
To see why /usr/local is not a viable install location for MacPorts, see the <a href="http://trac.macosforge.org/projects/macports/wiki/FAQ"><span class="icon"></span>MacPorts FAQ</a>.  Developer releases contain untested code and may have bugs.  Use at your own risk.</p>
<h4><strong>5. Update MacPorts via selfupdate</strong></h4>
<p>The <strong>port selfupdate</strong> command must be run after a new MacPorts install, and frequently thereafter.  The command updates MacPorts with the latest port revisions, and, if necessary, updates MacPorts to the latest release.</p>
<ol TYPE="A">
<li>Open a terminal window.</li>
<li>Execute the MacPorts <tt>selfupdate</tt> command.
<pre>sudo port selfupdate
</pre>
<p>or for verbose output:</p>
<pre>sudo port -d selfupdate
</pre>
</li>
</ol>
<p><h4><strong>6. Installing Packages</strong></h4>
<p>Now you are going to start installing packages under MacPorts.  A good place to see what packages have been ported over to MacPorts is to go to the main <a href="http://darwinports.com/">Darwin Ports Repository</a>.  It still has the old name, but it is the MacPorts site.  It has a search area where you can enter the package name and find installation instructions.
</p>
<p>
For example, if you wanted to install the GNU multiple precision arithmetic library (GMP), you would execute the MacPorts <tt>install</tt> command for <a href="http://gmp.darwinports.com">GMP</a>.</p>
<pre>sudo port install gmp
</pre>
<p>At this point, you should see the following output:</p>
<pre>
--->  Fetching gmp
--->  Attempting to fetch gmp-4.2.1.tar.bz2 from http://ftp.gnu.org/gnu/gmp
--->  Verifying checksum(s) for gmp
--->  Extracting gmp
--->  Configuring gmp
--->  Building gmp with target all
--->  Staging gmp into destroot
--->  Running ranlib on static libraries
--->  Installing gmp 4.2.1_4+test
--->  Activating gmp 4.2.1_4+test
--->  Cleaning gmp
</pre>
<h4><strong>Firewall Problems</strong></h4>
<h4>
For those trying to use MacPorts from a computer behind a corporate firewall, the firewall may block rsync access.  To configure MacPorts to use some other method than rsync, do the following:
<ol>
<li>Check out a working copy of the ports tree to some place on your hard disk, such as the /usr/local/dports directory.  Run <strong>portindex</strong> command so that ports now find these new ports.<br />
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # svn co http://svn.macports.org/repository/macports/trunk/dports \
/usr/local/dports
 root # cd /usr/local/dports
 root # portindex /usr/local/dports
</pre>
</td>
</table>
<p>
</li>
<li>Edit the file /opt/local/etc/macports/sources.conf. Comment out the line starting with &#8220;rsync://&#8221; and add a new line pointing to your working copy, in URL form.  For example: file:///usr/local/dports</li>
</ol>
<h3>Using MacPorts</h3>
<p>Below are a few port commands to help with basic operation and navigation.   Please see Mark Duling, Dr. Michael A Maibaum, and Will Barton excellent guide/site, &#8220;<a href="http://guide.macports.org/">MacPorts Guide</a>&#8221; for more information.<br />
</h4>
<h4><strong>contents</strong></h4>
<p>The contents option displays the files that have been installed by a given port. Uninstalled ports will always show no contents.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port contents glib2
Port glib2 contains:
  /opt/local/bin/glib-genmarshal
  /opt/local/bin/glib-gettextize
etc.
</pre>
</td>
</table>
<p></p>
<h4><strong>deps</strong></h4>
<p>The deps option shows you the dependencies of a port.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port deps glib2
glib2 has build dependencies on:
	pkgconfig
glib2 has library dependencies on:
	gettext
	libiconv
</pre>
</td>
</table>
<p></p>
<h4><strong>install</strong></h4>
<p>The option install is used to install a port.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port install glib2
Skipping org.macports.activate (glib2 ) since this port is already active
--->  Cleaning glib2
</pre>
</td>
</table>
<p></p>
<h4><strong>installed</strong></h4>
<p>The installed option displays all installed ports.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port installed
</pre>
</td>
</table>
<p></p>
<h4><strong>list</strong></h4>
<p>The list option is used to get a list of all available ports.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port list
</pre>
</td>
</table>
<p></p>
<h4><strong>search</strong></h4>
<p>The search option is very useful to find port names by partial matches.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port search glib2
glib2   devel/glib2   2.14.0   Library with data structure functions and other constructs
</pre>
</td>
</table>
<p></p>
<h4><strong>selfupdate</strong></h4>
<p>The selfupdate command updates MacPorts with the latest port revisions, and, if necessary, updates MacPorts to the latest release.</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
 root # port selfupdate
</pre>
</td>
</table>
<p></p>
<h3>Final Word</h3>
<p>MacPorts is a powerful tool that should be used in conjunction with software configuration and installation.  As with any skilled craftsperson, use the right tool for the right job.  Find a balance between keeping software up-to-date and taking the time to understand the software.  To quote <a href="http://en.wikipedia.org/wiki/Louis_Nizer">Louis Nizer</a>, famous legal wizard, &#8220;<em>A man who works with his hands is a laborer; a man who works with his hands and his brain is a craftsman; but a man who works with his hands and his brain and his heart is an artist</em>”.  Life is always about using every tool at your disposal, including hands, brain, and heart.  Never limit yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2008/04/18/macports-under-mac-os-x-leopard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linus Torvalds Speaks Out on Vista, Leopard, and ZFS</title>
		<link>http://blog.securitymonks.com/2008/02/06/linus-torvalds-speaks-out-on-vista-leopard-and-zfs/</link>
		<comments>http://blog.securitymonks.com/2008/02/06/linus-torvalds-speaks-out-on-vista-leopard-and-zfs/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 20:10:07 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/2008/02/06/linus-torvalds-speaks-out-on-vista-leopard-and-zfs/</guid>
		<description><![CDATA[&#8220;I&#8217;ve decided to change the copyright to have the same set of rules as the GNU copyleft &#8211; I got some mail asking about it, and I agree..&#8221; &#8212; Linus Torvalds

Linux creator Linus Torvalds  talked with Nick Miller from the Sydney Morning Herald about his work and ambitions for his operating system.  Linux [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em><a href="http://kerneltrap.org/Quote/Linux_GPLd">I&#8217;ve decided to change the copyright to have the same set of rules as the GNU copyleft &#8211; I got some mail asking about it, and I agree.</a></em>.&#8221; &#8212; <strong><a href="http://en.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a></strong></p>
<p>
<img align="left" src="http://www.thedailystar.net/2006/06/24/2006-06-24__tech01.jpg" width=150 />Linux creator Linus Torvalds <a href="http://www.smh.com.au/news/technology/q-and-a-with-linus-torvalds/2008/02/05/1202090403120.html"> talked with Nick Miller</a> from the Sydney Morning Herald about his work and ambitions for his operating system.  Linux expressed his preference for Mac OS X over Windows.  The part that I found most entertaining was when he described the Mac OS X file system HFS+ as &#8220;<em>complete and utter craps</em>.&#8221;  When asked, what he thought about the regular hype about the release of a new version of Microsoft Windows or Apple OS X, Linus responded:</p>
<blockquote><p>An o/s should never have been something that people (in general) really care about: it should be completely invisible and nobody should give a flying f*** about it except the technical people.</p>
<p>It&#8217;s stupid &#8211; when you make a big deal about something like Vista or Leopard a lot of it is about things I don&#8217;t consider to be the operating system. It&#8217;s about the visual shell around it. The fact Microsoft tied the two together so much actually caused them problems, not just the legal problems. If you manage a thousand clients, or a hundred thousand clients which is not at all unheard of, you sure as hell don&#8217;t want to point and click at them. In many ways Microsoft has had to fix the design mistakes they made when they thought the graphical approach should be a very intimate part of (Windows).</p>
<p>To Microsoft and Apple the o/s is important as a way to control the whole environment, from a marketing and money-making standpoint, to force people to upgrade their applications, and your hardware</p></blockquote>
<p>When asked, if he had a favorite between Leopard and Vista, Linus responded:</p>
<blockquote><p>I don&#8217;t think they&#8217;re equally flawed. I think Leopard is a much better system. On the other hand, (I&#8217;ve found) OS X in some ways is actually worse than Windows to program for. Their file system is complete and utter crap, which is scary. I think OS X is nicer than Windows in many ways, but neither can hold a candle to my own (Linux). It&#8217;s a race to secondplace!</p></blockquote>
<p>In my last post &#8220;<a href="http://blog.securitymonks.com/2008/02/05/bro-on-freebsd-7-should-you-care/">Bro on FreeBSD 7: Should You Care?&#8221;</a>, ZFS was listed as one of the improvements of FreeBSD 7.  The posts &#8220;<a href="http://blogs.techrepublic.com.com/tech-news/?p=649">The Advantages of Sun&#8217;s ZFS Filesystem</a>&#8221; and &#8220;<a href="http://www.tech-recipes.com/rx/1446/zfs_ten_reasons_to_reformat_your_hard_drives">Ten Reasons to Reformat Your Hard Drives</a>&#8221; discuss some of the advantages of ZFS.  Blogger jamesd_wi posted a very nice collection of links concerning ZFS titled &#8220;<a href="http://uadmin.blogspot.com/2006/06/interested-in-zfs.html">Interested in ZFS</a>.&#8221;  Paul Venezia&#8217;s article in InfoWorld titled, &#8220;<a href="http://www.infoworld.com/infoworld/article/07/06/07/23TCzfs_1.html">Sun ZFS breaks all the rules</a>&#8221; does a real nice job of hitting the high points.
</p>
<p>
To address Linus comment on HFS+, Apple is developing ZFS for Mac OS X. <a href="http://blogs.sun.com/dellofano/">Noel Dellofano</a>, who is part of the ZFS development team, did release binaries and source code of ZFS for Mac OS X on the MacOSForge site. Noel cautioned in his post, &#8220;<em>As I mentioned, ZFS is still BETA, so there are (and likely will be) some issues turn up with compatibility with the upper layers of the system if that&#8217;s what you&#8217;re referring to</em>.&#8221;  The Mac OS forge has created a &#8220;<a href="http://trac.macosforge.org/projects/zfs/wiki/issues">Known Issues and Features in the Works</a>&#8221; area to help keep people apprised of the development of ZFS under Mac OS X.
</p>
<p>
What does Linus have to say about recent file system development, and in particular ZFS?  Swapnil Bhartiya talked to Linus in his article,&#8221;<a href="http://www.efytimes.com/efytimes/21160/news.htm">Linus Torvalds: I Have Never Really Talked To Microsoft!</a>&#8221;  On the question of ZFS, Linus responed</p>
<blockquote><p>
Actually, just yesterday we had a git performance issue, where ZFS was orders of magnitude slower than UFS for one user (not under Linux, but git is gaining a lot of traction even outside of kernel development). So I think a lot of the &#8216;new file system&#8217; mania is partly fed by knowing about the issues with old file systems, and then the (somewhat unrealistic) expectation that a &#8216;new and improved&#8217; file system will make everything perfect.</p>
<p>In the end, this is one area where you just let people fight it out. See who comes out the winner &#8212; and it doesn&#8217;t need to be (and likely will not) be a single winner. Almost always, the right choice of file system ends up depending on the load and circumstances.</p>
<p>One thing that I&#8217;m personally more excited about than any of the file systems you mention is actually the fact that Flash-based hard disks are quickly becoming available even for &#8216;normal&#8217; users. Sure, they&#8217;re still expensive (and fairly small), but Flash-based storage has such a different performance profile from rotating media, that I suspect that it will end up having a large impact on file system design. Right now, most file systems tend to be designed with the latencies of rotating media in mind.
</p></blockquote>
<p>A very interesting point concerning technological innovation.  Linus does in a <a href="http://lwn.net/Articles/237905/">post </a>state that ZFS is &#8220;<em>one of their very very few bright spots</em>.&#8221;  By &#8220;their&#8221; he means Sun.  Linus problem with ZFS is that &#8220;<em>ZFS and the other things that people are drooling about in a way that lets Linux use them on an equal footing. I can pretty much guarantee that. They don&#8217;t like competition on that level. They&#8217;d *much* rather take our drivers and _not_ give anything  back, or give back the stuff that doesn&#8217;t matter</em>.&#8221;  Linus goes on to say, &#8220;<em>And yes, maybe ZFS is worthwhile enough that I&#8217;m willing to go to the effort of trying to relicense the kernel. But quite frankly, I can almost guarantee that Sun won&#8217;t release ZFS under the GPLv3 even if they release other parts. Because if they did, they&#8217;d lose the patent protection</em>.&#8221;
</p>
<p>
Jonathan Schwartz, Chief Executive Officer and President Sun Microsystems, Inc., responded in his blog post &#8220;<a href="http://blogs.sun.com/jonathan/entry/one_plus_one_is_fifty">An OpenSolaris/Linux Mashup</a>.&#8221;  Jonathan writes, &#8220;<em>We want to work together, we want to join hands and communities &#8211; we have no intention of holding anything back, or pulling patent nonsense. And to prove the sincerity of the offer, I invite you to my house for dinner. I&#8217;ll cook, you bring the wine. A mashup in the truest sense</em>.&#8221;  We will leave Jonathan and Linus to settle their issues.  If you are interested, you can listen to Linus on the Linux Foundation Podcast.  They have two part interview (<a href="http://linux-foundation.org/weblogs/openvoices/2008/01/07/welcome-to-open-voices/">part 1</a>, <a href="http://linux-foundation.org/weblogs/openvoices/2008/02/03/linus-torvalds-interview-part-ii/">part 2</a>) where Linus comments on a variety of topics including patents, internal and external competition, the broader adoption of Linux, Microsoft and much more. If you want to know more about GPLv3, Eben Moglen, a leading advocate of open source rights, gives the talk &#8220;<a href="http://itc.conversationsnetwork.org/shows/detail1712.html">The Renaissance of Invention: Free Software and the Next American Century</a>&#8221; on the IT Conversations podcast.  In the talk, Eben addresses the controversy about GPLv3 and Linux, and whether software patents are more dangerous than other patents.  To some, licensing issues might not be the most exciting topic, but it is important to be aware of the issues.  Development and adoption of projects, such as ZFS, can be affected.
</p>
<p>
<a href="http://drewthaler.blogspot.com/">Drew Thaler</a> has a few things to say about ZFS compared to HFS+.  Drew worked in Apple&#8217;s CoreOS filesystems group. Before that, he worked on DiscRecording.framework, and singlehandedly created the content subframework that streamed out HFS+, ISO-9660, and Joliet filesystems. Before that, he worked on the same thing for Mac OS 9. And before that, he worked on mass storage drivers for external USB/FireWire drives and internal ATA/ATAPI/SCSI drives.  Currently he works on a file I/O subsystem for PlayStation 3 games.  In short, Drew knows what he is talking about.  He wrote the post, &#8220;<a href="http://drewthaler.blogspot.com/2007/10/don-be-zfs-hater.html">Don&#8217;t be a ZFS Hater</a>&#8221; and a follow up post &#8220;<a href="http://drewthaler.blogspot.com/">ZFS Hater Redux</a>&#8221; which contain some amazing information.  Drew&#8217;s makes a very important point when he writes:</p>
<blockquote><p>Some very smart people at Sun started the ball rolling by putting an awful lot of thought into the future of storage, and they came up with ZFS.</p>
<p>After they announced it and started talking about it, other brilliant people at Apple (and FreeBSD, and NetBSD) paid attention to what they were doing. And they listened, and thought about it, and looked at the code, and wound up coming around to the side of ZFS as well.</p></blockquote>
<p>The original HFS design is twenty years old.  It has had a good run, but so much has changed in the world of computers.  As Linus pointed out, technology changes and file systems need to be redesigned for these changes.  Some brilliant folks have worked on ZFS .  It is not a patched file system trying to handle the latest requirements of computers.  ZFS is a file system designed with the flexibility to handle data requirements for the next ten years.  It will not be the final word in file systems.  The world continues to innovate and change.  The point is, ZFS is here now after seven years of development.  It sets a new standard for future file systems.  I look forward to seeing ZFS implemented in the latest Mac and FreeBSD operating systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2008/02/06/linus-torvalds-speaks-out-on-vista-leopard-and-zfs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

