390 lines
11 KiB
HTML
390 lines
11 KiB
HTML
|
<HTML
|
||
|
><HEAD
|
||
|
><TITLE
|
||
|
>History of Unix, Linux, and Open Source / Free Software</TITLE
|
||
|
><META
|
||
|
NAME="GENERATOR"
|
||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
||
|
REL="HOME"
|
||
|
TITLE="Secure Programming for Linux and Unix HOWTO"
|
||
|
HREF="index.html"><LINK
|
||
|
REL="UP"
|
||
|
TITLE="Background"
|
||
|
HREF="background.html"><LINK
|
||
|
REL="PREVIOUS"
|
||
|
TITLE="Background"
|
||
|
HREF="background.html"><LINK
|
||
|
REL="NEXT"
|
||
|
TITLE="Security Principles"
|
||
|
HREF="security-principles.html"></HEAD
|
||
|
><BODY
|
||
|
CLASS="SECT1"
|
||
|
BGCOLOR="#FFFFFF"
|
||
|
TEXT="#000000"
|
||
|
LINK="#0000FF"
|
||
|
VLINK="#840084"
|
||
|
ALINK="#0000FF"
|
||
|
><DIV
|
||
|
CLASS="NAVHEADER"
|
||
|
><TABLE
|
||
|
SUMMARY="Header navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TH
|
||
|
COLSPAN="3"
|
||
|
ALIGN="center"
|
||
|
>Secure Programming for Linux and Unix HOWTO</TH
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="background.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="80%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="bottom"
|
||
|
>Chapter 2. Background</TD
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="security-principles.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT1"
|
||
|
><H1
|
||
|
CLASS="SECT1"
|
||
|
><A
|
||
|
NAME="HISTORY"
|
||
|
></A
|
||
|
>2.1. History of Unix, Linux, and Open Source / Free Software</H1
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="UNIX-HISTORY"
|
||
|
></A
|
||
|
>2.1.1. Unix</H2
|
||
|
><P
|
||
|
>In 1969-1970, Kenneth Thompson, Dennis Ritchie, and others at
|
||
|
AT&T Bell Labs began developing
|
||
|
a small operating system on a little-used PDP-7.
|
||
|
The operating system was soon christened Unix, a pun on an earlier operating
|
||
|
system project called MULTICS.
|
||
|
In 1972-1973 the system was rewritten in the programming language C,
|
||
|
an unusual step that was visionary: due to this decision, Unix was
|
||
|
the first widely-used operating system that
|
||
|
could switch from and outlive its original hardware.
|
||
|
Other innovations were added to Unix as well, in part due to synergies
|
||
|
between Bell Labs and the academic community.
|
||
|
In 1979, the ``seventh edition'' (V7) version
|
||
|
of Unix was released, the grandfather of all extant Unix systems.</P
|
||
|
><P
|
||
|
>After this point, the history of Unix becomes somewhat convoluted.
|
||
|
The academic community, led by Berkeley, developed a variant called the
|
||
|
Berkeley Software Distribution (BSD), while AT&T continued developing
|
||
|
Unix under the names ``System III'' and later ``System V''.
|
||
|
In the late 1980's through early 1990's
|
||
|
the ``wars'' between these two major strains raged.
|
||
|
After many years each variant adopted many of the key features of the other.
|
||
|
Commercially, System V won the ``standards wars'' (getting most of its
|
||
|
interfaces into the formal standards), and
|
||
|
most hardware vendors switched to AT&T's System V.
|
||
|
However, System V ended up incorporating many BSD innovations, so the
|
||
|
resulting system was more a merger of the two branches.
|
||
|
The BSD branch did not die, but instead became widely used
|
||
|
for research, for PC hardware, and for
|
||
|
single-purpose servers (e.g., many web sites use a BSD derivative).</P
|
||
|
><P
|
||
|
>The result was many different versions of Unix,
|
||
|
all based on the original seventh edition.
|
||
|
Most versions of Unix were proprietary and maintained by their respective
|
||
|
hardware vendor, for example, Sun Solaris is a variant of System V.
|
||
|
Three versions of the BSD branch of Unix ended up as open source:
|
||
|
FreeBSD (concentrating on ease-of-installation for PC-type hardware),
|
||
|
NetBSD (concentrating on many different CPU architectures), and
|
||
|
a variant of NetBSD, OpenBSD (concentrating on security).
|
||
|
More general information about Unix history can be found at
|
||
|
<A
|
||
|
HREF="http://www.datametrics.com/tech/unix/uxhistry/brf-hist.htm"
|
||
|
TARGET="_top"
|
||
|
>http://www.datametrics.com/tech/unix/uxhistry/brf-hist.htm</A
|
||
|
>,
|
||
|
<A
|
||
|
HREF="http://perso.wanadoo.fr/levenez/unix"
|
||
|
TARGET="_top"
|
||
|
>http://perso.wanadoo.fr/levenez/unix</A
|
||
|
>, and
|
||
|
<A
|
||
|
HREF="http://www.crackmonkey.org/unix.html"
|
||
|
TARGET="_top"
|
||
|
>http://www.crackmonkey.org/unix.html</A
|
||
|
>.
|
||
|
Much more information about the BSD history can be found in
|
||
|
[McKusick 1999] and
|
||
|
<A
|
||
|
HREF="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree"
|
||
|
TARGET="_top"
|
||
|
>ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree</A
|
||
|
>.</P
|
||
|
><P
|
||
|
>A slightly old but interesting advocacy piece that presents arguments
|
||
|
for using Unix-like systems (instead of Microsoft's products) is
|
||
|
<A
|
||
|
HREF="http://web.archive.org/web/20010801155417/www.unix-vs-nt.org/kirch"
|
||
|
TARGET="_top"
|
||
|
>John Kirch's paper ``Microsoft Windows NT Server 4.0 versus UNIX''</A
|
||
|
>.</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="FSF-HISTORY"
|
||
|
></A
|
||
|
>2.1.2. Free Software Foundation</H2
|
||
|
><P
|
||
|
>In 1984 Richard Stallman's Free Software Foundation (FSF) began the GNU
|
||
|
project, a project to create a free version of the Unix operating system.
|
||
|
By free, Stallman meant software that could be freely
|
||
|
used, read, modified, and redistributed.
|
||
|
The FSF successfully built a vast number of
|
||
|
useful components, including a C compiler (gcc), an
|
||
|
impressive text editor (emacs), and a host of fundamental tools.
|
||
|
However, in the 1990's the FSF
|
||
|
was having trouble developing the operating system kernel [FSF 1998];
|
||
|
without a kernel their dream of a completely free operating system
|
||
|
would not be realized.</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="LINUX-HISTORY"
|
||
|
></A
|
||
|
>2.1.3. Linux</H2
|
||
|
><P
|
||
|
>In 1991 Linus Torvalds began developing an operating system kernel, which
|
||
|
he named ``Linux'' [Torvalds 1999].
|
||
|
This kernel could be combined with the FSF material and other components
|
||
|
(in particular some of the BSD components and MIT's X-windows software) to
|
||
|
produce a freely-modifiable and very useful operating system.
|
||
|
This book will term the kernel itself the ``Linux kernel'' and
|
||
|
an entire combination as ``Linux''.
|
||
|
Note that many use the term ``GNU/Linux'' instead for this combination.</P
|
||
|
><P
|
||
|
>In the Linux community,
|
||
|
different organizations have combined the available components differently.
|
||
|
Each combination is called a ``distribution'', and the organizations that
|
||
|
develop distributions are called ``distributors''.
|
||
|
Common distributions include Red Hat, Mandrake, SuSE, Caldera, Corel,
|
||
|
and Debian.
|
||
|
There are differences between the various distributions,
|
||
|
but all distributions are based on the same foundation: the
|
||
|
Linux kernel and the GNU glibc libraries.
|
||
|
Since both are covered by ``copyleft'' style licenses, changes to
|
||
|
these foundations generally must be made available to all, a
|
||
|
unifying force between the Linux distributions at their foundation
|
||
|
that does not exist between the BSD and AT&T-derived Unix systems.
|
||
|
This book is not specific to any Linux distribution; when it
|
||
|
discusses Linux it presumes Linux
|
||
|
kernel version 2.2 or greater and the C library glibc 2.1 or greater,
|
||
|
valid assumptions for essentially all current major
|
||
|
Linux distributions.</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="OSS-HISTORY"
|
||
|
></A
|
||
|
>2.1.4. Open Source / Free Software</H2
|
||
|
><P
|
||
|
>Increased interest in software that is freely shared
|
||
|
has made it increasingly necessary to define and explain it.
|
||
|
A widely used term is ``open source software'', which is further defined in
|
||
|
[OSI 1999].
|
||
|
Eric Raymond [1997, 1998] wrote several seminal articles examining
|
||
|
its various development processes.
|
||
|
Another widely-used term is ``free software'', where the ``free''
|
||
|
is short for ``freedom'': the usual explanation is ``free speech, not
|
||
|
free beer.''
|
||
|
Neither phrase is perfect.
|
||
|
The term
|
||
|
``free software'' is often confused with programs whose executables are
|
||
|
given away at no charge, but whose source code cannot be viewed, modified,
|
||
|
or redistributed.
|
||
|
Conversely, the term ``open source'' is sometime (ab)used
|
||
|
to mean software whose
|
||
|
source code is visible, but for which there are limitations on
|
||
|
use, modification, or redistribution.
|
||
|
This book uses the term ``open source'' for its usual meaning, that
|
||
|
is, software which has its source code freely available for
|
||
|
use, viewing, modification, and redistribution; a more detailed
|
||
|
definition is contained in the
|
||
|
<A
|
||
|
HREF="http://www.opensource.org/osd.html"
|
||
|
TARGET="_top"
|
||
|
>Open Source Definition</A
|
||
|
>.
|
||
|
In some cases, a difference in motive is suggested;
|
||
|
those preferring the term ``free software'' wish to strongly
|
||
|
emphasize the need for freedom, while those using the term may have
|
||
|
other motives (e.g., higher reliability) or simply wish to appear less
|
||
|
strident.
|
||
|
For information on this definition of free software, and
|
||
|
the motivations behind it, can be found at
|
||
|
<A
|
||
|
HREF="http://www.fsf.org"
|
||
|
TARGET="_top"
|
||
|
>http://www.fsf.org</A
|
||
|
>.</P
|
||
|
><P
|
||
|
>Those interested in reading advocacy pieces for open source software
|
||
|
and free software should see
|
||
|
<A
|
||
|
HREF="http://www.opensource.org"
|
||
|
TARGET="_top"
|
||
|
>http://www.opensource.org</A
|
||
|
> and
|
||
|
<A
|
||
|
HREF="http://www.fsf.org"
|
||
|
TARGET="_top"
|
||
|
>http://www.fsf.org</A
|
||
|
>.
|
||
|
There are other documents which examine such software, for example,
|
||
|
Miller [1995]
|
||
|
found that the open source software were noticeably
|
||
|
more reliable than proprietary software
|
||
|
(using their measurement technique, which measured
|
||
|
resistance to crashing due to random input).</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT2"
|
||
|
><H2
|
||
|
CLASS="SECT2"
|
||
|
><A
|
||
|
NAME="LINUX-VS-UNIX"
|
||
|
></A
|
||
|
>2.1.5. Comparing Linux and Unix</H2
|
||
|
><P
|
||
|
>This book uses the term ``Unix-like'' to describe
|
||
|
systems intentionally like Unix.
|
||
|
In particular, the term ``Unix-like'' includes
|
||
|
all major Unix variants and Linux distributions.
|
||
|
Note that many people simply use the term ``Unix'' to describe these systems
|
||
|
instead.
|
||
|
Originally, the term ``Unix'' meant a particular product developed
|
||
|
by AT&T.
|
||
|
Today, the Open Group owns the Unix trademark, and it defines Unix as
|
||
|
``the worldwide Single UNIX Specification''.</P
|
||
|
><P
|
||
|
>Linux is not derived from Unix source code, but its interfaces are
|
||
|
intentionally like Unix.
|
||
|
Therefore, Unix lessons learned generally apply to both, including information
|
||
|
on security.
|
||
|
Most of the information in this book applies to any Unix-like system.
|
||
|
Linux-specific information has been intentionally added to
|
||
|
enable those using Linux to take advantage of Linux's capabilities.</P
|
||
|
><P
|
||
|
>Unix-like systems share a number of security mechanisms, though there
|
||
|
are subtle differences and not all systems have all mechanisms available.
|
||
|
All include user and group ids (uids and gids) for each process and
|
||
|
a filesystem with read, write, and execute permissions (for user, group, and
|
||
|
other).
|
||
|
See Thompson [1974] and Bach [1986]
|
||
|
for general information on Unix systems, including their basic
|
||
|
security mechanisms.
|
||
|
<A
|
||
|
HREF="features.html"
|
||
|
>Chapter 3</A
|
||
|
>
|
||
|
summarizes key security features of Unix and Linux.</P
|
||
|
></DIV
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="NAVFOOTER"
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"><TABLE
|
||
|
SUMMARY="Footer navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="background.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
ACCESSKEY="H"
|
||
|
>Home</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="security-principles.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
>Background</TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="background.html"
|
||
|
ACCESSKEY="U"
|
||
|
>Up</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
>Security Principles</TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
></DIV
|
||
|
></BODY
|
||
|
></HTML
|
||
|
>
|