Wayne Johnson writes:
> Installing Linux (we have a lab with ~20 PCs, might as well
> give them some behind the wheel).

This is a problem.  What distro do you use?  Do any of the distros with an
easy installer offer a free, automatic system for security updates?  With
Debian, you could easily setup security updates to run nightly from cron.
Unfortunately, Debian does not have the easiest installer.

As much as everyone would like to believe that UNIX software is magically
immune to security holes, it simply isn't true.  Almost all popular programs
have had security holes that allow arbitrary code execution.  Setting
newbies up with Linux systems that aren't automatically updated with
security fixes is just as irresponsible setting them up with Windows boxes.

Another issue is the operating system becoming obsolete.  Some companies
such as Red Hat make their operating systems obsolete faster than even
Microsoft.  How does the user upgrade without reinstalling from scratch?
Ideally, the operating systems needs a way to update itself from any version
to any version with no user intervention besides a few questions.

> Access Control (passwd, group, file system security)

There is a lot more to UNIX security than just that.  Understanding file
permissions is almost useless without understanding process credentials.
Why shouldn't things run as root?  Why shouldn't all daemons run as
"nobody"?  If a process is compromised, what other files and processes can
become compromised?

> GUI vs Command line (including a tutorial in Vi)

Haha.  The vi interface is not at all intuitive.  Trying to teach newbies
how to use it is pointless and stupid.  They have no need to use it.  After
the course, if the user is so inclined, he can spend the months it takes to
learn an archaic interface designed for incredibly slow machines that were
accessed using terminals with different keyboard layouts.

vi is not efficient in the default setup with the keyboards on most PCs.  A
Happy Hacking keyboard or a mapping like it would make vi much more
efficient.  But with the default setup, having to take your hand off the
home row to press escape slows you down and increases hand stress.  Here is
an interview with Bill Joy, the original author of vi, along with a picture
of the terminal it was designed for:

http://www.cs.pdx.edu/~kirkenda/joy84.html
http://www.tentacle.franken.de/adm3a/

The above is my opinion.  Perhaps vim has better default key mappings, or
even a modeless interface.  If so, I would love to hear about it.  At any
rate, it is counter productive to attempt to teach vi to newbies.  nano, joe
or ee would be a much better choice.

My pick would be joe, because it almost as easy to use and has basically any
feature an advanced user would want from a text editor, except for syntax
highlighting.  It even has a pico imitation mode, run by running jpico.

>   E-mail Serving

Make sure to pick a secure MTA, such as qmail or Postfix.

>   PHP

If you need to teach a user what a CPU is, you should not be trying to teach
them a programming language in the same course, especially not one that
makes it easy to have huge remote security holes.  This isn't to say it's
difficult to write secure PHP, but looking at all the security holes in
various open source PHP applications demonstrates that amateurs make a lot
of mistakes.

> MySQL, Postgres

Databases are an advanced concept that you probably shouldn't be trying to
teach.  If a user doesn't know what a database is, a Linux intro course
probably isn't the time.  If you want to give a two minute demo on
databases, MySQL would be my pick, since it's a lot easier to use.

> Perl

The thing for PHP also applies here, basically.  Perl is not a good first
language.  If the user wants to learn Perl later, recommend a good book.

If you are really intent on an intro to programming, I recommend Python.  It
is much more elegant, user friendly and makes it easier to teach concepts.
The interactive interpreter can be a wonderful teaching tool.  This book is
excellent, even for non programmers:

http://www.amazon.com/exec/obidos/tg/detail/-/0201748843

> At this rate, It'll be a 4 year course.

Yep.

> Any suggestions?

Don't.  Newbies should not be deploying machines on the Internet, period.
Teaching them how to setup a Linux operating system for a desktop machine
that will be behind a hardware NAT router is probably alright.

Take a hint from Apple on usability.  How many average Mac users know about
UNIX permissions?  The average user doesn't care and shouldn't need to.
Focus on what the user needs to do, not on general UNIX concepts.

Need an email server?  Web hosting?  Outsource it.  If an organization can't
afford $15 a month for that, they certainly can't afford to be deploying
machines on the internet.

Businesses exist to make money, not do something a certain way because you
think it is cool (case in point: vi).  Make sure a solution's total cost of
ownership is cheaper than the alternatives.  Software cost is usually a
small factor.

-- 
David Phillips <david at acz.org>
http://david.acz.org/


_______________________________________________
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
http://www.mn-linux.org tclug-list at mn-linux.org
https://mailman.real-time.com/mailman/listinfo/tclug-list