10025 lines
318 KiB
Plaintext
10025 lines
318 KiB
Plaintext
|
||
Linux Gazette... making Linux just a little more fun!
|
||
|
||
Copyright © 1996-97 Specialized Systems Consultants, Inc. linux@ssc.com
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Welcome to Linux Gazette! (tm)
|
||
|
||
|
||
|
||
Linux Gazette, a member of the Linux Documentation Project, is an on-line WWW publication
|
||
that is dedicated to two simple ideas:
|
||
* Making Linux just a little more fun
|
||
* Sharing ideas and discoveries
|
||
|
||
|
||
|
||
The basic idea behind these two concepts is that Linux is one cool OS, whose price for
|
||
admission is a willingness to read, learn, tinker (aka, hack!), and then share your
|
||
experiences. The Gazette is a compilation of basic tips, tricks, suggestions, ideas and
|
||
short articles about Linux designed to make using Linux fun and easy. LG began as a
|
||
personal project of John M. Fisk, and grew to include contributions freely provided by a
|
||
growing number of authors. Linux Journal is now publishing the Gazette using material
|
||
contributed by outside authors (note to potential authors). Without these authors there
|
||
would not be a Gazette, and I thank them all. Drop a note to the author of anything that
|
||
you find helpful or instructive--the author's e-mail address is included for this very
|
||
purpose.
|
||
|
||
Linux Gazette is a non-commercial publication and will remain that way. A tar, gzip file
|
||
containing all issues of Linux Gazette and one containing the current issue can be found at
|
||
ftp://ftp.ssc.com/pub/lg/
|
||
|
||
Thanks to Matt Welsh, coordinator of the Linux Documentation Project, for graciously
|
||
bringing the Linux Gazette under the auspices of the LDP. The material included in these
|
||
documents is covered by a designedly liberal copyright. For information regarding copying
|
||
and distribution of this material read the Copying License.
|
||
|
||
A new table of contents will appear with each issue that will allow you to easily find
|
||
articles of interest. A search engine is also provided to allow you to search all issues
|
||
for items relating to a particular subject.
|
||
|
||
Have fun!
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
* Table of Contents Issue #14
|
||
* Table of Contents Issue #13
|
||
* Table of Contents Issue #12
|
||
* Table of Contents Issue #11
|
||
* Table of Contents Issue #10
|
||
* Table of Contents Issue #9
|
||
* Table of Contents Issues #1-#8
|
||
* Index of All Issues
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
Search In: [Linux Gazette (TM).......]
|
||
Search For: ______________________________ ______
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Linux Gazette WWW & FTP Mirror Sites
|
||
|
||
|
||
|
||
For those readers who are accessing Linux Gazette from outside the U.S. or are having
|
||
problems with slow connections at a particular site, mirror sites are available worldwide.
|
||
Thanks to all of the people who have kindly offered the use of their WWW and FTP sites in
|
||
order to make this possible!
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ Hot Linux News! ] [ Linux Resources ]
|
||
|
||
|
||
|
||
Two SSC links that you might find useful. The first is to Linux Journal 's "Hot Linux
|
||
News" page, and the second is to SSC's Linux Resources page.
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX GAZETTE IS PUBLISHED BY:
|
||
|
||
SSC - Publishers of Linux Journal (tm)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Got any great ideas for improvements! Send your comments, criticisms, suggestions and
|
||
ideas.
|
||
|
||
Linux Gazette, http://www.ssc.com/lg/
|
||
This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
|
||
|
||
[IMAGE]
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
The Mailbag!
|
||
|
||
Write the Gazette at gazette@ssc.com
|
||
|
||
CONTENTS:
|
||
* Help Wanted -- Article Ideas
|
||
* General Mail
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
HELP WANTED -- ARTICLE IDEAS
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Mon, 20 Jan 97 13:22:54 EST
|
||
Subject: Linux on Compaq
|
||
From: afarnsworth@S1.DRC.COM
|
||
|
||
Hi,
|
||
I just received a brand spanking new Compaq Deskpro 6000 with Adaptec 2940U SCSI card and
|
||
Compaq Netflex III ethernet card. I think I have the SCSI card problem whipped, but how do
|
||
I find drivers for the Netflex III card? I have check the usual places, does it even exist?
|
||
|
||
|
||
The Compaq Deskpro 6000 is a fairly new system out, though Compaq has been building
|
||
Deskpro's for many years. The only problem I have had with them is their proprietary
|
||
hardware. This is usually either their Network cards or their Hard drive controllers
|
||
(usually RAID controllers). Other than that, it's pretty standard.
|
||
|
||
Please reply to my email address : afarnsworth@s1.drc.com for I don't have the ability to
|
||
check the gazette often. Thanks.
|
||
|
||
Andy Farnsworth, Dynamics Research Corporation
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Sat, 18 Jan 1997 12:38:45 +0200 (EET)
|
||
Subject: Office-tools From: J.Hernetkoski, jjjj@zenith.yok.utu.fi
|
||
|
||
Hi! Could you write an article about these two office-package for Linux:
|
||
* Applixware
|
||
* StarOffice
|
||
|
||
Thanks
|
||
Jukka Hernetkoski
|
||
|
||
(An article about StarOffice by Dwight Johnson appeared in issue 9 of Linux Gazette. An
|
||
article about Applixware will be in the April issue of Linux Journal. I can probably get
|
||
permission to run it in LG also, but not until that issue of LJ is on the stands. Which
|
||
means it would also be the April issue of LG. Anyone want to do one sooner?--Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Tue, 21 Jan 1997 09:43:58 -0500
|
||
Subject: Linux samba win95
|
||
From: nravin@cs.fit.edu
|
||
|
||
-I am a system administrator....manages 20 PC's....all running windows95
|
||
|
||
-We were running Windows NT server(4.0) in the lab for some time Then we realised we had
|
||
only 10 client access licenses and so were forced tp SWITCH to Linux.
|
||
|
||
-Linux emulates NT, as you may know
|
||
|
||
-I had the CONFIG.POL working perfectly with the NT network. -But when I switched to Linux
|
||
I lost that control. No longer are the clients able to access the CONFIG.POL file even
|
||
though I have kept it in the NETLOGON share.
|
||
|
||
-Now whosoever uses the PC's(most are novices) play around with the settings( of client)
|
||
and is giving me nightmares, since I cannot lock them out.
|
||
|
||
-Is there a way out? How can I make the clients read the system policies from the
|
||
CONFIG.POL using Linux server?
|
||
|
||
Please help.
|
||
|
||
Thanks
|
||
Neal
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Tue, 21 Jan 1997 15:03:07 +0000
|
||
Subject: dbms connectivity
|
||
From: Mike Lewis, mlewis@burly.com
|
||
|
||
Hi. I love linux but most of the projects I work on preclude it because of a lack of dbms
|
||
connectivity. None of the major dbms players (Oracle, Sybase, Informix, etc.) or 3rd party
|
||
developers (Intersolv, Visigenic, etc.) offer access from a linux client. I've tried a
|
||
middleware solution from Openlink and I guess you could run SCO drivers with emulation,
|
||
assuming you can get your hands on the low-level libraries.
|
||
|
||
This seems to be the only thing standing in the way of Linux getting business worthy
|
||
respect. Could you put together a piece on this issue and explore the future availability
|
||
of dbms connectivity from linux?
|
||
|
||
Thanks.
|
||
Mike
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Wed, 22 Jan 1997 18:21:57 -0800
|
||
Subject: X Windows & Unix
|
||
From: Nestor Villalobos, n.villalobos@codetel.net.do
|
||
|
||
Hi there! I just got Linux from RedHat and I have been wondering how to do Animations in
|
||
XWindows. I would like a little picture box on the lower right hand corner of the screen on
|
||
startup to start an animation. Is this possible? If it is, please email me back with
|
||
instructions!!! Thanks for the help.
|
||
|
||
One Unix man to the other,
|
||
Nestor Villalobos
|
||
|
||
[IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
GENERAL MAIL
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Fri, 24 Jan 1997 15:24:16 -0700
|
||
Subject: Update web link in my article
|
||
From: Henry Lu, honglu@rt66.com
|
||
|
||
I have changed my web page (email is unchanged). Can you update my web page in the #10
|
||
issue, article "setting up a Dynamic web server"?
|
||
|
||
http://www.tc.umn.edu/nlhome/g625/luxx0024/
|
||
|
||
I got couple of email inquiry about the bad link.
|
||
|
||
Henry
|
||
|
||
(Be happy to fix it up. We like to stay up to date. --Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Tue, 21 Jan 1997 13:20:49 -0700
|
||
Subject: C++ Programming w/ Linux
|
||
From: James Cannon, cannonj@jads.kirtland.af.mil
|
||
|
||
Hi,
|
||
About a month ago I asked about help with C++ programming on Linux. I am currently using
|
||
the Walnut Creek Slackware, kernel 1.3.20. I had a hard time getting a simple "Hello World"
|
||
program to compile. "cc" couldn't find the ".h" files like "stdio.h", which are normally in
|
||
/usr/include. I had to create a "$INCLUDE" variable in my ".profile". So, when compiling, I
|
||
used "g++ -I $INCLUDE -o hello hello.c" to compile.
|
||
|
||
Well, I received help via e-mail pointing me to this page:
|
||
phttp://www.cuug.ab.ca:8001/~barkers/slackware-fixes/3.0-fixes.html
|
||
Look for the section titled: Problem Using G++.
|
||
|
||
Great mag!
|
||
|
||
James Cannon, http://www.jads.abq.com/
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Thu, 23 Jan 1997 20:36:39 -0800
|
||
Subject: Color Depths in X
|
||
From: Chris Spiegel, matrix@wolfenet.com
|
||
|
||
(RE: Color depths in X)
|
||
|
||
Well, I know this isn't really a fix, and it's not that great, but I have 2 scripts. startx
|
||
which starts me in 16 bit color and start8, which starts in 8 bit. As I said, not a
|
||
solution, but a pretty painless alternative...
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Fri, 3 Jan 1997 17:14:19 -0500 (EST)
|
||
Subject: Further note about the spiral notebook page design.
|
||
From: Ben Boule, bouleb@rpi.edu
|
||
|
||
Someone else noted that his web browser didn't correctly show the spiral notebook
|
||
background. I use Netscape, so that isn't a problem for me, but I do have another problem
|
||
with the background. It's very hard to look at on an interlaced display. I can always
|
||
switch to a non-interlaced mode in XFree86, but I'd bet some people can't. I know that the
|
||
interlaced mode that I use looks fine on 99.99% of web pages, so it usually isn't a problem
|
||
for me.
|
||
|
||
Thanks,
|
||
Ben Boule
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Mon, 06 Jan 1997 13:42:25 -0600
|
||
Subject: RE: Linux networking problem with VINES
|
||
From: Jack N. Gallemore, jgallemore@okokc.ang.af.mil
|
||
To: Stephen, Tauche%fbm%mfh@mfhdvzis.mfh-iserlohn.de
|
||
|
||
|
||
Unfortunately, Banyan is a pretty tight (read: won't work with much) OS, so you are pretty
|
||
limited. There is a way for Linux to sign onto Banyan, but you have to use DOSEMU.60.1. The
|
||
later versions will not work. (Disclaimer: I have not used the patch for dosemu.60.4). If
|
||
you have not used DOSEMU, the setup is fairly straightforward.
|
||
|
||
As for using Linux as a resource, you will have to use IP stuff (ftp, telnet, etc) to do
|
||
so. There are no ports for LinuxBanyan stuff.
|
||
|
||
BTW, Jon is still doing Linux and Banyan. His site (http://www.netmind.com) is running
|
||
Linux! Check it out!
|
||
|
||
Jack N. Gallemore jgallemore@okokc.ang.af.mil
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Mon, 20 Jan 97 16:12:00 PST
|
||
Subject: Vines IP and TCP/IP
|
||
From: Denis Dimick, ddimick@irvine.ddddf.com
|
||
|
||
Back on Dec 5, 1996 Stefan wrote wanting help with Vines.
|
||
**************************************************************
|
||
|
||
Stefan the problem you're having sounds like the Vines Servers are not passing TCP/IP.. By
|
||
default Banyan Vines doesn't pass route TCP/IP thru the servers. You have to have the
|
||
TCP/IP option installed on all the servers your going to route thru. This option cost $$$
|
||
about $1200.00 US if I remember correctly. So there's p[robally a good chance your school
|
||
didn't buy this option...
|
||
|
||
Vines doesn't have anything that will cause IP to tunnel via Vines IP.. So your only chance
|
||
might be to get access to the same segment that the internet is running off of... But it
|
||
sounds like your sysadmin is using the Banyan Server as the gateway to the internet, if
|
||
this is the case your out of luck...
|
||
|
||
Since I've worked with Banyan Vines for the last 7 years, I'm sorry to say you might not be
|
||
able to set up the Linux Box on the internet routing thru your Banyan Servers...
|
||
|
||
Denis, dgdimick@sure.net
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Sat, 11 Jan 1997 11:49:18 -0700
|
||
Subject: Linux Applications and Utilities Page
|
||
From: David Puryear, dayear@market1.com
|
||
|
||
Hi,
|
||
I came across Linux Applications and Utilities Page while I was learning about linux. It
|
||
helped me get the feel for what is able in linux.
|
||
|
||
http://www.xnet.com/%7Eblatura/linapps.shtml
|
||
|
||
The guy that maintains it is Bill Latura. I hope people will get good use out of it and
|
||
maybe help it become even more complete:)
|
||
|
||
David
|
||
|
||
(We found it too; see News Bytes. --Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Tue, 14 Jan 1997 06:06:09 -0800
|
||
Subject: isssue 8 & ftp server
|
||
From: Rick Lim, rick_lim@bc.sympatico.ca
|
||
|
||
|
||
Hi there,
|
||
thanks for hosting the gazette. Is there a way of just downloading the text of each issue?
|
||
I have downloaded LinuxGazette_jan97.tar.gz and it seems that issue8.txt is missing. also I
|
||
have tried to ftp LinuxGazette_dec96.tar.gz but after 1770k of 2751k the server seemingly
|
||
goes into ignore mode, this has happened about 5 times.
|
||
|
||
Thanks again
|
||
rick
|
||
|
||
(Don't know why you are having trouble ftp'ing LinuxGazette_dec96.tar.gz, but can tell
|
||
you that you have LinuxGazette_jan97.tar.gz you have everything that is in dec96. We
|
||
took over LG for issue 9, so there is no file issue8.txt or 1 to 7 either. We use Lynx
|
||
to save the HTML as text. Perhaps we'll do it for 1-8 one day when we have time.
|
||
--Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Date: Sun, 26 Jan 1997 17:00:35 -0600
|
||
Subject: suggestion
|
||
From: dave Stephens, ts@fuzzy4u.com
|
||
|
||
can you put some thing in each week for the new linux ueser the newbe things
|
||
|
||
thank you
|
||
Dave
|
||
|
||
(LG is posted once a month not weekly. All the material in LG is contributed to me by
|
||
outside authors. I take whatever I get. A lot of it is geared toward the newbee, and
|
||
this month we have a new column called "Clueless At the Prompt" by Mike List that is
|
||
designed for the newbee. Sounds like just what you are looking for. --Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Next
|
||
|
||
This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
|
||
Copyright © 1997 Specialized Systems Consultants, Inc.
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
MORE 2<> TIPS!
|
||
|
||
|
||
Send Linux Tips and Tricks to gazette@ssc.com
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
CONTENTS:
|
||
* Backquote Warning
|
||
* Browser Background Tip
|
||
* Even Better Lowercasing of Filenames
|
||
* Filtering Advertisements from WWW Tip
|
||
* Getting Less to View gzipped Files
|
||
* Help for Help on the Bash Shell
|
||
* Lower Your Caps
|
||
* Making Linux Boot Floppies
|
||
* More on Xterm Titlebar
|
||
* Remind Tip
|
||
* Script to Call Your Editor
|
||
* Tip for Your Web Page
|
||
* Titlebar Tip
|
||
* 2 Bit Tip -- Heartbeat
|
||
* 2 Cent Tip for xdm
|
||
* Two 2 Cent Tips -- syslog & X Color Depth
|
||
* X Windows Depth
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
BACKQUOTES WARNING
|
||
|
||
|
||
|
||
Date: Tue, 14 Jan 1997 00:40:21 -0800 From: alan bailward
|
||
|
||
In the $0.02 tip for using the script 'swaplogs' the commands : cp /var/adm/messages
|
||
/var/adm/messages.'date +%d' uses the wrong quotes. The backquote not the forward quote has
|
||
to be used here, to make the *output* of the command part of the filename.
|
||
|
||
alan
|
||
|
||
(Actually, the backquote is in the html. It's just that some Browser fonts wont print a
|
||
backquote -- in fact, mine doesn't. I'm not sure how to get around this other than to
|
||
warn people who are reading online. If you print LG out, the quotes will be in the right
|
||
direction. --Editor)
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
WWW BACKGROUND TIP
|
||
|
||
|
||
|
||
Date: Wed, 8 Jan 1997 12:23:03 -0500 (EST)
|
||
From: Kurt M. Hockenbury, kmh@linux.stevens-tech.edu
|
||
|
||
|
||
I noticed people complaining about backgrounds making text unreadable. Personally, I got
|
||
tired of unreadable backgrounds, as well as large image downloads, so I turned them off. I
|
||
also turned off those annoying blink tags.
|
||
|
||
How? Add these two lines to your ~/.Xdefaults file.
|
||
|
||
Netscape*documentColorsHavePriority: False
|
||
Netscape*blinkingEnabled: False
|
||
|
||
In LG #13, Eje Gustafsson, gne@ffa.se writes:
|
||
|
||
>> 1.mv /var/adm/messages /var/adm/messages.prev
|
||
>> 2.touch /var/adm/messages
|
||
>> 3.kill -1 pid-of-syslogd
|
||
>>
|
||
>> This should work on a decent Unix(like) system, and I know Linux
|
||
>>is one of them.
|
||
>
|
||
>This is NOT an proper way of truncate /var/adm/messages.
|
||
>
|
||
>It is better to do:
|
||
>
|
||
> 1.cp /var/adm/messages /var/adm/messages.prev
|
||
> 2.>/var/adm/messages or cp /dev/null /var/adm/messages (both of them makes
|
||
>the file empty).
|
||
> 3.No more.
|
||
|
||
I'm sorry, but (at least on Linux) this is flat out _wrong_. The first method (mv & HUP) is
|
||
the correct method of truncating syslog files (such as /var/adm/messages).
|
||
|
||
Your method looses any messages that get syslog'd between steps 1 and 2; anything that
|
||
comes in after the first cp gets overwritten when the second cp happens.
|
||
|
||
>The problem is that when you remove the /var/adm/messages syslogd gets
|
||
>confused and unhappy and you have to give syslogd a HUPSIG but if you
|
||
>just sets the file length to zero without removing the file syslogd
|
||
>don't complain. And if you are really unlucky your system will go down
|
||
>because you didn't create /var/adm/messages quick enough or forgot it.
|
||
|
||
Not so. mv'ing /var/adm/messages doesn't bother syslogd at all, as long as you stay on the
|
||
same partition. In fact, you can 'mv /var/adm/messages /var/adm/fish', and until syslogd is
|
||
HUP'd or otherwise restarted, it will keep logging in the file fish. Try it if you don't
|
||
believe me - it's true! That is because once syslogd has open()d the file, it will keep
|
||
writing to that file until it close()s it - and a file in the Unix world is an inode, not a
|
||
filename. (As an aside, this is how you can have the 100% full empty partition. Even though
|
||
you unlink or rm a file, the file doesn't actually go away until all programs that have it
|
||
open close it.)
|
||
|
||
syslogd doesn't get confused at all. You can even rm /var/adm/messages, and syslogd won't
|
||
crash your system, though eventually the partition may fill up with syslog messages you
|
||
can't easily read since there isn't a filename associated with the log file anymore.
|
||
|
||
Kurt Hockenbury, Distributed Systems Administrator
|
||
Stevens Institute of Technology
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
EVEN BETTER LOWERCASING OF FILENAMES
|
||
|
||
|
||
|
||
Date: Sun, 5 Jan 1997 19:17:16 -0800 (PST) From: Greg Badros, gjb@cs.washington.edu
|
||
|
||
It's even easier with zsh (3.0.x) to convert filenames to all-lowercase:
|
||
|
||
for i in *(.); mv $i ${i:l}
|
||
|
||
The *(.) uses a modifier on the wildcard to mean "only regular files" (i.e., not
|
||
directories). And the ${i:l} converts the variable to lowercase, so we don't have to use
|
||
tr.
|
||
|
||
This is not only shorter to type, but doesn't exec multiple programs (test + mv + tr) for
|
||
each file, and looks at fewer files since the shell implicitly does the first test.
|
||
|
||
Greg
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
FILTERING ADVERTISEMENTS FROM WEB PAGES USING WEBFILTER
|
||
|
||
Date: Thu, 16 Jan 97 20:28:50 PST
|
||
From: Axel Boldt, boldt@cardinal.math.ucsb.edu
|
||
|
||
Hi, In last month's Gazette, David Rudder wrote an article about how to filter
|
||
advertisements from web pages using IPFWADM, the idea being that many ads come from the
|
||
same site and it is easy to configure a Linux firewall to refuse all connections from such
|
||
a site.
|
||
|
||
This approach has two disadvantages: you have to be root in order to use the IPFWADM tool,
|
||
and it allows you only to block entire sites. Very often, you want to filter out only a
|
||
specific ad residing on a site, without blocking the rest of that site's material.
|
||
Moreover, different users of the Linux box might have different tastes when it comes to
|
||
ads.
|
||
|
||
I believe that my tool WebFilter a.k.a. NoShit addresses these issues and is better suited
|
||
for filtering ads from specific web sites. The idea is the following: the user runs
|
||
WebFilter as a personal filtering proxy server, and the browser contacts this proxy
|
||
whenever it wants to fetch a web document. The proxy then actually goes out and downloads
|
||
the page, checks whether any filterscripts apply to this page, and if yes, pipes it through
|
||
those scripts and returns the output to the browser. The mapping between URL and
|
||
filterscript has to be provided by the user in advance. A filterscript can be an arbitrary
|
||
program that reads the original document from standard input and produces the filtered
|
||
version on standard output. In practice, filterscripts are most often short sed, awk, or
|
||
perl scripts.
|
||
|
||
If you often use sites such as Yahoo or Infoseek, you can easily write filterscripts that
|
||
excise the ads from their pages. This saves time, money, and bandwidth.
|
||
|
||
More information about WebFilter can be gotten from its homepage. There you'll also find
|
||
links to other programs implementing the same idea.
|
||
|
||
Have fun,
|
||
Axel
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
GETTING LESS TO VIEW GZIPPED FILES
|
||
|
||
Date: 09 Jan 1997 20:18:58 -0600
|
||
From: Alan Shutko, ats@wydo125.wustl.edu
|
||
|
||
A little known ability of less is the ability to define filters when it opens and closes
|
||
files. This excerpt from the man page deserves broader attention, since it can easily be
|
||
extended to other types.
|
||
|
||
For example, on many Unix systems, these two scripts will allow you to keep files in
|
||
compressed format, but still let less view them directly:
|
||
|
||
lessopen.sh:
|
||
#! /bin/sh
|
||
case "$1" in
|
||
*.Z) uncompress -c $1 >/tmp/less.$$ 2>/dev/null
|
||
if [ -s /tmp/less.$$ ]; then
|
||
echo /tmp/less.$$
|
||
else
|
||
rm -f /tmp/less.$$
|
||
fi
|
||
;;
|
||
|
||
Version 321: 18 Jul 96 16
|
||
|
||
esac
|
||
|
||
lessclose.sh:
|
||
#! /bin/sh
|
||
rm $2
|
||
|
||
To use these scripts, put them both where they can be exe- cuted and set
|
||
LESSOPEN="lessopen.sh %s", and LESSCLOSE="lessclose.sh %s %s". More complex LESSOPEN and
|
||
LESSCLOSE scripts may be written to accept other types of compressed files, and so on.
|
||
|
||
Alan Shutko
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
HELP FOR HELP ON THE BASH SHELL
|
||
|
||
Date: Tue, 14 Jan 1997 15:36:50 +0100 (NFT)
|
||
From: mailto:fk5a005@math.uni-hamburg.de
|
||
|
||
you did hear about help for the bash. if you invoke help for then you will get some help
|
||
about for.
|
||
|
||
Okay, you know that one. But did you know you can see all the helps at once? I did not know
|
||
it. Then I tried help "$*" and what happend was: every help was shown! Of course too much
|
||
for one screen. so I piped it to less: help "$*" |less is quite good. But then I thought
|
||
about having a search command with less. possible? yes, just do a less -p word file to see
|
||
it.
|
||
|
||
So I put everything together and like I do often I created an alias:
|
||
|
||
alias helpall="help '$*' | less -p "
|
||
|
||
and tried it: beautiful, I might not need man bash all the times. Try it yourself.
|
||
|
||
Perhaps try helpall " let " to see a result.
|
||
|
||
Have a nice and bright Linux-year!
|
||
|
||
Matthias
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
LOWER YOUR CAPS
|
||
|
||
Date: Sat, 25 Jan 1997 20:44:42 -0800 (PST)
|
||
From: Peat Bakke, pb@europa.com
|
||
|
||
One of those little things that gets to me is unzipping DOS pkzipped files. All of the
|
||
filenames are in all caps. I'm not sure why it bugs me, but it does. Anyhow, here's a quick
|
||
script that I've found useful to convert all the caps in a directory into lower case
|
||
(rather nice when you've got one of those big, 200 file zips):
|
||
|
||
#!/bin/tcsh
|
||
foreach i (*)
|
||
mv $1 `echo $1 | tr '[A-Z]' '[a-z]'`
|
||
|
||
A word to the wise -- this lowers ALL caps, so be careful with those Makefiles and such.
|
||
|
||
-Peat
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
MAKING LINUX BOOT FLOPPIES
|
||
|
||
Date: Sun, 5 Jan 1997 18:40:49 -0800 (PST)
|
||
From: Andy Kahn, kahn@vivian.cs.ucla.edu
|
||
|
||
|
||
After reading Bill Duncan's excellent article in issue #13 on using and managing floppies
|
||
in Linux, I figured I'd toss in a 2-cent tip.
|
||
|
||
Here is a script I use to make emergency boot floppies on my system (kernel v2.0.27). The
|
||
need arose when I installed RedHat 4.0 for the first time and noticed that the installation
|
||
procedure doesn't automatically prompt you to create boot floppies (Slackware does, and
|
||
chances are that RedHat will also in the next version).
|
||
|
||
|
||
#!/bin/csh -f
|
||
#
|
||
# makebootfloppy v0.2
|
||
#
|
||
# DESCRIPTION:
|
||
# User friendly script (with lots of verbose messages) used to make
|
||
# Linux boot floppies, using the 2.x kernels.
|
||
#
|
||
# Formats, creates the file system, mounts the floppy, installs the Linux
|
||
# kernel, installs LILO, umounts floppy, and cleans up.
|
||
#
|
||
stty intr
|
||
set PATH=(/usr/sbin /sbin /bin /usr/bin)
|
||
|
||
# the generic floppy device (usually auto-detected)
|
||
set GENFLOPPY=/dev/fd0
|
||
|
||
# the low-level floppy device, used with fdformat. this might be obsoleted
|
||
# on your system
|
||
set LLFLOPPY=/dev/fd0H1440
|
||
|
||
# a temporary mount point for your floppy. make sure it has enough space
|
||
# to copy the kernel into
|
||
set MOUNTPOINT=/tmp/floppy
|
||
|
||
# boot
|
||
set BOOT=/boot/boot.b
|
||
set KERNEL=/boot/vmlinuz
|
||
|
||
# LILO label
|
||
set LABEL=linux
|
||
|
||
|
||
# here we go!
|
||
#############
|
||
echo -n Insert a blank floppy into the drive and hit return...
|
||
set FOO=$& /dev/null
|
||
mount $GENFLOPPY $MOUNTPOINT
|
||
|
||
# Copy the kernel to the floppy
|
||
cp $BOOT $MOUNTPOINT
|
||
cp $KERNEL $MOUNTPOINT
|
||
|
||
# Install lilo
|
||
echo image=$MOUNTPOINT/`basename $KERNEL` label=$LABEL | \
|
||
lilo -C - -b $GENFLOPPY -i $MOUNTPOINT/boot.b -c -m $MOUNTPOINT/map
|
||
|
||
sync
|
||
|
||
# Unmount floppy
|
||
umount $MOUNTPOINT
|
||
|
||
# Deleting temporary mount point
|
||
rm -rf $MOUNTPOINT
|
||
|
||
echo All done.
|
||
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
There's currently no error handling, so if one command fails, the remaining commands will
|
||
fail as well. Other than that, feel free to modify and use it as you like. If you have
|
||
suggestions on better ways to do something, I'd love to hear them.
|
||
--Andy, kahn@cs.ucla.edu
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
MORE ON XTERM TITLEBAR TIP
|
||
|
||
Date: Wed, 15 Jan 1997 23:33:34 -0700 (MST)
|
||
From: Michael J. Hammel, mjhammel@csn.net
|
||
|
||
I got a lot of email about my tip, most confused by the use of escape/control characters
|
||
in the script. Here is my response.
|
||
|
||
> > Date: Sat, 21 Dec 1996 15:18:01 -0600
|
||
> > From: Roger Booth
|
||
> > To: Linux Journal Editor
|
||
> >
|
||
> > The Jan97 Issue 33 of Linux Journal contained the "Linux Gazette Two Cent Tips".
|
||
> > I was interested in the tip "X Term Titlebar Function". Although
|
||
> > the text of the tip stated that the tip would work in ksh-based
|
||
> > systems, I could not get it to work as shown. I think there are
|
||
> > three problems. First, I think there are a few transcription
|
||
> > errors in the script. Second, I believe the author is using
|
||
|
||
|
||
I don't think there were transcription problems. I'm pretty sure it was the way I sent it,
|
||
however....
|
||
|
||
> > embedded control characters and it was not obvious to me which
|
||
> > character sequences are representations of control characters
|
||
> > and which characters should be typed verbatim. Third, the
|
||
|
||
|
||
Yes, there were control and escape characters in the file. This was a problem and many
|
||
people wrote me to ask about it. In the following lines:
|
||
|
||
ilabel () { echo -n "^[]1;$*^G"; }
|
||
label () { echo -n "^[]2;$*^G"; }
|
||
|
||
|
||
the characters "^[" are an escape character and the characters "^G" are a CONTROL-G
|
||
character. In order to add these to your file (when you type it in by hand) using vi you
|
||
would type:
|
||
|
||
^VESC - which means CTRL-SHIFT-V followed by the ESCAPE key
|
||
|
||
and
|
||
|
||
^V^G - which means CTRL-SHIFT-V followed by CTRL-SHIFT-G
|
||
|
||
Note that in *this* email I didn't actually include the control or escape characters - I
|
||
simply used their ASCII equivalents. Hopefully this isn't too confusing.
|
||
|
||
> > author uses a command-line option to the echo command which
|
||
> > is not available on all Unix platforms.
|
||
|
||
|
||
This is also a problem. See below.
|
||
|
||
> > I finally used the following script:
|
||
> >
|
||
> > if [ ${SHELL##/*/} = "ksh" ] ; then
|
||
> > if [[ $TERM = x"term" ]] ; then
|
||
> > HOSTNAME=`uname -n`
|
||
> > label () { echo "\\033]2;$*\\007\\c"; }
|
||
> > alias stripe='label $LOGNAME on $HOSTNAME - ${PWD#$HOME/}'
|
||
> > cds () { "cd" $*; eval stripe; }
|
||
> > alias cd=cds
|
||
> > eval stripe
|
||
> > fi
|
||
> > fi
|
||
> > I don't use vi, so I left out that functionality.
|
||
|
||
|
||
I tried this and various similar responses that were mailed directly to me. It should work
|
||
using the octal versions of the escape sequences, but I couldn't get it to work. My
|
||
problem is that I use the label() function from the command line at times to simply set
|
||
the title bar to some arbitrary value and using the octal sequences didn't seem to work
|
||
for me. I'm not sure why, however. I do believe that, sometime in the distant past, I too
|
||
used octal sequences to set the xterm title bar. I've long forgotten why I switched.
|
||
|
||
> > The functional changes I made are all in the arguments to the
|
||
> > echo command. The changes are to use \\033 rather than what
|
||
> > was shown in the original tip as ^[, to use \\007 rather than
|
||
> > ^G, and to terminate the string with \\c rather than use the
|
||
> > option -n.
|
||
|
||
|
||
All of these should work just fine in ksh. Your observation that not all shells accept
|
||
"echo -n" is correct. I often have to check which works and then manually set the echo
|
||
line to either use "-n" or to print a \c. One or the other will always work, depending on
|
||
if the echo is a shell builtin or an actual Unix command.
|
||
|
||
> > On AIX 4.1, the command "echo -n hi" echoes "-n hi"; in other
|
||
> > words, -n is not a portable command-line option to the echo
|
||
> > command. I tested the above script on AIX 3.2, AIX 4.1,
|
||
> > HPUX 9.0, HPUX 10.0, Solaris 2.4 and Solaris 2.5. I'm still
|
||
> > trying to get Linux and my Wintel box mutually configured,
|
||
> > so I haven't tested it on Linux.
|
||
|
||
|
||
I don't use X on the AIX or HPUX boxes at work. I just rlogin from my Sun boxes. However,
|
||
both Solaris and Linux should work with the -n option if you're using the echo shell
|
||
builtin. If not, the \c will probably be required. On my Linux box I type
|
||
|
||
bash% type echo
|
||
|
||
|
||
which reports
|
||
|
||
echo is a shell builtin
|
||
|
||
|
||
so I know which one I'm using. Knowing this you can provide alternatives within your
|
||
.bashrc or .kshrc to determine which version of the echo line to use. This is true of any
|
||
Unix platform on which you use ksh or bash (I believe).
|
||
|
||
> > I have noticed a problem with this script. I use the rlogin
|
||
> > command to log in to a remote box. When I exit from the
|
||
> > remote box, the caption is not updated, and still shows the
|
||
> > hostname and path that was valid just before I exited. I tried
|
||
> > adding
|
||
> >
|
||
> > exits () { "exit" $*; eval stripe; }
|
||
> > alias exit=exits
|
||
> >
|
||
> > and
|
||
> >
|
||
> > rlogins () { "rlogin" $*; eval stripe; }
|
||
> > alias rlogin=rlogins
|
||
> >
|
||
> > Neither addition updated the caption to the host/path
|
||
> > returned to. Any suggestions?
|
||
|
||
|
||
Add this right after the alias for cd in the original script:
|
||
|
||
rlogins () { "rlogin" $*; cds . }
|
||
alias rlogin=rlogins
|
||
|
||
|
||
Its a hack, but it works. You have to use "cds" instead of the alias "cd" or else the real
|
||
cd gets used and the title bar won't change. In case anyone is wondering, the reason you
|
||
enclose "rlogin" (or "cd" or "vi") in double quotes in this script is so the function
|
||
rlogins() will run the real rlogin and not get stuck recursively calling itself. Neat, eh?
|
||
|
||
|
||
Boy, this stuff could get confusing fast. Maybe it wasn't such a good tip after all.
|
||
|
||
Michael J. Hammel
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
REMIND TIP
|
||
|
||
|
||
|
||
Date: Mon, 20 Jan 97 15:42:04 PST
|
||
From: jmy@gim.net
|
||
|
||
This is a nice little script wich I have made, it places reminders to ~/.tcshrc or
|
||
whatever. I think it's very useful. To use it first place at THE END OF ~/.tcshrc:
|
||
|
||
\echo
|
||
echo "--------------------( R E M I N D E R S )--------------------"
|
||
echo "-------------------------------------------------------------";\echo
|
||
|
||
|
||
Then use this script:
|
||
|
||
------------------------------c-u-t--h-e-r-e-------------------------------
|
||
#!/bin/tcsh
|
||
# Nice little scipt that places reminders to the end of ~/.tcshrc or
|
||
whatever.
|
||
# Made by jmy@gim.net email if you like it!
|
||
|
||
echo Remind 1.0 by jmy@gim.net
|
||
if ($#argv == 0) then
|
||
echo Use like \'remind \ \\'
|
||
echo Option is \'a\' for add , \'u\' for undo and \'r\' for remove, pretty
|
||
easy
|
||
huh..:\)
|
||
\echo
|
||
echo NOTE: IF YOU REMOVED A LINE YOU DIDN\'T MEAN TO REMOVE, USE UNDO\!
|
||
\echo
|
||
exit 666
|
||
endif
|
||
if ($argv[1] == a) then
|
||
cat ~/.tcshrc | awk '\!/-------\";\\echo/ { print }' >! /tmp/remind.$user
|
||
echo echo $argv[2-] >> /tmp/remind.$user
|
||
echo 'echo "-------------------------------------------------------------";\echo'
|
||
>> /tmp/remind.$user
|
||
cp ~/.tcshrc ~/.tcshrc.remind
|
||
rm -f ~/.tcshrc
|
||
mv /tmp/remind.$user ~/.tcshrc
|
||
echo Added reminder: $argv[2-]
|
||
else if ($argv[1] == r) then
|
||
cat ~/.tcshrc | grep -v "echo $argv[2-]" >! /tmp/remind.$user
|
||
cp ~/.tcshrc ~/.tcshrc.remind
|
||
rm -f ~/.tcshrc
|
||
mv /tmp/remind.$user ~/.tcshrc
|
||
echo Removed Reminders:
|
||
diff ~/.tcshrc ~/.tcshrc.remind | awk '$2 ~ /echo/ { print$3,$4,$5,$6,$7,$8,$9,
|
||
$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25 }'
|
||
else if ($argv[1] == u) then
|
||
if (-e ~/.tcshrc.remind) then
|
||
mv ~/.tcshrc ~/.tcshrc.remtemp
|
||
mv ~/.tcshrc.remind ~/.tcshrc
|
||
mv ~/.tcshrc.remtemp ~/.tcshrc.remind
|
||
echo Undo completed
|
||
else
|
||
echo No undo file was found \(~/.tcshrc\)
|
||
endif
|
||
else
|
||
echo Error: invalid argument\(s\) run it with no argument for a short help
|
||
\echo
|
||
exit 666
|
||
endif
|
||
\echo
|
||
---------------------c-u-t--h-e-r-e--a-l-s-o------------------------------
|
||
|
||
|
||
Dont forget to do a 'chmod a+x remind' And NEVER place any new lines after the lines you
|
||
placed in ~/.tcshrc If you wan't to use it with some other shell it should just be like
|
||
changing the paths in the script. And yes, it maybe should have been alot easier to put
|
||
the reminders in a separat file, but i like this solution i'ts alot cooler...and maybe it
|
||
can show someone how awk works.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
SCRIPT TO CALL YOUR EDITOR
|
||
|
||
Date: Thu, 16 Jan 97 15:21:34 PST
|
||
From: Gary Chambers, geecee@gwi.net
|
||
|
||
I just found the Linux Gazette... Thankfully! It has truly made using Linux more fun.
|
||
|
||
I use the Linux version of Marko Macek's FTE editor. Since it is comprised of a separate X
|
||
and console version, I began to get frustrated with having to manually specify a default
|
||
editor. Now, wherever I can specify it (e.g. Pine), I use my edit script. It also provides
|
||
similar functionality at the command line.
|
||
|
||
I'm new to Linux, so there may be better ways of doing this. I submitted this for
|
||
inclusion in your 2-cent tips (my favorite section).
|
||
|
||
#!/bin/bash
|
||
|
||
# Determine whether we're in X Windows and call the proper editor
|
||
#
|
||
|
||
if [ "$WINDOWID" = "" ]; then
|
||
fte $1 $2 $3 $4 $5
|
||
else
|
||
xfte $1 $2 $3 $4 $5
|
||
fi
|
||
|
||
|
||
GeeCee, Gary Chambers
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
TIP FOR YOUR WEB PAGE
|
||
|
||
Date: Fri, 3 Jan 1997 17:26:14 -0500 (EST)
|
||
From: Ben Boule, bouleb@rpi.edu
|
||
|
||
|
||
One cool tip that I have found useful is the following. If you are running your web page
|
||
on your own machine or have the directory on NFS, put the following in your .profile :
|
||
|
||
cp ~/.netscape/bookmarks.html ~/public_html/bookmarks.html
|
||
cp ~/lynx_bookmarks.html ~/public_html/bookmarks2.html
|
||
|
||
Change for different browsers and server setups.
|
||
|
||
Then you can link them on your web page, and they get updated every time you log in, start
|
||
a new xterm, etc...
|
||
|
||
Of course, this assumes you don't care about other people looking at your bookmarks.
|
||
|
||
Later,
|
||
Ben Boule
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
RE: TITLEBAR TIP
|
||
|
||
Date: Mon, 20 Jan 1997 18:40:38 +0200 (SAT)
|
||
From: Christopher Gordon, chris@bayes.agric.za
|
||
|
||
Roger Booth sent in a corrected version of the Titlebar script. I found that in order to
|
||
get this working on a Slackware distribution of Linux, using the bash shell, further
|
||
modifications were neccesary. The control characters need one \ as opposed to \\. The
|
||
"echo" command required an -e switch. The "if" statement only needed one [] not two.
|
||
Finally, the script needed to check if "bash" was running or not. I also added a command
|
||
to simplify the prompt. Here is the corrected script. It can be run using the source
|
||
command.
|
||
|
||
if [ ${SHELL##/*/} = "bash" ] ; then
|
||
if [ $TERM = x"term" ] ; then
|
||
HOSTNAME=`uname -n`
|
||
label () { echo -e "\033]2;$*\007\c"; }
|
||
alias stripe='label $LOGNAME on $HOSTNAME - ${PWD#$HOME/}'
|
||
cds () { "cd" $*; eval stripe; }
|
||
alias cd=cds
|
||
eval stripe
|
||
export PS1='\$ '
|
||
fi
|
||
fi
|
||
|
||
|
||
Standard disclaimers apply.
|
||
|
||
Regards,
|
||
Christopher Gordon,
|
||
Remote Sensing, Inst. for Soil, Climate and Water
|
||
Pretoria, South Africa
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
TWO BIT TIP -- HEARTBEAT
|
||
|
||
Date: Wed, 22 Jan 1997 22:29:06 -0800 (PST)
|
||
From: Kragen Sittler, kragen@netcom.com
|
||
|
||
|
||
#!/bin/sh # This is a shell archive (produced by GNU sharutils 4.1). # To extract the files
|
||
from this archive, save it to some FILE, remove # everything before the `!/bin/sh' line
|
||
above, then type `sh FILE'. # # Made on 1997-01-22 22:11 PST by . # Source directory was
|
||
`/usr/local/heartbeat'. # # Existing files will *not* be overwritten unless `-c' is
|
||
specified. # # This shar contains: # length mode name # ------ ----------
|
||
------------------------------------------ # 2222 -rw-r--r-- README # 102 -rw-r--r-- crontab
|
||
# 371 -rwxr-xr-x heartbeat # 142 -r-xr-xr-x rc.heartbeat # 1045 -rwxr-xr-x update.sessionid #
|
||
touch -am 1231235999 $$.touch >/dev/null 2>&1 if test ! -f 1231235999 && test -f $$.touch;
|
||
then shar_touch=touch else shar_touch=: echo echo 'WARNING: not restoring timestamps.
|
||
Consider getting and' echo "installing GNU \`touch', distributed in GNU File Utilities..."
|
||
echo fi rm -f 1231235999 $$.touch # # ============= README ============== if test -f 'README'
|
||
&& test X"$1" != X"-c"; then echo 'x - skipping README (file already exists)' else echo 'x -
|
||
extracting README (text)' sed 's/^X//' 'README' && Heartbeat package X My computer seems to
|
||
crash often -- about once every ten days. I've been wanting to know when this happens, but
|
||
since the computer is busily crashing, it doesn't have time to tell me. (I suspect this
|
||
happens because of power outages.) X So I wrote a simple heartbeat package, which would keep
|
||
a record in the filesystem when it was alive. That way, I could look at this record when the
|
||
machine crashed and tell when and how long it had crashed. X So I wrote a few scripts and
|
||
created a new user. I named the heartbeat user 'heartbeat'. (I know it's not really kosher to
|
||
have a nine-letter username, but the only thing that has problems with it so far is ls.) X
|
||
heartbeat is the first script; it updates a file in /var/log/heartbeat. X Here's the meat of
|
||
heartbeat. X X #!/bin/sh X touch /var/log/heartbeat/"`cat /var/run/heartbeat.sid`" X
|
||
/var/log/heartbeat should be writable and executable by the heartbeat user; you may want to
|
||
use root. heartbeat gets run once a minute on my system, from the heartbeat's crontab: X * *
|
||
* * * /usr/local/heartbeat/heartbeat X (For some reason, my crond does not like whitespace
|
||
before crontab entries.) X The name of the file it updates is taken from
|
||
/var/run/heartbeat.sid. (I'm not sure /var/run is really an appropriate place to put this,
|
||
but I couldn't find a better place.) This file should be readable and writable by the
|
||
heartbeat user. X heartbeat.sid is updated at boot time by a Perl script called
|
||
update.sessionid. update.sessionid also puts some information in the file that heartbeat
|
||
updates. X I run update.sessionid (as the heartbeat user) from /etc/rc.d/rc.M, just before
|
||
cron is started. X Here's the section from my rc.M: X X.... # # Update heartbeat sessionid. #
|
||
This helps us find out when there was a crash. [ -x /etc/rc.d/rc.heartbeat ] &&
|
||
/etc/rc.d/rc.heartbeat X # Start crond (Dillon's crond): X.... X and here's
|
||
/etc/rc.d/rc.heartbeat: X #!/bin/sh # Update the heartbeat sessionid. # This should be done
|
||
before starting cron. su heartbeat -c /usr/local/heartbeat/update.sessionid X Now, when I
|
||
want to know when the machine crashed, I can look in /var/log/heartbeat for the times of
|
||
system shutdowns -- planned or otherwise. SHAR_EOF $shar_touch -am 0122221197 'README' &&
|
||
chmod 0644 'README' || echo 'restore of README failed' shar_count="`wc -c 'crontab' && # MIN
|
||
HOUR DAY MONTH DAYOFWEEK COMMAND * * * * * /usr/local/heartbeat/heartbeat SHAR_EOF
|
||
$shar_touch -am 0122221197 'crontab' && chmod 0644 'crontab' || echo 'restore of crontab
|
||
failed' shar_count="`wc -c 'heartbeat' && #!/bin/sh # script to continually update a file's
|
||
timestamp, except when the machine # is down # # This should be put in a crontab to be run
|
||
every minute, or five minutes, # or whatever. # # /var/run/heartbeat.sid contains a sessionid
|
||
that is incremented at each # bootup, and is suitable for use as a filename. X touch
|
||
/var/log/heartbeat/"`cat /var/run/heartbeat.sid`" SHAR_EOF $shar_touch -am 0122210097
|
||
'heartbeat' && chmod 0755 'heartbeat' || echo 'restore of heartbeat failed' shar_count="`wc
|
||
-c 'rc.heartbeat' && #!/bin/sh # Update the heartbeat sessionid. # This should be done before
|
||
starting cron. su heartbeat -c /usr/local/heartbeat/update.sessionid SHAR_EOF $shar_touch -am
|
||
0122221197 'rc.heartbeat' && chmod 0555 'rc.heartbeat' || echo 'restore of rc.heartbeat
|
||
failed' shar_count="`wc -c 'update.sessionid' && #!/usr/bin/perl # Update sessionid for
|
||
heartbeat, creating new sessionid file. # This should be run at boot time. X my
|
||
$sessionidfile = "/var/run/heartbeat.sid"; my $heartbeatdir = "/var/log/heartbeat"; X open
|
||
SESSIONIDFILE, $sessionidfile or X die "Couldn't open for read"; X my $sessionid = ; close
|
||
SESSIONIDFILE; chomp $sessionid; X if ($sessionid !~ /^[a-zA-Z]*[0-9]{4,}$/) { $sessionid =
|
||
"boot0000"; } X $sessionid ++; X open SESSIONIDFILE, ">$sessionidfile" or X die "Couldn't
|
||
open for write"; X print SESSIONIDFILE "$sessionid\n"; close SESSIONIDFILE; X my
|
||
$heartbeatfile = "$heartbeatdir/$sessionid"; X open HEARTBEATFILE, ">$heartbeatfile" or X die
|
||
"Couldn't open for write"; X my $message = failed after open; fs full? stopped"; X close
|
||
HEARTBEATFILE; X Xexit 0; SHAR_EOF $shar_touch -am 0122211997 'update.sessionid' && chmod
|
||
0755 'update.sessionid' || echo 'restore of update.sessionid failed' shar_count="`wc -c
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
2 CENT TIP FOR XDM
|
||
|
||
Date: Sun, 5 Jan 1997 21:28:02 -0600 (CST)
|
||
From: Andrew Dyer, adyer@Mcs.Net
|
||
|
||
here are several ways you can dress up an xdm login screen:
|
||
|
||
1. use the 'Xbanner' program available on sunsite
|
||
2. run a program like xearth or xfishtank that writes to the X login screen background
|
||
3. use a static image display program like 'xv' to put up a simple bitmap
|
||
|
||
I use xv to put up an image - to do this add a line like the following to the file
|
||
/usr/X11R6/lib/X11/xdm/Xsetup_0 (at least that's where is is in my system (Caldera)):
|
||
|
||
/usr/X11R6/bin/xv -rmode 1 -nc 64 -quit /home/adyer/pics/arcade.bmp
|
||
|
||
This line will run 'xv' to put the image file at the end of the command line onto the
|
||
background window in 'root tiled' mode, dithers the image to only use 64 colors (to
|
||
preserve colormap slots on my 256 color display), and tells xv to exit after doing this.
|
||
|
||
Note that if you run a program like xearth it will continue to run after you have started
|
||
the session and will contiinue to run by default until the session is exited. See the
|
||
'xdm' man page for more details.
|
||
|
||
!!!!!!!!!!!!! !! WARNING !! !!!!!!!!!!!!!
|
||
|
||
programs run by xdm are usually run as root, and so pose a potential security risk if they
|
||
are not specifically designed for this. You have been warned :-)
|
||
|
||
Andrew M. Dyer
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
TWO 2 CENT TIPS -- SYSLOG & X COLOR DEPTH
|
||
|
||
Date: 13 Jan 1997 10:33:29 +0100
|
||
From: Marco Melgazzi, marco@techie.com
|
||
|
||
Dear sirs
|
||
|
||
Here's two 2c tips for your wonderful Linux Gazette. Note that all the lines ending with \
|
||
have to be joined on one line.
|
||
|
||
1. :::: Syslog fun (oh no, not again) :::::
|
||
|
||
Everybody seem to like to put a line like the following in their syslog:
|
||
|
||
*.* /dev/ttyx
|
||
|
||
|
||
this way every message is printed on an unused tty and the curious ( or worried ) user can
|
||
switch to it and see what's going on. This approach has a big advantage ( it doesn't use
|
||
any system resource ) and a couple of disadvantages ( notably you have to switch to text
|
||
mode to read the messages and then you don't have scrollback ). So I have this little
|
||
workaround: in /etc/syslog.conf put something like
|
||
|
||
*.* /var/adm/current_session_log
|
||
|
||
|
||
In rc.local or whatever file is called before starting syslog
|
||
|
||
/bin/cat /dev/null > /var/adm/current_session_log
|
||
|
||
|
||
In fvwm you can add something like this:
|
||
|
||
Style "tail" NoTitle, NoHandles, Sticky, WindowListSkip
|
||
Style "tail" StaysOnTop, CirculateSkip
|
||
|
||
*GoodStuff S-Log telnet-sm.xpm Exec "rxvt" \
|
||
rxvt -geometry 132x45-0+0 -sl 1200 -font fixed \
|
||
-e tail -n 1200 -f /var/adm/current_session_log &
|
||
|
||
|
||
So when you press the goodstuff button named 'S-log' you get a big rxvt with a nice
|
||
scrollback buffer that displays exactly what's going on in the system. If your linux
|
||
system stays up for weeks at a time you'll probably have to set up a CRON entry that trims
|
||
this file every once in a while but this is left as an exercise for the reader ;-)
|
||
|
||
To pop down the rxvt a simple Ctrl-C is more than enough. By the way, this approach will
|
||
surely save a lot of stress to the monitor electronics: in fact switching from text mode
|
||
to hires a) takes time b) involves quite a lot of non-trivial adjustments in the monitor
|
||
circuitry so it could likely acceelerate its ageing process.
|
||
|
||
2. ::::: How to use X with more than one color depth ::::::
|
||
|
||
I normally use X in 8bit ( since my board is not VRAM based 1152x864 at 70Hz slows down
|
||
things considerably ) but, since when I hacked my XF86_S3 to let me use higher clocks in
|
||
16bit mode :), occasionally I need to switch to the 16bits depth (notably when using the
|
||
oh-so-amazing 'The Gimp').
|
||
|
||
Since leaving two servers up and running all the time via xdm seemed a waste of memory, by
|
||
tinkering with manual pages and articles from the net I came up with a viable alternative.
|
||
|
||
|
||
Let me first tell you one thing: in this way, when the second server is running, you get
|
||
both :0 (in 8bit) that is managed by xdm and :1 that has been started on-demand. Since I
|
||
don't usually use :1 while I'm online I didn't took the time to provide MIT-MAGIC-COOKIE
|
||
authorization for it: this is a thing you -should- do if you plan to use this on the net.
|
||
|
||
Here there are a couple of my scripts:
|
||
|
||
::: ----------------------------------------------------------------
|
||
:::/usr/local/bin/1open16
|
||
::: ----------------------------------------------------------------
|
||
xinit ~/.x_rc_for_1_16 -- /usr/X11/bin/X16 :1 vt8 &
|
||
|
||
::: ----------------------------------------------------------------
|
||
:::/usr/X11/bin/X16
|
||
::: ----------------------------------------------------------------
|
||
#!/bin/sh
|
||
exec XF86_S3.new -bpp 16 ${@+"$@"}
|
||
|
||
::: ----------------------------------------------------------------
|
||
:::~/.x_rc_for_1_16
|
||
::: ----------------------------------------------------------------
|
||
#!/bin/sh
|
||
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
|
||
|
||
userresources=$HOME/.Xresources_for_1_16
|
||
usermodmap=$HOME/.Xmodmap
|
||
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
|
||
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
|
||
|
||
export PATH= .... path ....
|
||
|
||
# merge in defaults and keymaps
|
||
|
||
if [ -f $sysresources ]; then
|
||
xrdb -merge -display :1 $sysresources &
|
||
fi
|
||
|
||
if [ -f $sysmodmap ]; then
|
||
xmodmap -display :1 $sysmodmap &
|
||
fi
|
||
|
||
if [ -f $userresources ]; then
|
||
xrdb -merge -display :1 $userresources &
|
||
fi
|
||
|
||
if [ -f $usermodmap ]; then
|
||
xmodmap -display :1 $usermodmap &
|
||
fi
|
||
|
||
....
|
||
misc other variables
|
||
....
|
||
|
||
exec fvwm -f .fvwmrc_for_1_16
|
||
|
||
::: ----------------------------------------------------------------
|
||
::: in ~/.fvwmrc_for_1_16 I have this: I'm not sure this duplication
|
||
::: is necessary but in my configuration it is. YMMV
|
||
::: ----------------------------------------------------------------
|
||
Function "InitFunction"
|
||
Exec "I" xrdb -display :1 -merge ~/.Xresources &
|
||
Exec "I" xmodmap -display :1 ~/.Xmodmap &
|
||
Module "I" GoodStuff
|
||
Exec "I" emacs &
|
||
EndFunction
|
||
|
||
|
||
In this way when you execute the 1open16 script you will get a 16bit screen on :1 at the
|
||
default resolution you put in your system XF86Config for 16bit depth.
|
||
|
||
Things get a little more hairy if you want to open the new screen with a different set of
|
||
resolutions: unluckily ( I guess for security reasons ) XFree lets you use a new
|
||
XF86Config -only- if you are root. So to play Quake on :1 you have to do the following...
|
||
|
||
::: ----------------------------------------------------------------
|
||
::: in ~/.fvwmrc ( this is nice for password requests, I use it all the
|
||
::: time, just put the word 'Password' in the rxvt that you need and use
|
||
::: the supplied style. I use it for going online, to access netscape &
|
||
::: other net stuff ( I'm paranoid so I created a user named -net- that
|
||
::: I use for all internet related stuff, I hate live-data trojans etc.)
|
||
::: you get the point.)
|
||
::: ----------------------------------------------------------------
|
||
Style "*Password" NoTitle, NoHandles, Sticky, WindowListSkip,StaysOnTop
|
||
|
||
::: in a menu entry
|
||
Exec "Quake (normal)" exec rxvt -fn \
|
||
"-b&h-lucidatypewriter-medium-r-*-*-*-180-75-75-*-*-*-*" \
|
||
-geometry 40x1+1-1 -T \"Quake Password" -e \
|
||
su root -c "/home/marco/bin/qk" &
|
||
|
||
::: ----------------------------------------------------------------
|
||
::: /home/marco/bin/qk. The redundant su is needed if you plan to launch
|
||
::: this file from the command line too.
|
||
::: ----------------------------------------------------------------
|
||
cd /home/marco/quake
|
||
su -c "xinit ./xf86quake -- /usr/X11/bin/X -bpp 8 :1 vt8 -xf86config \
|
||
/home/marco/lib/XF86Config.quake"
|
||
|
||
|
||
Of course /home/marco/lib/XF86Config.quake will contain only the resolution that I usually
|
||
play quake at ( that is 400x300 or 512x384 ). In this way you can play quake without
|
||
hassless even if you usually run at 1000-or-so x 800-or-so at whatever depth. Now if only
|
||
Linus released the updated 1.06 xf86quake ;-) (in 1.01 you can't use a custom heap, you
|
||
have the fixed 8mb one :( ).
|
||
|
||
Hope you'll like these tips!
|
||
|
||
Marco Melgazzi
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
X WINDOWS COLOR DEPTH
|
||
|
||
Date: Fri, 17 Jan 1997 08:38:20 -0500 (EST)
|
||
From: Aaron B. Dossett, aarond@ewl.uky.edu
|
||
|
||
|
||
>I have recently been messing with my x-server, and have managed >to get a depth of 16, ie
|
||
2^16 colors. This works >really nice with Netscape, but some programs (doom, abuse, and
|
||
>other games) wont work with this many colors. Do >you know of a fix? I have tried to get X
|
||
to support multiple >depths--to no avail. The man-page suggests that some >video cards
|
||
support multiple depths and some don't. How do I know >if mine does.
|
||
|
||
Well, if your video card has enough RAM and you've got enough modes defined in your
|
||
XF86Config file then you can specify the bit depth from the command line. If you have a
|
||
link called X to the server then the command
|
||
|
||
X -bpp 8 or X -bpp 16 or X -bpp 24
|
||
|
||
|
||
can be used. I like to alias the commands X8, X16, and X24 to the above. For this to work
|
||
best you should have your XF86Config file setup so that each mode uses the maximum
|
||
resolution possible.
|
||
|
||
Aaron Dossett, aarond@ewl.uky.edu
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
This page maintained by the Editor of Linux Gazette, gazette@ssc.com
|
||
Copyright © 1997 Specialized Systems Consultants, Inc.
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
News Bytes
|
||
|
||
CONTENTS:
|
||
* News in General
|
||
* Software Announcements
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
NEWS IN GENERAL
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX GAZETTE ITALIAN EDITION
|
||
|
||
|
||
|
||
Date: Fri, 10 Jan 1997 14:42:52 +0100
|
||
The first issue of the Italian Edition of the Linux Gazette, is now available on our site,
|
||
www.media.it/LUGBari/lgtp/index.html. It is in the spirit of helping italian Linux users
|
||
and, naturally, this italian edition is under the copying license of your original Linux
|
||
Gazette.
|
||
|
||
Bye (and many many thanks!)
|
||
Francesco De Carlo, fdecarlo@sole.media.it
|
||
CICCIO-X, LUGBari Coordinator
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX ADVOCACY MINI-HOWTO
|
||
|
||
|
||
|
||
Date: Sat, 11 Jan 1997 11:53:19 +0100 (MET)
|
||
This is the Linux Advocacy HOWTO and is intended to provide guidelines and ideas to assist
|
||
with your Linux advocacy efforts. -- authored by Paul L. Rogers, Paul.L.Rogers@li.org
|
||
|
||
Related Links:
|
||
Lars Wirzenius also has some thoughts about Linux advocacy.
|
||
|
||
The Linux Advocacy Project's goal is to encourage commercial application developers to
|
||
provide native Linux versions of their software.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX IN THE NEWS
|
||
|
||
|
||
|
||
Linux was chosen by PC Week as part of its list for the top ten products of 1996. See the
|
||
December 16, 1996 issue. The same issue has a related article about Linux and the Internet.
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX SITES TO CHECK OUT
|
||
|
||
|
||
|
||
http://www.m-tech.ab.ca/linux-biz
|
||
This site contains anecdotal references about the commercial applications of Linux. Example
|
||
uses of Linux in various industries, fulfulling various tasks are listed. Includes form /
|
||
CGI script that visitors can use to enter data about their own commercial Linux sites.
|
||
-- Idan Shoham, idan@m-tech.ab.ca
|
||
|
||
http://www.xnet.com/~blatura/linapps.shtml
|
||
The Linux Applications and Utilities List is an organized collection of pointers to the WWW
|
||
home pages of over 600 different Linux compatible application programs, system admin tools,
|
||
utilities, device drivers, games, servers, programming tools, file, disk and desktop
|
||
managers, internet apps, and more. The January 8 edition has added links to over 80 new
|
||
programs, as well as corrections to numerous existing listings. -- Bill Latura,
|
||
blatura@xnet.com
|
||
|
||
http://www.linuxware.com
|
||
This site is a Linux Support, Information, and general purpose Linuxer Hangout Site -- a
|
||
meeting place for people interested in learning more about Linux, providing help to other
|
||
Linuxers, and promoting Linux!!! -- Peter Lazecky, peter@linuxware.com
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
PNG ARTICLE (SEE ISSUE13) UPDATE
|
||
|
||
|
||
|
||
Apparently Netscape has finally committed to supporting PNG in Navigator and actually made
|
||
public statements to that effect at its Internet Developers' Conference last October,
|
||
although there's no indication of it anywhere on their web site. The only question is when:
|
||
Navigator 4.0 has a fixed release date, and PNG support may not be ready by then.
|
||
-- Greg Roelofs, newt@pobox.com
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
ROCHESTER, REVISED OS SEMINAR SERIES SCHEDULE
|
||
|
||
|
||
|
||
Date: Sun, 12 Jan 1997 02:36:18 GMT
|
||
Computer Science House at Rochester Institute of Technology Presents: an Operating System
|
||
Seminar Series Wednesday evenings at 8:00PM. Attendance is free of charge and is open to
|
||
the public.
|
||
* February 5: The Inferno Operating System for Everything From Embedded Systems To
|
||
Network Operating Systems. - David Bort (Student, RIT)
|
||
* February 12: Sun Microsystems new JAVA Based Network Computers - Jeff Rice (Sun
|
||
Microsystems)
|
||
* February 19: ShagOS -- An experimental Object Oriented Micro kernel. - Frank Barrus
|
||
(Xerox)
|
||
* February 26: Solaris - Geordie Klueber (Sun Microsystems)
|
||
|
||
|
||
|
||
For additional information, directions, comments or if you would like to be a guest
|
||
speaker, e-mail tad@csh.rit.edu.
|
||
Computer Science House, cshouse@csh.rit.edu,
|
||
http://www.csh.rit.edu/os-seminars
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX CD GIVEAWAY LIST
|
||
|
||
|
||
|
||
Date: Mon, 13 Jan 1997 05:16:52 GMT
|
||
If you have a spare Linux CD to give away, you can list your email address at
|
||
|
||
http://emile.math.ucsb.edu:8000/giveaway.html
|
||
|
||
Interested parties will contact you, then send in a self-adressed stamped envelope and you
|
||
send them the CD.
|
||
|
||
If you would rather (or in addition) lend a Linux CD locally, you can now specify that as
|
||
well.
|
||
|
||
For additional information:
|
||
Axel Boldt, boldt@math.ucsb.edu, http://www.math.ucsb.edu/%7Eboldt/
|
||
Univ of California at Santa Barbara, Dept of Mathematics
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
LINUX BROWSER PROJECT - A NEW WWW BROWSER FOR LINUX
|
||
|
||
|
||
|
||
Date: Tue, 14 Jan 1997 06:34:56 GMT
|
||
Announcing the Linux Browser Project -- a group of developers developing a world wide web
|
||
browser for Linux and other platforms. The goal of this project is to develop a web browser
|
||
which consists of a modular program architecture based around a small, fast kernel which
|
||
would load necessary modules on demand.
|
||
|
||
The project is in its early stages, and we are announcing the project at the moment to make
|
||
ourselves known to the rest of the Linux community. If anyone would be interested in
|
||
helping us out in any way, please feel free to join the mailing lists or visit the web site
|
||
and let us know that you are willing to help. For additional information:
|
||
See the Linux Browser Project home page at http://www.tjhsst.edu/LBP/.
|
||
Jason A. Miller, Project Coordinator, jasonm@trib.com,
|
||
The Linux Browser Project Team
|
||
|
||
[IMAGE]
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
SOFTWARE ANNOUNCEMENTS
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
XFMAIL 1.0 - MAIL PROGRAM FOR X
|
||
|
||
|
||
|
||
Date: Sun, 05 Jan 1997 00:59:12 GMT
|
||
Xfmail 1.0 is finally out! XFMail is an X-Windows application for sending and receiving
|
||
electronic mail. It uses the XForms GUI library toolkit by T.C. Zhao and Mark Overmars.
|
||
|
||
It has a user-friendly interface and online help to make it easy to use. It implements most
|
||
of the mail functionality in one program and it does not require any additional tools.
|
||
|
||
You can ftp XFMail at:
|
||
|
||
ftp://ftp.x.org/contrib/applications/xfmail-1.0.tar.gz
|
||
ftp://Burka.NetVision.net.il/pub/xfmail/xfmail-1.0.tar.gz
|
||
|
||
For additional information:
|
||
http://Burka.NetVision.net.il/xfmail/xfmail.html
|
||
Jacek Bochenek, jacek@coig.katowice.pl
|
||
Organization: COIG S.A.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
IMAGEMAGICK 3.7.9 ELF BINARIES - GENERAL IMAGE MANIPULATION TOOL
|
||
|
||
|
||
|
||
Date: Sun, 05 Jan 1997 00:59:19 GMT
|
||
ImageMagick (TM), version 3.7.9, is a package for display and interactive manipulation of
|
||
images for the X Window System.
|
||
|
||
ImageMagick supports also the Drag-and-Drop protocol form the OffiX package and many of the
|
||
more popular image formats including JPEG, MPEG, PNG, TIFF, Photo CD, etc.
|
||
|
||
You will also need the package libIMPlugIn-1.0-elf to get it working. Here are the
|
||
locations you can get the packages from:
|
||
|
||
Site: sunsite.unc.edu /pub/Linux/X11/xapps/graphics 942k ImageMagick-3.7.9-elf.tgz 1k
|
||
ImageMagick-3.7.9-elf.lsm 886k libIMPlugIn-1.0-elf.tgz 1k libIMPlugIn-1.0-elf.lsm
|
||
|
||
For additional information:
|
||
Alexander Zimmermann, Alexander.Zimmermann@FMI.Uni-Passau.de,
|
||
http://www.uni-passau.de/~zimmerma
|
||
Organization: Universit<69>t Passau
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
VISUAL TCL 1.07 BETA
|
||
|
||
|
||
|
||
Date: Sat, 11 Jan 1997 02:42:27 GMT
|
||
Visual Tcl 1.07b is a quality application development environment for UNIX, Windows and
|
||
Macintosh platforms. Visual Tcl is written entirely in Tcl/Tk and covered by the GNU
|
||
General Public License.
|
||
|
||
Please choose the location nearest you since my connection can become saturated at peak
|
||
times.
|
||
|
||
Home Site: http://www.neuron.com/stewart/vtcl/ Australia:
|
||
http://holmes.ccs.deakin.edu.au/vtcl/ United Kingdom: http://www.jessikat.demon.co.uk/vtcl/
|
||
Germany: http://www.ifconnection.de/~rjs/vtcl/ US East:
|
||
http://www.ultra.net/~eugene/mirror/vtcl/ US Mid: http://chaos.uark.edu/vtcl/
|
||
|
||
For additional information:
|
||
Stewart Allen, stewart@neuron.com
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
NEXS 1.3-BETA X-WINDOWS SPREADSHEET NOW AVAILABLE
|
||
|
||
|
||
|
||
Date: Mon, 13 Jan 1997 05:16:23 GMT
|
||
X Engineering Software Systems (XESS Corp.) announces the immediate availability of the
|
||
BETA version of the NExS 1.3 spreadsheet for Linux and UNIX workstations.
|
||
|
||
NExS, the Network Extensible Spreadsheet, is a full-featured, graphical spreadsheet
|
||
developed specifically for UNIX and the X Window System. NExS has more than 237 built-in
|
||
business and scientific functions, allows user-customized functions, displays data using 2
|
||
and 3 dimensional graphs, and imports and exports data in a wide variety of formats
|
||
(including HTML tables).
|
||
|
||
Demonstration copies and additional conNExions plug-ins may be downloaded from
|
||
http://www.xess.com. NExS is priced at $149 for the Personal Edition, and $249 if a
|
||
floating license is desired. For addtional information:
|
||
xess@vnet.net
|
||
Vnet Internet Access, Inc. - Charlotte, NC.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
PHT RELEASES RED HAT 4.0
|
||
|
||
|
||
|
||
Date: Tue, 14 Jan 1997 06:35:52 GMT
|
||
Pacific HiTech is proud to announce the release of our newest Linux product for the i386
|
||
architecture:
|
||
|
||
Turbo Linux: Red Hat 4.0
|
||
|
||
It features a modular 2.0.18 kernel, better networking, more packages, and, of course, the
|
||
floppy-less install. The second CD contains the entire contrib/ directory from
|
||
ftp.redhat.com (the Live Filesystem was scrapped in order to put the contrib/ directory on,
|
||
which we felt would be more useful for more people).
|
||
|
||
The 2 CD set is only $19.95 plus s/h. If you want more details on the product, visit
|
||
http://www.pht.com/linux.
|
||
|
||
For additional information:
|
||
Scott M. Stone, sstone@pht.com
|
||
Chief Linux Developer/UNIX SysAdmin for Pacific HiTech, Inc. http://www.pht.com/
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
PHT RELEASES MKLINUX DR2
|
||
|
||
|
||
|
||
Date: Tue, 14 Jan 1997 06:35:56 GMT
|
||
Pacific HiTech is proud to announce our newest Linux offering for the PPC architecture:
|
||
|
||
MkLinux DR2 is the latest pre-release version of MkLinux, and it is MUCH MUCH better than
|
||
DR1 - more stable, more hardware support, and a much smoother installation. It was
|
||
uncompressed from the FTP distribution and burned as a Macintosh HFS format CD - you don't
|
||
need to decompress the files onto your hard drive, you can just put in the CD and GO.
|
||
|
||
It's only $19.95 plus s/h. See http://www.pht.com for ordering information, or email
|
||
sales@pht.com.
|
||
|
||
For additional information:
|
||
Scott M. Stone, sstone@pht.com
|
||
Chief Linux Developer/UNIX SysAdmin for Pacific HiTech, Inc. http://www.pht.com/
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
This page written and maintained by the Editor of Linux Gazette, gazette@ssc.com
|
||
Copyright © 1997 Specialized Systems Consultants, Inc.
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
THE ANSWER GUY
|
||
|
||
|
||
By James T. Dennis, jimd@starshine.org
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
CONTENTS:
|
||
* Netscape Mail Block
|
||
* Dealing with e-mail on a pop3 server
|
||
* Security Problem
|
||
* More on Security Problem
|
||
* Dial-up Problem
|
||
* X Window Problem
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
NETSCAPE MAIL BLOCK
|
||
|
||
|
||
|
||
Date: Sun, 15 Dec 1996 23:16:10 -0800 (PST)
|
||
|
||
hi... mitch here in mobile, alabama...
|
||
i need to refuse to accept email from a particular person... how can i configure netscape
|
||
and/or cnd1.0 to bounce the person's mail back to them?
|
||
|
||
I'd use procmail. CND uses procmail as your "local delivery agent" (by default). This means
|
||
that sendmail passes any mail to a local account to procmail and lets procmail due the
|
||
final delivery to your mail box (/var/spool/mail/$YOUR_LOGIN_NAME).
|
||
|
||
However, when procmail does this, it checks for a .procmailrc file in your home directory
|
||
(and does some ownership and permissions checks on it for you).
|
||
|
||
procmail is a little programming language specifically for processing mail.
|
||
|
||
Your .procmailrc file can have a variety of settings and clauses (which are called
|
||
"recipes" by the author). You can also modularize this by using a variety of INCLUDE
|
||
directives. Here's a simple example that should get you started.
|
||
|
||
:0 hr
|
||
* ^From.*spammer.you.despise@spamhaven.com
|
||
* !^FROM_MAILER
|
||
* !^FROM_DAEMON
|
||
* !^X-Loop: ${USERNAME}@`hostname`"
|
||
| (formail -r -A"X-Loop: ${USERNAME}@`hostname`" \
|
||
-A"Precedence: junk" ;\
|
||
echo "Your mail is not welcome here."
|
||
echo "Please don't mail me again."
|
||
echo
|
||
cat ~/your.signature.or.flame
|
||
)
|
||
|
||
The :0 marks this as a new recipe (so each new recipe starts with a :0 line). The 'h' on
|
||
that line is one of several flags to procmail about what parts of the message to hand to
|
||
your action line (which comes up later). 'h' says: give me the header 'r' says: treat the
|
||
incoming data as "raw" (so his failure to put a blank line at the end of his message won't
|
||
cause your response to fail).
|
||
|
||
The four "star" lines after that are conditions -- the first specifies that the header
|
||
indicates that the message be "from" your spammer (or unwanted sender). This will actually
|
||
match any "from" or "From:" line that contains your targets e-mail address. The next two
|
||
lines try to ensure that you don't respond to daemons and mailers (mailing lists). The next
|
||
one (which you should fill in with your username and hostname) makes sure that your don't
|
||
respond to your own response.
|
||
|
||
Those three conditions are to protect your script from being tricked into doing bad things.
|
||
Consider them to be the minimum overhead on any autoresponders that you write.
|
||
|
||
The next line (starting with a "|" pipe character) is the action to take.
|
||
|
||
In procmail there are three types of actions. A filename simply specifies an mbox (elm,
|
||
pine, or mailx compatible) folder to file this away in. A directory name specifies an mh or
|
||
mmdf folder to store the message in (mh and mmdf use different naming schemes for the
|
||
messages in their folder directories -- you don't need to worry about this unless you use
|
||
on of these mail user agents). A '!' (bang) line specifies an e-mail address to which to
|
||
bounce the message. A '|' (pipe) line specifies that the message should be filtered through
|
||
a local program.
|
||
|
||
formail is a program that comes with the procmail package. It "formats mail headers." This
|
||
particular formail command formats a "reply" (-r) header and adds two additional header
|
||
lines -- a standard "Precedence: junk" line and a personal "X-" line (which the RFC822 spec
|
||
allows you to use to embed custom information into a header). This is where your message
|
||
adds the line that would prevent an attack by routing your response back into your script
|
||
(a mail loop).
|
||
|
||
The echo and cat statements after the formail line just provide output that is appended
|
||
after the mail header. This becomes the body of your response. You can add additional echo
|
||
lines -- or you can create a file and just 'cat' it here.
|
||
|
||
If you are new to procmail (which is almost certain given your question -- autoresponders
|
||
are some of the first things procmail'ers learn) you may be nervous about 'breaking'
|
||
something and losing some of your mail. So -- to protect yourself from that you might want
|
||
start your .procmailrc with the following simple recipe:
|
||
|
||
:0 c
|
||
fallback
|
||
|
||
Which (if it is the *first* recipe) simply appends a copy of every incoming message to a
|
||
file (in your ~/Mail directory by default) named fallback. You can compare the contents of
|
||
that folder to your inbox until you're confident that things are working as you expect.
|
||
|
||
Please read the procmail and procmailex (examples) man pages for more details. The author
|
||
Stephen van der Berg, has also written an automated mail list management package called
|
||
SmartList -- which is highly regarded among people who've tried it. I like SmartList *much*
|
||
more than majordomo.
|
||
|
||
--Jim
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
DEALING WITH E-MAIL ON A POP3 SERVER
|
||
|
||
Date: Tue, 28 Jan 1997 04:02:06 -0800 (PST)
|
||
|
||
From Moe Green:
|
||
|
||
Is there any way (or any program out there) which will not only get my email from a pop3
|
||
server off of one account, then distribute it to multiple users on my system by either the
|
||
from: or subject: lines???
|
||
|
||
Example: Perhaps popclient could get the mail and save to temp, then is there a program
|
||
which would go through and say, hmmm...this mail is from johndoe@linux.org and it goes to
|
||
root...then the next message is from mike@canoe.net and it goes to dave???
|
||
|
||
Thanks for your time, keep up the good work.
|
||
-Moe Green, starved@ix.netcom.com
|
||
|
||
It is possible to write procmail scripts that can do this sort of thing. However I don't
|
||
recommend this approach at all.
|
||
|
||
The current version of 'popclient' is called 'fetchmail' (because it supports IMAP and some
|
||
other mail store and forward protocols).
|
||
|
||
It's default is to fetch the mail from your POP or IMAP server and feed it to the smtpd
|
||
(sendmail) on your local host. This means that any special processing that would be done by
|
||
the aliases or .forward files (especially any processing through procmail scripts) will be
|
||
done automatically.
|
||
|
||
It is possible to over-ride that feature and feed the messages through a pipe or into a
|
||
file. It is also possible, using procmail or any scripting language, to parse and dispatch
|
||
the file. Using anything other than procmail would require that you know *alot* about
|
||
RFC822 (the standard for internet mail headers) and about e-mail in general.
|
||
|
||
I did write an article on procmail this month -- but may have submitted it too late for
|
||
inclusion into this month's Linux Gazette. The gist of it is available on my own mail
|
||
server (send mail to info@starshine.org with a subject of ``procmail'' or ``mailbot'').
|
||
|
||
The reason I don't recommend all of this is that it violates the intentions and design of
|
||
internet e-mail. A better solution is to find a provider of UUCP services (or at least
|
||
SMTP/MX services). UUCP is the *right* way to provide e-mail to disconnected (dial-up)
|
||
hosts and networks. It was designed and implemented over 25 years ago and all of the mail
|
||
systems on the Internet know how to gateway to UUCP sites.
|
||
|
||
As for SMTP/MX services for disconnected hosts/networks. Various ways of hacking sendmail
|
||
and DNS configurations have been developed in the last few years -- with a variety of shell
|
||
scripts and custom programs to support them. All of these provide essentially the same
|
||
services as mail via UUCP over TCP -- but without conforming to any standard (meaning that
|
||
whatever you learn and configure with one ISP probably won't work with the next one).
|
||
|
||
Glad I could help. I hope that article on procmail helps.
|
||
|
||
--Jim
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
SECURITY PROBLEM
|
||
|
||
Date: Tue, 28 Jan 1997 04:02:06 -0800 (PST)
|
||
|
||
From Jay:
|
||
|
||
Recently a cracker got into my linux system on the internet. He didn't do a lot of damage
|
||
but he did turn off system logging. I guess so I couldn't see what he'd done. Now I can't
|
||
get it working again....
|
||
|
||
1. I've made sure that the syslogd program is running using 'ps'
|
||
2. I've read the syslogd.conf file to make sure it's logging everything, and where it's
|
||
going to.
|
||
3. I've checked permissions on the log file
|
||
4. I did a 'kill -HUP' on the syslogd process and it writes 'restart' to the log
|
||
5. 'logger' does nothing when I run it (no log entry, no error)
|
||
6. All my C programs that wrote to syslog don't anymore
|
||
|
||
Anyone have any good ideas what to do from here?
|
||
|
||
Thanks
|
||
--Jay, jay@shadow.ashpool.com
|
||
|
||
|
||
I do but they are rather too involved for me to type up tonight.
|
||
|
||
I really recommend that you reinstall the OS and all binaries from scratch whenever you
|
||
think that root has been compromised on a system. I realize that this is a time-consuming
|
||
proposition -- but it is the only way to really be sure.
|
||
|
||
I also recommend tripwire (ftp.cs.perdue.edu in the COAST archive -- and it's mirrors).
|
||
|
||
Please feel free to write me if you continue to have system security problems.
|
||
jimd@starshine.org
|
||
|
||
Sorry to take so long to respond. I've been literally swamped all month.
|
||
|
||
--Jim
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
MORE ON SECURITY PROBLEM
|
||
|
||
Date: Tue, 28 Jan 1997 18:56:22 -0800 (PST)
|
||
|
||
From Jay:
|
||
|
||
>>> Recently a cracker got into my linux system on the internet.
|
||
>>
|
||
>> Did you restart the whole system?
|
||
>> I would consider replacing syslog from your CD's and
|
||
>> restarting your system.
|
||
>
|
||
I found that the cracker had replaced my syslogd with a packet sniffer. I think he had
|
||
copied the syslogd code and replaced parts of it with his sniffer. It seemed to have some
|
||
functionality but not a lot...
|
||
|
||
I also found a SUID version of bash in my /tmp directory. My thought is that this is how
|
||
he originally got root access.
|
||
|
||
Not too surprising. He was probably using a 'rootkit.' However he obviously didn't do a
|
||
very good job of covering his tracks.
|
||
|
||
You should consider all passwords for all of the systems on the local net to be
|
||
compromised. Force password changes across the board and consider installing ssh or stelnet
|
||
(secure, encrypted replacements to rlogin/rsh and telnet respectively).
|
||
|
||
He probably got in through the "Leshka" sendmail bug (allowing any shell user to create a
|
||
root owned SUID shell in /tmp/ on any system with an SUID root copy of sendmail (version
|
||
~8.6.x to 8.7.x ???) using a bug in sendmail's handling of ARGV[0] and it's subsequent
|
||
SIGHUP handling.
|
||
|
||
Everyone using earlier versions of sendmail should upgrade to 8.8.3 or later
|
||
(www.sendmail.org for details).
|
||
|
||
How important are this system and the other systems on the same LAN segment to your
|
||
business?
|
||
|
||
I'd seriously consider hiring a qualified consultant for a full day risk assessment and
|
||
audit. Unfortunately you'll probably pay at least $125/hr for anyone that's worth talking
|
||
to and many of the "security consultants" out there are snake oil salesmen.
|
||
|
||
I personally trust Peter Shipley (www.dis.org) and Brent Chapman (www.greatcircle.com)
|
||
(co-author of the O'Reilly Firewalls book) Strat Rose (www.virtual.net) and Dan Farmer
|
||
(www.trouble.org) (co-author of SATAN). Most of them are live in the SF Bay Area (silicon
|
||
valley) and most of them aren't available most of the time (Brent is working on a large
|
||
project to integrate the SGI and Cray WAN's; Strata has accepted a full-time position at
|
||
synopsis.com, etc).
|
||
|
||
I only consider myself to be a student, at best an apprentice, at data security. I'm
|
||
willing to help -- but I can offer a list of satisfied clients for RASA services and I have
|
||
no official "credentials."
|
||
|
||
--Jim
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
DIAL-UP PROBLEM
|
||
|
||
Date: Tue, 28 Jan 1997 22:56:35 -0800 (PST)
|
||
|
||
From Seth Vidal:
|
||
|
||
I was reading your answer in LG(#13) to the individual who had slow rate problems with
|
||
ppp. Something which he did not mention that might be of help is the MTU. Some isp's set
|
||
the mtu or have ppp do the negotiation. NOT all. Some of the newer ones have not quite
|
||
figured out that a 14.4 or 28.8 is not going to get a packet size over 576 very often. If
|
||
he sets his mtu to 576 (or even 296 for a 14.4) he may be able to force the provider's
|
||
setting down. I have found that in a standard (slackware or redhat) linux distribution
|
||
that the mtu defaults to 1500 which will result in slow downs and problems if your modem
|
||
encounters errors frequently. I know what ppp is "supposed to do" when set up correctly.
|
||
But he cannot control the ignorance of his ISP and therefore it would be to his behest to
|
||
give that a try. If you'd like to pass the information along to the individual who wrote
|
||
the message feel free. I hope this helps him and any others.
|
||
|
||
cheers,
|
||
Seth Vidal, skvidal@terminus.ehc.edu
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
X WINDOW PROBLEM
|
||
|
||
Date: Tue, 28 Jan 1997 04:02:06 -0800 (PST)
|
||
|
||
From: Chris Lee, techno@usa.net
|
||
|
||
1.) X Windows I got a Cirrus 5434 1mb video card, whenin 640x480x8bit the video is *fine*
|
||
not great, I get little specs once in awhile on the screen, they go away with a simple
|
||
[refresh] but still... When in 800x600x8bit I get lines, not specs anymore, alomst allways
|
||
horizontial, and about 3pixels high, and allways croos the entire screen, not the virtual
|
||
screen though, and they also go away with a simple [refresh] thses line occur alot more
|
||
then the specs did. My vid card works fine in DOS/Windows. Any suggestions ?
|
||
|
||
You can look for the SuperProbe utility that comes with most recent distributions. This
|
||
will provide info that can be autodetected about your video card.
|
||
|
||
Frankly XWindows configuration under XFree86 is black magic. A few people are really good
|
||
at it and mere mortals (such as I) just plug along and hope for the best.
|
||
|
||
The new XFree86 3.1.2 release seems to be better about this but I'm sure that I'm not
|
||
getting the optimal color and clock settings from my various X installations either.
|
||
|
||
2.)Is there any Linux or X-Windows mailing-lists ? would help alot for me.
|
||
|
||
There are many Linux mailing lists -- and some of them and some independent ones cover
|
||
XFree86 (which is used by Linux, FreeBSD and the rest of the free BSD derivatives (NetBSD
|
||
and OpenBSD).
|
||
|
||
The three best web sites for information about Linux seem to be:
|
||
* http://www.li.org/, Linux International
|
||
* http://www.ch4549.org/lust/, L.U.S.T. (Linux User's Support Team)
|
||
* http://www.ssc.com/linux/, SSC Inc.
|
||
|
||
|
||
|
||
I don't know much about X Windows and the XFree86 project but I think they maintain a web
|
||
site -- probably at www.xfree86.org.
|
||
|
||
It's an often overlooked fact that there are competitors to Linux in the field of freely
|
||
available Unix for PC's. You can look at www.freebsd.org, www.netbsd.org and
|
||
www.openbsd.org for some of those.
|
||
|
||
Thanks for your time :)
|
||
Chris Lee, Computer Science
|
||
P.S. You Linux people are great, so much out there, so many people helping you,
|
||
nothing like this for DOS/Windows
|
||
|
||
DOS heralded the "sharing" of software (shareware) while Linux and the GNU project has
|
||
promoted a *giving* of software -- and support.
|
||
|
||
I think one is largely and extension of the other.
|
||
|
||
Personally some of the best news I've heard for die hard PC users in the last year is the
|
||
announcement that Caldera purchased DR-DOS and intends to release the sources as soon as
|
||
the clean up the code enough to compile cleanly in a sane production environment. Look at
|
||
www.caldera.com for details about that.
|
||
|
||
OpenDOS will be one of the final pieces in the puzzle of how we (PC users, IS managers, and
|
||
others) can truly protect the investment we've made in our legacy software. (Currently,
|
||
with dosemu -- the BIOS emulator, you have to install a copy of DOS unto your system in
|
||
addition to installing and configuring the Linux interface to your DOS programs -- which is
|
||
want dosemu provides).
|
||
|
||
-- Jim
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Copyright © 1997, James T. Dennis
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
CLUELESS at the Prompt: A New Column for New Users
|
||
|
||
By Mike List, troll@net-link.net
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
I'm sure you've heard it before, but Welcome to Linux! You've heard the stories, your
|
||
friends told you "Don't do it" but the allure of an operating system with at least the
|
||
power of NT that can run on 4 MB of RAM on the same disk, even on the same partition with
|
||
your DOS/Windows installation, was too big to be ignored. So you went on a FTP spree or
|
||
bought a Red Hat or Slackware CD, installed it and you are confused, things don't work the
|
||
way you expected, the man pages seem to be written in another language, and the people on
|
||
the USENET keep telling you to RTFM and belittling you.
|
||
|
||
That's why I decided to ask if I could write this column, it happened to me. Actually, when
|
||
I got into computers (less than a year ago,) my friend Trippy told me to learn DOS before
|
||
trying Windows. Thanks Trippy, you saved me a lot of trouble. So when I read about Linux, I
|
||
thought -WHOA COOL!!, and downloaded the mini-linux distribution from Sunsite."HEY!Wait a
|
||
minute, how come the keyboard doesn't work right?" Turns out the key table is Portuguese
|
||
and requires file editing to be usable by us Yanks. Thanks to SGK from the Debian group, I
|
||
got that squared away, so I decided to go with Debian, but with my small disk and no
|
||
CD-ROM, Debian's Compatibility/Conflict Resolution was too much for me. So I got a second
|
||
disk, 100 MB but it was still too small. So I decided to give Slackware a try. That's what
|
||
I'm running now.
|
||
|
||
The point is, I'm not a college educated computer expert but I still ended up(for now) with
|
||
a running linux box. You can too, if you are willing to tinker (hack later, tinker now).I
|
||
made every possible mistake, I thought until I saw some of the questions in the news
|
||
groups.
|
||
|
||
But enough about me, what do you think about me?;-)
|
||
|
||
The first things you need to know after you install Linux are the most common commands.
|
||
Here I'm going to assume that you have at least some DOS background. The following list
|
||
will attempt to correlate Linux commands:
|
||
|
||
|
||
|
||
LinuxDOS ls /directory/namecd\directory\name -- dir ls /directory | more
|
||
ls " " | lessdir | more cat /filetype \file cat " " | more
|
||
less /file" " | more cp /file /file /tocopy \file \to cd /directorycd\directory mkdir
|
||
/directorymkdir \directory rm /filedel \file
|
||
|
||
This list is not nearly complete, there are many more commands in both OS but these are
|
||
very likely the most commonly used ones. For command help in DOS type: help :in linux type:
|
||
man (command, substitute the command name): Both of these help utilities give options or
|
||
switches that change the nature of the command. You can see that there are similarities in
|
||
the command line operation of both OS, historically they share a common ancestry. In fact,
|
||
to use a oversimplified view, at the command line linux could be thought of as SUPERDOS. In
|
||
fact this SUPERDOS can actually be used to run MS Windows - check into WINE and WABI home
|
||
pages on the Internet.(More on those later, maybe.)
|
||
|
||
One of the next things you will need to do is find out how to write or change file contents
|
||
with an editor.I used to think elvis was the easiest editor, until Konrad Rokicki told me
|
||
about pico, which comes with the pine mail server. If you used MS Write or Notepad, you'll
|
||
find it very easy to use. Save Emacs for another day unless you are a good typist, I found
|
||
the keyboard commands to be confusing for my two-fingered style. If you don't have pico
|
||
installed, try elvis in the input mode, by typing: input filename, it's pretty easy too,
|
||
except watch out for command mode and input mode (type: man elvis :and read the page.If you
|
||
have a CD version of Linux, you either have pico installed or can have it if you choose.
|
||
|
||
If you're like me one of your priority projects will be to to do is use an Internet
|
||
protocol to connect to your Internet Service Provider. My ISP uses PPP so that's what I
|
||
used, and the following descriptions are for PPP.
|
||
|
||
The first thing you will need to confirm is that your kernel supports PPP, either in the
|
||
kernel or by loadable modules. Type: pppd :and hit enter. If your kernel doesn't support
|
||
PPP, you'll get a negative message, if you get a prompt you can assume for now that it's
|
||
supported.
|
||
|
||
Next you will need to type: ls /usr/sbin | more :and hit enter. Look for files called
|
||
ppp-on and ppp-off. Next, type: ls /etc | more : and hit enter. Here you will be looking
|
||
for a file called resolv.conf. Then type: ls /etc/ppp : you can skip the: | more :this
|
||
time, since it's a small directory,and hit enter. You'll be looking for files called
|
||
options and ppp-on-dialer.
|
||
|
||
Edit your /etc/resolv.conf to look something like:
|
||
|
||
domain net-link.net
|
||
nameserver 205.207.6.2
|
||
nameserver 205.217.6.3
|
||
gateway 205.217.6.10
|
||
|
||
Naturally you will have to change the name and numeric to match that of your ISP .
|
||
|
||
Next, edit your /etc/ppp/options file to look something like this:
|
||
|
||
/dev/modem
|
||
38400 # at this line you could substitute 19200, 57600, 115200
|
||
defaultroute
|
||
noipdefault
|
||
debug
|
||
crtscts
|
||
lock
|
||
modem
|
||
|
||
|
||
|
||
|
||
These two files are necessary to either of the methods I am going to describe.
|
||
|
||
Now you can use minicom to dial up your ISP. Type: minicom :, and when it loads, type:
|
||
ATDTYOURISPNUMBER :hit enter. When the remote modem answers you will be prompted for your
|
||
username and password. When you have responded with this information, a string of garbage
|
||
characters will run across the screen. Type: ctrl(key)a :then: Q :which will let you out of
|
||
minicom without hanging up the modem. Then immediately type: pppd :then hit enter. Type:
|
||
ping YOURISP'SNUMERIC :you will get a message that will inform you if you are connected. If
|
||
you get a message that says in part "network not reached" try again. If no luck after a
|
||
couple more tries, check to see that the files you edited have the correct information. Try
|
||
changing your connection speed in /etc/ppp/options to 19200 and try again. If you connect
|
||
this time, then one at a time try the faster speeds until you can't connect, then drop back
|
||
to the fastest speed that worked.
|
||
|
||
There is an easier method using the script /usr/sbin/ppp-on, that involves editing that
|
||
file to give your ISPdialup number, username, and password and optionally your connection
|
||
speed. It is commented to help you figure out how to change those lines that you need to
|
||
change. When that is done correctly, you can dial up by typing: ppp-on : Pretty cool, huh?
|
||
If these methods don't work for you, start by reading the PPP_HOWTO in your
|
||
/usr/doc/faq/howto directory, then respond by e-mail to troll@net-link.net, telling me any
|
||
error messages, and I'll try to square you away.
|
||
|
||
There is another method using the chat program, but I haven't had much luck there, yet.
|
||
Future installments, if any will fill you in on that if it seems that it's wanted.
|
||
Personally, ppp-on is just fine for me so far.
|
||
|
||
you will want to get an e-mail program and a browser, if you don't already. I recommend
|
||
lynx. It's fast and you don't need X installed to use it. There probably is a lynx binary
|
||
in your distribution, but if not you can get one from sunsite or other ftp.Pine is a good
|
||
mail program, and it includes the pico editor, as noted above.
|
||
|
||
NOTE TO LINUX EXPERTS- I would be glad to accept reasonable criticism of this article and
|
||
the information therein. I don't really want to put up with heavy fire, if you can help the
|
||
new user better than me, write an article yourself, there are plenty of avenues where such
|
||
information would be of great service.
|
||
|
||
NEXT TIME- E-MAILTROLL@NET-LINK.NET ME AND ASK, OTHERWISE I'LL JUST WRITE ABOUT WHAT GAVE ME
|
||
TROUBLE AND HOW I GOT PAST IT.
|
||
|
||
|
||
|
||
TTYL, Mike List
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Copyright © 1997, Mike List
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
The Cracraft and Lijewski DIRED Programs
|
||
|
||
By Grant B. Gustafson gustafso@math.utah.edu
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
The directory navigator and program launcher called "DIRED" in the original incarnations of
|
||
EMACS has two stand-alone Unix clones. Mike Lijewski's "dired" 2.2 is written in C++
|
||
(1996). The original "dired" was written in C by Stuart Cracraft (1980), available as
|
||
version 3.05 (1997).
|
||
|
||
Historically, shortly after emacs "dired" appeared in the TECO implementation, a
|
||
stand-alone version was written by Stuart Cracraft (1980). The emacs version and the C
|
||
version have not kept up with one another.
|
||
|
||
Lijewski wrote "dired" in 1990, while at Cornell University Theory Center, without any
|
||
knowledge of Cracraft's "dired". The Theory Center ran on IBM VM/CMS, under which there is
|
||
a utility call "file manager". This program manages the flat VM/CMS file system and
|
||
represents the main user interface into files. The creation of "dired" eased the transition
|
||
from VM/CMS to Unix.
|
||
|
||
Lijewski's "dired" has the advantage of hindsight and C++ program development so it
|
||
promises to be written in modern syntax and very maintainable. Cracraft's "dired" was
|
||
rewritten in 1996 in ANSI C. It suffers with flaws in both design and readability, but the
|
||
features are there.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
COMMON FEATURES OF CRACRAFT'S AND LIJEWSKI'S "DIRED"
|
||
* Copy current file
|
||
* Hard link current file to another file.
|
||
* Symbolic link current file to another file.
|
||
* Unzip current file (gunzip).
|
||
* Zip current file (gzip).
|
||
* Rename current file.
|
||
* Display help.
|
||
* Cursor up one.
|
||
* Cursor down one.
|
||
* Back one page.
|
||
* Forward one page.
|
||
* Go to first file.
|
||
* Go to last file.
|
||
* Do shell command /w filename substitution.
|
||
* Search forward for file matching regular expression.
|
||
* Search reverse for file matching regular expression.
|
||
* Launch EDITOR on a file or DIRED on a directory.
|
||
* Recognize new window size and refresh screen.
|
||
* Delete current file
|
||
* Prompt for and edit a directory.
|
||
* Change the mode of the current file.
|
||
* Launch PAGER on this file.
|
||
* Sort the file list.
|
||
* Print file contents.
|
||
* Reload directory.
|
||
* Abort DIRED.
|
||
* Suspend DIRED.
|
||
* Exit immediately.
|
||
* Setup by command line, resource file or environment variable.
|
||
|
||
Minor differences exist in the implementation of these features. Cracraft's dired supports
|
||
split screen. Lijewski's dired supports scrolling by half-page. Deletes in Cracraft's dired
|
||
are done in batch whereas Lijewski's dired does them immediately.
|
||
|
||
Curiously, the common features of the two direds also account for the most often used dired
|
||
commands.
|
||
|
||
The differences between Lijewski's "dired" and Cracraft's "dired" in 1997 appear below.
|
||
Many features commonly exist in both versions, so only the superficial differences are
|
||
discussed. Strengths and weaknesses of each are also listed.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
UNIQUE FEATURES OF LIJEWSKI'S "DIRED"
|
||
* Compress current file.
|
||
* Uncompress current file.
|
||
* Change the group of the current file.
|
||
* View only files matching a regular expression.
|
||
|
||
Strengths:
|
||
* Excellent for persons with minimal Unix knowledge.
|
||
* Has a full complement of basic commands for file maintenance.
|
||
* Key configuration in resource file "~/.diredrc".
|
||
|
||
Weaknesses:
|
||
* Does file maintenance one file at a time with prompts.
|
||
* Fixed full screen format.
|
||
* No ANSI colorization to match color-ls.
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
UNIQUE FEATURES OF CRACRAFT'S DIRED 3.05
|
||
* Manual page display, DIRED 3.05 in detail.
|
||
* Key Tutor. Describe key. Execute key.
|
||
* Tag files for later processing.
|
||
* Dynamic format setup for the screen and shell commands.
|
||
* Toggle colorization of file names (4 color tables).
|
||
* Undo search and page move.
|
||
* Bookmarks.
|
||
* Abort or suspend DIRED and PUSHD to the displayed directory.
|
||
* Groff current file as a manual page.
|
||
* Type current text or binary file on terminal with pause.
|
||
* Write the formatted file list to a unique file in /tmp.
|
||
* Aliased shell commands, interactive or in resource ~/.diredset.
|
||
* Setup for shell commands attached to internal variables.
|
||
|
||
Strengths:
|
||
* Favors use by seasoned Unix people.
|
||
* Configurable screen format.
|
||
* Keys are fixed to give uniformity across different hosts.
|
||
|
||
Weaknesses:
|
||
* Key configuration is compiled into "dired" and can't be changed.
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
MISFEATURES OF BOTH VERSIONS OF "DIRED"
|
||
|
||
|
||
|
||
The program tends to be used for browsing and deleting files; users find the other features
|
||
too obtuse for daily use. Too many commands. Its hard to remember what key does which
|
||
command.
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
HOW TO GET DIRED
|
||
|
||
|
||
|
||
Find dired305.zip at http://sunsite.unc.edu/pub/Linux/. Or email to gustafson@math.utah.edu
|
||
for location of recent version.
|
||
|
||
Find Lijewski's c++ dired by sending email to lijewski@mothra.lbl.gov for location of the
|
||
recent version. If you want to see it on sunsite, then let Mike hear about it!
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Copyright © 1997, Grant B. Gustafson
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ] Back Next
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Directory Trees in Outline Format
|
||
|
||
By James T. Dennis jim@starshine.org
|
||
|
||
|
||
|
||
|
||
______________________________________________________________________________________
|
||
|
||
|
||
|
||
Since I frequently post messages to various Unix and Linux newsgroups and mailing lists I
|
||
often get technical questions mailed to me ``out of the blue.''
|
||
|
||
I recently received a request for a script to produce the following sort of output:
|
||
|
||
dir/
|
||
file1
|
||
file2
|
||
file
|
||
dir/
|
||
dir/
|
||
file
|
||
|
||
(etc)
|
||
|
||
Here was my quick and dirty solution:
|
||
|
||
find . | awk -F/ '{for (x=1;x<NF;x++) { printf "\t"}; print $NF}'
|
||
|
||
|
||
|
||
... which only does about 80% of the job. The only problem is that the directory entries
|
||
don't end with the ``/'' to indicate their file type. It was late -- so that's what I sent
|
||
him.
|
||
|
||
Here's how that works:
|
||
|
||
find . just prints a list of full paths (using GNU find). Some non-Linux users may have to
|
||
using 'find . -print' to accomplish this (or update to the GNU version on their systems).
|
||
|
||
awk is a text processing language/utility.
|
||
|
||
The -F (capital ``f'') sets a field separator to the '/' (slash character). Awk defaults to
|
||
parsing it's input into records (lines) of fields (whitespace delimited). Using the -F
|
||
allows me to tell awk to treat each record (still just lines) as a group of fields that are
|
||
separated by slashes -- allowing me to deal with each directory element as a separate
|
||
element very easily.
|
||
|
||
The next parameter to awk is a short program -- a for loop (like the C for() construct). It
|
||
iterates from 1 to NF.
|
||
|
||
NF in awk is the ``number of fields'' for each record. This, among many other values, is
|
||
preset by awk as it parses its input.
|
||
|
||
Awk defaults to reading it's input from a pipe or from each file listed after it's script
|
||
on the command line. We're supplying it with input through the pipe, of course.
|
||
|
||
In the body of my awk 'for' loop I simply print a tab for each directory named in that
|
||
line. This has the appearance of "wiping out" all of the leading directory names and
|
||
indenting my line as desired.
|
||
|
||
Finally, after the end of the for loop I simply print the last field ($NF). Note how the
|
||
printf takes a string similar to C's printf -- and it doesn't assume a newline. I could put
|
||
C-like format specifiers like %s and %f in there -- and I'd have to supply additional
|
||
parameters to the printf call if I did.
|
||
|
||
By contrast the awk print command (no trailing ``f'') does add an ORS (output record
|
||
separator) character to the end of its line and doesn't treat its first argument as a
|
||
format specification.
|
||
|
||
This evening I happened to be cleaning up my home directory (while procrastinating on doing
|
||
paying work and cleaning the house) I happened across a copy of this and decided to fix it.
|
||
|
||
find . | { while read i ;
|
||
do
|
||
[ -d $i ] \
|
||
&& echo $i/ \
|
||
|| echo $i
|
||
done } \
|
||
| awk -F/ '
|
||
/\/$/ { for (x = 1; x
|
||
|
||
Note that the original script: 'find ....| awk -F/ ...'
|
||
is mostly still there. But the script has gone from
|
||
one line to eleven -- all to get that silly little slash
|
||
character on the end of each directory name.
|
||
|
||
|
||
|
||
(If anyone as a shorter program -- I'd like to see it
|
||
-- there's probably a fairly quick way to do this using
|
||
perl and find2perl)
|
||
|
||
|
||
|
||
The main thing I've added is the while loop which works
|
||
like this:
|
||
|
||
|
||
|
||
find's output is piped into a group of commands
|
||
(that's what the braces are for).
|
||
|
||
That group of commands starts with a bash "while...
|
||
do" loop. The bash "while...do" loop works like this:
|
||
|
||
'while'
|
||
some command returns no error
|
||
'do'
|
||
some commands
|
||
'done'
|
||
|
||
Note that, unlike C or Pascal programming the
|
||
``condition'' for the while loop is actually any
|
||
command (or group of commands -- enclosed in
|
||
braces or parentheses). The fact that programs
|
||
return values (called errorlevels in DOS and
|
||
some Mainframe OS) makes all commands implicitly
|
||
``conditions.'' (Actually C allows a variety of
|
||
function calls within conditionals -- but we
|
||
won't go into that).
|
||
|
||
|
||
|
||
Note that some commands might not return values that
|
||
make any sense -- so those would not be suitable
|
||
for use with any of the conditional contexts in any
|
||
shell.
|
||
|
||
|
||
|
||
The command I'm using is bash' internal ``read''
|
||
command which just takes a variable name as an
|
||
argument. Note that I don't say ``read $i'' --
|
||
the shell would then fill the value of $i into
|
||
the command (i.e it would ``dereference'' it) and
|
||
the read command would have no arguments. If you
|
||
give the read command no argument it simply reads
|
||
a value and throws it away (no error).
|
||
|
||
|
||
|
||
When you set values in bash (or Bourne shell, or zsh
|
||
etc) you also don't ``dereference'' it. $i=foo would be
|
||
an error unless you actually wanted to set the
|
||
value of some variable -- whose name was currently stored
|
||
in $i to be set to foo.
|
||
|
||
|
||
|
||
Back to our script. When the find command stops printing
|
||
filenames into the pipe, the 'read i' command will fail
|
||
to get any value -- so the body of the do loop will be
|
||
skipped.
|
||
|
||
|
||
|
||
The 'do' keyword just marks the end of the list of
|
||
commands in the conditional section and the beginning
|
||
of the body of the loop (big surprise -- huh?).
|
||
|
||
|
||
|
||
The next three lines of the script are another common
|
||
shell construct --
|
||
1. [ is really an alias for or link to the 'test' command.
|
||
|
||
2. -d is a parameter to 'test' that is true if the next parameter ($i) is a directory.
|
||
|
||
3. That line ends with a ``\'' (backslash) to mark a continuation character. This causes
|
||
the shell to treat the next line as an extension of this one.
|
||
|
||
|
||
|
||
I could certainly have put all of this one line.
|
||
However, for readability I broke it up and formatted
|
||
it with leading tabs -- otherwise *I* couldn't read
|
||
it, much less expect anyone else to do so.
|
||
|
||
|
||
|
||
The next line (continuation) starts with the '&&'
|
||
operator. In bash and related shells you have things
|
||
like the familiar ``|'' (pipe) and ``;'' semicolon which are
|
||
called operators. This operator means ``if that last command
|
||
was O.K. -- returned no error -- then ...''
|
||
|
||
|
||
|
||
You can think of the '&&' operator as do this ``and''
|
||
to that (in the *conditional* sense of the the word
|
||
and).
|
||
|
||
|
||
|
||
The next line uses the '||' operator -- which is,
|
||
as you might expect, similar to the '&&' operator except
|
||
it means -- ``if the last command executed returned an
|
||
error then ...'' This is roughly analogous to the English
|
||
``or'' (again, it the conditional sense).
|
||
|
||
|
||
|
||
Of course I could have wrapped this in an 'if ....;
|
||
then ....; else...' construct -- but I'm used to the '&&'
|
||
and '||' as are most shell programmers.
|
||
|
||
|
||
|
||
So far all we've done is added a ``/'' character to the end
|
||
of each directory.
|
||
|
||
|
||
|
||
Now I'm left with a print out of full paths with directories ending in
|
||
``/'' (slashes) and other files printed normally -- back to replacing all
|
||
but the last thing with tabs -- so we pipe the 'while' loop's output
|
||
into the same awk script we were using before.
|
||
|
||
|
||
|
||
Ooops! Well, almost the same script -- it turns out that awk -F is
|
||
happy to consider the trailing slash as a blank field on the end of a
|
||
line. Hmm. O.K. we add an extra condition to the awk script.
|
||
|
||
|
||
|
||
An awk script consists of condition-action pairs. The most
|
||
common awk ``conditions'' are patterns. That is so say that they
|
||
are regular expressions (like the things you use grep to search
|
||
for). A pattern is usually delimited by slashes (a mnemonic to
|
||
the users of ed, later upgraded ex, later upgraded to vi) although
|
||
you can also ``match'' against strings that are enclosed in quotes.
|
||
|
||
|
||
|
||
Actions in awk are enclosed in braces.
|
||
|
||
|
||
|
||
Awk is an extremely forgiving language. If you leave out the
|
||
``condition'' or ``pattern'' it will execute the action on that
|
||
line for every record (line) that it comes across. That's
|
||
what my first script did.
|
||
|
||
|
||
|
||
If you leave off the action (i.e. if you have a line that
|
||
consists just of a condition) then awk will simply print
|
||
the record. In other words the default action is {print}.
|
||
|
||
|
||
|
||
When I was a regular in the comp.lang.awk newsgroup (and
|
||
alt.lang.awk that preceded it) I used to enjoy pointing out
|
||
that the shorted awk programs in the work are:
|
||
|
||
1
|
||
|
||
and
|
||
|
||
.
|
||
|
||
(The first one just prints every line it sees since ``1'' is
|
||
a ``true'' condition; the second program (a dot) prints every
|
||
line that has at least one character -- since that is the
|
||
regular expression for ``any character''. The second program
|
||
actually does filter out blank lines since awk doesn't count
|
||
the record separator as part of the line).
|
||
|
||
|
||
|
||
So, the modification of my awk script for this purpose is
|
||
to add a condition that handles any record that *ends* with a
|
||
slash. In those cases I convert all *but* the next-to-last field
|
||
to a tab, and print that ``next-to-last'' field. I also have to
|
||
add the ``/'' character to the end of that since awk doesn't consider
|
||
the field separator to be part of any field.
|
||
|
||
|
||
|
||
Finally I add a 'next' command which tells awk not to look
|
||
for any more pattern-action pairs with *this* record. If I
|
||
didn't do that than awk would execute the action for each
|
||
``directory'' line -- and also execute the other action for it
|
||
(i.e. it would print a blank line after printing each directory
|
||
line).
|
||
|
||
|
||
|
||
|
||
Is the extra 10 lines of code worth it just to add a slash to the end
|
||
of the directory names in our outline? Depends on how much your customer
|
||
is willing to pay -- or how much grief it causes you, your boss or your
|
||
users.
|
||
|
||
|
||
|
||
Mostly I decided to work on this as a training example. I think there are
|
||
some neat constructs that every budding shell programmer might benefit
|
||
from learning.
|
||
|
||
|
||
|
||
The ``find .... | {while read i .... do ... done}'' construct is well worth
|
||
remember for other cases. It allows you to do complex operations on
|
||
large numbers of files without resorting to writing a temporary file and
|
||
having to clean up after it.
|
||
|
||
|
||
|
||
When you write scripts that explicitly create temporary files you suddenly
|
||
have a host of new concerns -- what do I name it? where do I put it?
|
||
don't forget to remove it! do I have enough space for it? what if my
|
||
script gets interrupted? etc.
|
||
|
||
|
||
|
||
To be sure there are answers to each of these. For example I
|
||
suggest ~/tmp/$0.`date +%Y%m%d`.$$ for a generic temporary filename
|
||
for any script -- it gives the name of your script, the date in
|
||
YYYYMMDD format and the process ID of the current instance of your
|
||
script as the filename. It puts that into the temporary directory
|
||
under your home (which no one else should have access to). There is
|
||
virtually no chance of a name collision using this scheme (particularly
|
||
if you change the date format to +%s which is the total number of seconds
|
||
since midnight on Jan. 1, 1970). You can use the 'trap' command to
|
||
ensure that your temp files are cleaned in all but the most extreme
|
||
cases etc.
|
||
|
||
|
||
|
||
However, as I've said, it's worth understanding how to avoid temporary
|
||
files -- and usually your scripts will execute faster as a result.
|
||
|
||
|
||
|
||
The [ ... ] && ... || ... construct is absolutely essential to
|
||
any Unix sysadmin. Many of legacy scripts (particularly those in
|
||
/etc/rc.d/ -- or it's local equivalent) rely on these operators and
|
||
the test or '[' command.
|
||
|
||
|
||
|
||
Finally there is 'awk'. I've heard it argued that awk is a dinosaur
|
||
and that we should convert all the awk code to perl (and presumably most
|
||
of the Bourne shell and sed code with it). I won't argue that point
|
||
here. Suffice it to say that anything you learn how to do in awk will
|
||
just make learning perl that much easier when you get to it. awk is a
|
||
much simpler language and is phenomenally easy to integrate into shell scripts
|
||
(as you can see here).
|
||
|
||
|
||
|
||
Jim Dennis, Starshine Technical Services
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, James T. Dennis
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!"
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Welcom to the Graphics Muse
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Set your browser to the width of the line below for best viewing.
|
||
|
||
|
||
|
||
|
||
© 1996 by
|
||
mjh
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-->
|
||
|
||
Button Bar
|
||
|
||
|
||
|
||
-->
|
||
|
||
|
||
muse:
|
||
1. v; to become absorbed in thought
|
||
2. n; [ fr. Any of the nine sister goddesses of learning and the arts in Greek Mythology
|
||
]: a source of inspiration
|
||
|
||
W elcome
|
||
|
||
to the Graphics Muse! Why a "muse"?
|
||
|
||
Well, except for the sisters aspect, the above definitions are
|
||
|
||
pretty much the way I'd describe my own interest in computer graphics:
|
||
|
||
it keeps me deep in thought and it is a daily source of inspiration.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[Graphics Mews]
|
||
[Musings]
|
||
[Resources]
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
T his
|
||
column is dedicated to the use, creation, distribution, and dissussion of
|
||
computer graphics tools for Linux systems.
|
||
|
||
|
||
|
||
|
||
Last month I had promised to do a review of Keith Rule's new book on
|
||
3D File Formats this month. I'll also said there would be a section
|
||
on adding fonts on Linux in last months colums. Ok, I'm a liar.
|
||
First, I decided that although Keith's book deserves some examination
|
||
I felt that another
|
||
book, Mark Kilgard's OpenGL text, had a more direct bearing on Linux
|
||
users. I'll consider taking a look at Keith's book some time in the
|
||
future.
|
||
|
||
|
||
|
||
|
||
Second, I had quite a bit of other material for January's column so
|
||
had decided to move the font discussion to February's column. However,
|
||
I forgot to update the introduction in January's column to reflect
|
||
this change. My apologies.
|
||
|
||
|
||
|
||
|
||
Now for the bad news: I had a major system crash on the 16th of
|
||
January which first of all caused me over a week of grief trying
|
||
to recover and second caused the loss of a large number of files.
|
||
No, I wasn't doing backups. So shoot me. I managed to recover an
|
||
earlier copy of this months Muse column from a laptop I have, but
|
||
I lost a good portion of what I'd already done. Now, as I write this,
|
||
I have 3 days to get the column done and uploaded. The result is
|
||
that the book review and a number of other items will have to be put
|
||
off till another time.
|
||
|
||
|
||
|
||
|
||
So, does anyone have a decent tape backup system that can run on
|
||
ftape drives?
|
||
|
||
|
||
|
||
|
||
|
||
In this months column I'll be covering, along with how to add fonts to
|
||
your system:
|
||
* a GIF Animations update: the MultiGIF program
|
||
* some Printer info I gathered in the past month
|
||
* tkPOV V2.0 - a graphical front end to POV-Ray 3.0
|
||
|
||
|
||
|
||
|
||
NOTE:
|
||
I lost all my old email and mail aliases when my system went down. If
|
||
you have been in touch with me in the past and want to stay in touch
|
||
please send me some email
|
||
(mjhammel@csn.net)! I'm particularly interested in hearing from
|
||
Paul Sargent, who was helping me with my look into BMRT. I lost
|
||
your email address Paul, along with all the messages we'd exchanged on
|
||
the BMRT article series! Write me (or if you know Paul, please have
|
||
him contact me)!
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Graphics Mews
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Disclaimer:
|
||
Before I get too far into this I should note that any of the news items I
|
||
post in this section are just that - news. Either I happened to run
|
||
across
|
||
them via some mailing list I was on, via some Usenet newsgroup, or via
|
||
email from someone. I'm not necessarily endorsing these products (some of
|
||
which may be commercial), I'm just letting you know I'd heard about
|
||
them in the past month.
|
||
|
||
|
||
xfig 3.2.0 Beta available
|
||
|
||
|
||
|
||
|
||
|
||
Xfig is a menu-driven tool that allows the user to draw
|
||
|
||
|
||
and manipulate objects interactively in an X window. The
|
||
|
||
|
||
resulting pictures can be saved, printed on postscript
|
||
|
||
|
||
printers or converted to a variety of other formats (e.g. to
|
||
|
||
|
||
allow inclusion in LaTeX documents).
|
||
|
||
|
||
|
||
|
||
|
||
xfig is available on ftp.x.org in
|
||
|
||
/contrib/applications/drawing_tools/xfig.
|
||
You also need a JPEG library, which can be found in /contrib/libraries.
|
||
and TransFig version 3.2.0-beta1. TransFig contains the postprocessor
|
||
needed by xfig to convert fig files to one of several output formats,
|
||
such as PostScript, pic, LaTeX etc. The TransFig package is in the
|
||
directory
|
||
|
||
/contrib/applications/drawing_tools/transfig.
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
indent
|
||
|
||
|
||
Alexander Zimmermann has uploaded another update to his ImageMagick package.
|
||
|
||
|
||
|
||
|
||
|
||
ImageMagick (TM), version 3.7.9, is a package for display and
|
||
|
||
|
||
interactive manipulation of images for the X Window System.
|
||
|
||
|
||
The package has been uploaded to sunsite.unc.edu:/pub/Linux/Incoming
|
||
|
||
|
||
as:
|
||
|
||
|
||
* ImageMagick-3.7.9-elf.lsm
|
||
* ImageMagick-3.7.9-elf.tgz
|
||
|
||
|
||
|
||
|
||
|
||
ImageMagick supports also the Drag-and-Drop protocol form the
|
||
OffiX package and many of the more popular image formats including
|
||
JPEG, MPEG, PNG, TIFF, Photo CD, etc.
|
||
|
||
|
||
|
||
|
||
You will also need the package libIMPlugIn-1.0-elf to get it working.
|
||
These can be retrieved from
|
||
|
||
ftp.wizards.dupont.com
|
||
|
||
|
||
|
||
/pub/ImageMagick/binaries.
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
World Movers, the first VRML 2.0 Developer Conference
|
||
|
||
|
||
|
||
|
||
|
||
I received the following information via email (unsolicited, but
|
||
|
||
|
||
its probably the first time I got something I found really
|
||
|
||
|
||
interesting via a blind email post). Note that I have nothing
|
||
|
||
|
||
to do with this conference, other than I wish they'd invite me to go -
|
||
|
||
|
||
expenses paid, of course:
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
World Movers, the first VRML 2.0 Developer Conference, will be held on
|
||
January 30 and 31 at the ANA Hotel in San Francisco, CA.
|
||
|
||
|
||
At World Movers you will:
|
||
|
||
* Select from sessions in three key tracks over two days
|
||
+ Content Creation
|
||
+ Business Applications of VRML
|
||
+ Future Directions and Current Technologies
|
||
* Learn how to create great VRML 2.0 content and applications
|
||
* See and learn about real applications that use VRML
|
||
* Find out about the latest tools for VRML 2.0
|
||
|
||
|
||
|
||
|
||
|
||
With a pan-industry advisory board and a wide array of hosts and
|
||
participants, World Movers will give you a complete picture of VRML 2.0
|
||
content and applications from all perspectives.
|
||
|
||
|
||
|
||
|
||
Register by calling (800)488-2883 or (415)578-6900, or go online at
|
||
|
||
http://www.worldmovers.org.
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
PNG Magick Plug-in 0.8
|
||
|
||
|
||
|
||
|
||
|
||
There is a new plug-in for Unix/Linux versions of Netscape called
|
||
|
||
|
||
PNG Magick Plug-in 0.8. This plug-in supports
|
||
|
||
|
||
the following file formats:
|
||
|
||
|
||
PNG, XPM, TIFF, MIFF, TGA, BMP, PBM, PGM, PPM, PNM, PCX,
|
||
|
||
|
||
FITS, XWD, GIF, JPEG, WAV and MPEG-1. It is reported to support
|
||
|
||
|
||
Drag and Drop capabilities as well.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
For MPEG-1 support you need the Xew library which doesn't seem
|
||
to work well with the Linux version of this plug-in.
|
||
|
||
|
||
|
||
|
||
PNG Magick Plug-in 0.8
|
||
is published under the GNU General public License and is available at
|
||
|
||
http://home.pages.de/~rasca/pngplugin/.
|
||
|
||
|
||
|
||
indent
|
||
|
||
indent
|
||
|
||
|
||
TkFont v1.1
|
||
|
||
|
||
|
||
|
||
|
||
There is a new tool for viewing fonts on Linux. I haven't tried
|
||
|
||
|
||
this yet so I don't know how well it works. It has been uploaded
|
||
|
||
|
||
to
|
||
|
||
tsx-11.mit.edu in the /incoming directory.
|
||
The file-name is `tkfont-1.1.tar.gz'.
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
Version 0.1.8 of Lib3d is now available from Sunsite.
|
||
|
||
|
||
|
||
|
||
|
||
Lib3d is a high performance 3d C++ library distributed under the GNU
|
||
|
||
|
||
LGPL. Lib3d implements sub-affine texture mapping, Gouraud shading
|
||
|
||
|
||
and Z-buffer rasterization, with support for X11, DGA, SvgaLib and DOS.
|
||
|
||
|
||
|
||
|
||
|
||
Lib3d is available from
|
||
|
||
ftp://sunsite.unc.edu/pub/Linux/Incoming/lib3d-0.1.8.tar.gz
|
||
|
||
|
||
|
||
|
||
For more information:
|
||
|
||
http://www.ozemail.com.au/~keithw
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
CFP: ACM SIGGRAPH 97 Sketches Program
|
||
|
||
|
||
Deadline: April 16, 1997
|
||
|
||
|
||
|
||
|
||
|
||
The following was posted in a number of places. I got it via a
|
||
friend on the Gimp User mailing list. I have no association with
|
||
SIGGRAPH (unfortunately) so can offer no other details than the
|
||
following:
|
||
|
||
|
||
|
||
|
||
SKETCHES are live, 15 minute presentations that provide a forum for
|
||
unique, interesting ideas and techniques in computer graphics.
|
||
Sketches allow the presentation of late-breaking results, works in
|
||
progress, art, design, and innovative uses and applications of
|
||
graphics techniques and technology. Sketch abstracts will be published
|
||
in the Visual Proceedings.
|
||
|
||
|
||
|
||
Sketches are a fun, educational, high-profile way to show your work
|
||
and creations. We are seeking submissions in four areas:
|
||
|
||
* Animations
|
||
* Applications
|
||
* Art and Design
|
||
* Technical
|
||
|
||
|
||
|
||
For more information, see the SIGGRAPH 97 Call for Participation, send
|
||
|
||
email to
|
||
|
||
|
||
sketches.s97@siggraph.org,
|
||
or for the latest, most
|
||
comprehensive information on how to submit to Sketches and other
|
||
SIGGRAPH 97 programs, including supplemental documents, please go to:
|
||
|
||
http://www.siggraph.org/s97/.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
To request a copy of the Call for Participation, contact:
|
||
|
||
|
||
SIGGRAPH 97 Conference Management
|
||
|
||
Smith, Bucklin & Associates, Inc.
|
||
|
||
401 North Michigan Avenue
|
||
|
||
Chicago, Illinois 60611 USA
|
||
|
||
+1.312.321.6830
|
||
|
||
+1.312.321.6876 fax
|
||
|
||
|
||
|
||
siggraph97@siggraph.org
|
||
|
||
|
||
|
||
DEADLINES:
|
||
|
||
16 April 1997
|
||
|
||
5 pm Eastern Daylight Time
|
||
|
||
Final Sketch proposals
|
||
|
||
|
||
To discuss your concepts and ideas for Sketches, contact:
|
||
|
||
|
||
David S. Ebert
|
||
|
||
SIGGRAPH 97 Sketches Chair
|
||
|
||
University of Maryland Baltimore County
|
||
|
||
CSEE Department ECS-210
|
||
|
||
1000 Hilltop Circle
|
||
|
||
Baltimore, Maryland 21250 USA
|
||
|
||
+1.410.455.3541
|
||
|
||
+1.410.455.3969 fax
|
||
|
||
|
||
|
||
sketches.s97@siggraph.org
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
indent
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
Did You Know?
|
||
|
||
|
||
|
||
|
||
|
||
The
|
||
|
||
|
||
|
||
VRML 2.0 Specification, Moving Worlds
|
||
from SGI, provides for
|
||
"spatial audio"? This is a definition of how sound is played
|
||
in relationship to your point in space and distance from an object
|
||
which has a sound attached to it. The O2 system from SGI has
|
||
a VRML browser which was demonstrated on Part 2 of PC-TV's series
|
||
on Unix which covered commercial Unix options. Part 3 of this
|
||
series started airing at the end of January and is devoted to
|
||
our favorite OS - Linux!
|
||
|
||
|
||
|
||
|
||
|
||
There is a wonderful description on using color palettes with
|
||
Web pages at
|
||
|
||
http://www.adobe.com/newsfeatures/palette/main.html. The page
|
||
is a reprinted article by Lisa Lopuck from Adobe Magazine and is
|
||
quite detailed. Check it out!
|
||
|
||
|
||
|
||
|
||
|
||
Have you been thinking about using POV-Ray 3.0's new caustics
|
||
feature? Are you unsure exactly what it does? Want to learn all
|
||
about it? Then check out
|
||
|
||
The Caustic Tutorial for POV. This is a very detailed
|
||
explanation on what caustics are and how to use them.
|
||
Briefly,
|
||
|
||
caustics are formed when light is either focused or dispersed due to passing through
|
||
media with different indices of refraction. Bright spots in the shadows are where light
|
||
is focused and dark spots are where the light has been dispersed.
|
||
Thanks to
|
||
|
||
Paul R. Rotering for this description (taken from the IRTC-L
|
||
mailing list).
|
||
|
||
|
||
|
||
Q and A
|
||
|
||
|
||
|
||
Q: What is displacement mapping?
|
||
|
||
|
||
|
||
A: Displacement mapping is not only the perturbing of the surface
|
||
normal of an object, like a bump maps do, but in fact a distorting
|
||
of the object itself. You can think of it
|
||
as a height field over an arbitrary surface. The latest version of
|
||
|
||
BMRT is reported to support displacement maps. Few other
|
||
publicly available renderers provide this feature.
|
||
|
||
|
||
|
||
|
||
Q:
|
||
I have just downloaded the complete batch of plug-ins from the
|
||
"Plug-in Registry", and noticed that the "interpolate",
|
||
"lightest" and "darkest" plug-ins appear to do the same thing
|
||
as the "blend",
|
||
"add" and "multiply" channel ops respectively. Is this correct, or is
|
||
there some difference under certain circumstances?
|
||
|
||
|
||
|
||
|
||
A:
|
||
Not exactly. Blend uses integer values and restricts you to
|
||
interpolation. Interpolate/Extrapolate uses floating point values and
|
||
does not restrict the range of the blending value --- you can do
|
||
extrapolation, too (look at my home page for some examples):
|
||
|
||
|
||
|
||
|
||
http://www.nuclecu.unam.mx/~federico/gimp
|
||
|
||
|
||
Lightest and Darkest pick the lightest and darkest pixels from two
|
||
images. It is not the same as add and multiply except for bilevel
|
||
images.
|
||
|
||
|
||
|
||
|
||
Both of these questions were answered by Mena Quintero Federico,
|
||
aka Quartic, on the Gimp User mailing list.
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
indent
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Musings
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
GIF animations update: MultiGIF
|
||
|
||
|
||
|
||
|
||
|
||
After my first column (Linux Gazette, issue 12),
|
||
|
||
|
||
Greg Roelofs
|
||
wrote me to tell me about another tool for creating animated
|
||
GIF images. Andy Wardley's
|
||
MultiGIF
|
||
allows the use of sprite images as part of the animation. Sprite
|
||
images are like small sections of an image. Instead of
|
||
creating a series of GIF images that are all the same size and simply
|
||
appending each one at the end of the other (as WhirlGIF does) the user can
|
||
create an initial image along with a series of smaller images that are
|
||
positioned at offsets from the upper left corner of the full image.
|
||
|
||
|
||
|
||
|
||
By using sprites (I'm not completely sure what a sprite
|
||
really is, but Greg used this term and it appears similar to other
|
||
uses I've seen - someone correct me if its not the correct use of
|
||
the term) the GIF animator can reduce the file size anywhere from
|
||
a factor of two to a factor of 20 in size. As proof, Greg offered
|
||
his animated
|
||
|
||
PNG-balls, which went from 577k to 233k in size.
|
||
Another animation, a small horizontally oscillating "Cylon eyes"
|
||
(referring to the old Battlestar Gallatica metal menace), provided
|
||
a savings of a factor of 20.
|
||
|
||
|
||
|
||
|
||
MultiGIF comes with C source code and is shareware. Andy only asks
|
||
that you provide a donation if you find you are using it frequently.
|
||
There is also a utility called gifinfo which can be used to identify
|
||
GIF files, including multiframe GIF animations.
|
||
|
||
|
||
|
||
|
||
Both WhirlGIF and MultiGIF come with fairly decent documentation
|
||
describing how to use the various command line options. About the
|
||
only thing that might be missing is why you would use one option over or in
|
||
conjunction with another, but thats a minor point. I find the use of
|
||
sprites with MultiGIF and its smaller output files more useful to me.
|
||
However, new users who are not quite familiar with how to create sprites
|
||
(including transparency) with tools like the Gimp might prefer the simpler
|
||
WhirlGIF.
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Adding Fonts to your system
|
||
|
||
|
||
|
||
|
||
|
||
Fonts are used extensively for creating graphics images.
|
||
|
||
|
||
Many of the graphics on my Web pages and in the
|
||
|
||
|
||
Graphics Muse use fonts I've installed from
|
||
|
||
|
||
collections of fonts on commercial CDs.
|
||
|
||
|
||
Fonts are also used for ordinary text in X applications, from
|
||
|
||
|
||
the fonts in your xterm to the title bars provided by your
|
||
|
||
|
||
window manager to the pages displayed by xman.
|
||
|
||
|
||
The difference is hard to distinguish, but
|
||
|
||
|
||
whether used for ordinary text or to create
|
||
|
||
|
||
outrageous graphics, adding fonts to your system and letting
|
||
|
||
|
||
your X server know about them is the first step .
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Just so you know: nearly all X applications accept the "-fn"
|
||
and/or "-font" command line arguments. This is a feature built into
|
||
the X Windows API. How this is used depends on the application. For
|
||
xterms, just use "-fn " to specify the font used in the
|
||
xterm window. This does not specify what font to use for the xterm
|
||
title bar. That is controlled by the window managers X resources.
|
||
|
||
|
||
|
||
|
||
To know what fonts are available on your system you can look
|
||
under the font directories for fonts.alias files. There is supposed to be
|
||
one of these in each directory under
|
||
|
||
/usr/X11R6/lib/X11/fonts,
|
||
but whether there is or not depends on the distribution you're using.
|
||
The name to use is the
|
||
name on the left. For example, under
|
||
|
||
/usr/X11R6/lib/X11/fonts/misc,
|
||
in the file fonts.alias there is the following line:
|
||
|
||
|
||
|
||
|
||
5x7
|
||
|
||
|
||
|
||
-misc-fixed-medium-r-normal-
|
||
|
||
-7-70-75-75-c-50-iso8859-1
|
||
|
||
|
||
To use this font with xterms I would do:
|
||
|
||
|
||
|
||
|
||
xterm -fn 5x7
|
||
|
||
|
||
|
||
You can actually use the string on the right, but unless you understand
|
||
how fonts are defined you probably don't want to do this.
|
||
|
||
|
||
|
||
|
||
I don't want this to turn into an X Windows column. There are other
|
||
places for such discussions, and I'm sure LG could use a regular
|
||
columnist for X. But this column is about computer graphics so
|
||
this is all I'm going to say about using fonts in X applications
|
||
from the X resources standpoint. In any case, since the X server
|
||
is being used to handle the fonts, adding fonts to
|
||
your system is the same whether you use them for graphics or as
|
||
X resources.
|
||
|
||
|
||
|
||
|
||
Suppose you had a font called westerngoofy that you
|
||
wanted to use in the Gimp as the start
|
||
of some neat title graphic for a Web page.
|
||
By default there isn't an entry in any of the fonts.alias files
|
||
for westerngoofy, so when you use the text tool in the Gimp
|
||
it won't show up in the list of available fonts.
|
||
There are 3 steps to making this font available for use with the
|
||
Gimp:
|
||
* Grab the fonts and place them in a local directory
|
||
* Configure that directory for use as a font directory
|
||
* Tell the X server about this new font directory
|
||
|
||
|
||
|
||
|
||
The first part is simple - grab a copy of the font file and put it
|
||
|
||
in some directory. Make sure you've uncompressed it if the archive
|
||
|
||
you retrieved the file from compresses the fonts. Most X servers
|
||
|
||
don't understand compressed fonts (some do, but all understand
|
||
|
||
uncompressed fonts). The directory can be owned by anyone. It does
|
||
|
||
not have to be a directory under the system fonts directories
|
||
|
||
(generally these are under
|
||
|
||
|
||
/usr/X11R6/lib/X11/fonts). On my system I have a "src/X11"
|
||
|
||
|
||
|
||
|
||
|
||
-Top of next column-
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
indent
|
||
|
||
indent
|
||
|
||
|
||
|
||
|
||
|
||
|
||
More Musings...
|
||
* Printer Info - my journey into color printing
|
||
* tkPOV V2.0 - a graphical front end to POV-Ray 3.0
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
|
||
|
||
indent
|
||
|
||
|
||
|
||
directory under my home directory. Under this I created a "fonts"
|
||
directory where I put new fonts that I find. If you are the owner
|
||
of your system and have root access you might want to put the fonts
|
||
under /usr/local/fonts or someplace similar.
|
||
|
||
|
||
|
||
|
||
Note that since TrueType fonts are not supported by default by most
|
||
X servers we won't concern ourselves with how to use them here. The
|
||
font format you should be using are Type1 fonts. There are plenty
|
||
of places to get these, including numerous CD-ROMs available from
|
||
any decent computer software stores. Some online resources are
|
||
listed in the
|
||
|
||
Linux Graphics mini-Howto under the "Other Topics" section.
|
||
|
||
|
||
|
||
|
||
Next you need to configure your new fonts directory so that the
|
||
X server can provide you FontName-to-File mappings. To do this you
|
||
need to get hold of a little Perl script called
|
||
|
||
type1inst,
|
||
which is short for "Type 1 Install". This script is easy to use and comes
|
||
with documentation explaining what you about to do. Basically,
|
||
you run the script to create a couple of files, fonts.alias and
|
||
fonts.dir, which the X server uses to associate a fonts name to
|
||
the font file. You can also use mkfontdir, but I like
|
||
type1inst
|
||
better. mkfontdir doesn't always seem to be available
|
||
on all platforms and finding a binary version (or even source)
|
||
has never been easy for me (I think its buried in the X11 source
|
||
tree, which I really don't want to download just for one program).
|
||
|
||
|
||
|
||
|
||
The last step is to let the X server know about the new font
|
||
directory. The xset command allows a user to configure
|
||
a number of options for the X server. One of these options is
|
||
the paths to search for font files. The format of the command
|
||
is as follows:
|
||
|
||
|
||
|
||
|
||
|
||
xset fp+ <path>
|
||
|
||
|
||
|
||
|
||
The fp option is used to modify the font path. The plus
|
||
sign is used to add a font path. Because the plus sign is after
|
||
the fp the font path specified will be appended to the
|
||
current list of paths, if any. Using +fp would prepend
|
||
the new path to the front of the current list. There are other
|
||
possibilities. Running
|
||
|
||
|
||
|
||
|
||
|
||
xset -?
|
||
|
||
|
||
|
||
|
||
will provide a thorough list of options. The man page for xset
|
||
also contains good descriptions of the options.
|
||
|
||
|
||
|
||
|
||
Now that the server knows where to look, it has to be told to
|
||
go ahead and check for fonts in the new directories. The
|
||
rehash option to xset does this. Simply run
|
||
|
||
|
||
|
||
|
||
|
||
xset rehash
|
||
|
||
|
||
|
||
|
||
and your new fonts are ready for use!
|
||
|
||
|
||
|
||
|
||
Of course, once you've installed the fonts in a directory and
|
||
run type1inst you can put the xset commands in your
|
||
.xinitrc file so they are run every time you start up your X
|
||
environment (such as with the startx script). This is what
|
||
I do so that I always have access to the set of fonts I've installed
|
||
from CD-ROMs or from font archives from the net.
|
||
|
||
|
||
|
||
|
||
Thats all there is to it. You should now be able to use your fonts
|
||
with tools like the Gimp or XPaint in order to create lots of
|
||
interesting logos for Web pages. Enjoy!
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Resources
|
||
|
||
|
||
|
||
|
||
|
||
|
||
The following links are just starting points for finding more information
|
||
about computer graphics and multimedia in general for Linux systems. If
|
||
you have some application specific information for me, I'll add them to my
|
||
other pages or you can contact the maintainer of some other web site. I'll
|
||
consider adding other general references here, but application or site
|
||
specific information needs to go into one of the following general
|
||
references and not listed here.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Linux Graphics mini-Howto
|
||
|
||
|
||
|
||
|
||
|
||
Unix Graphics Utilities
|
||
|
||
|
||
|
||
|
||
|
||
Linux Multimedia Page
|
||
|
||
|
||
|
||
|
||
|
||
Some of the Mailing Lists and Newsgroups I keep an eye on and where I get alot
|
||
of the information in this column:
|
||
|
||
|
||
|
||
|
||
The Gimp User and Gimp Developer Mailing Lists.
|
||
|
||
The IRTC-L discussion list (I'll get an address next month).
|
||
|
||
|
||
comp.graphics.rendering.raytracing
|
||
|
||
|
||
comp.graphics.rendering.renderman
|
||
|
||
|
||
comp.os.linux.announce
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Future Directions
|
||
|
||
|
||
|
||
Next month:
|
||
* BMRT Part I: An Introduction - creating a simple scene and rendering it
|
||
* Scanner Info
|
||
* Height Fields with HF-Lab
|
||
* Review: TkPOV - a POV-Ray scene file editor
|
||
* Book Review: OpenGL Programming for the X Window System
|
||
|
||
|
||
|
||
Let me know what you'd like to hear about!
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Michael J. Hammel
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Linus Torvalds to Receive Annual UniForum Award
|
||
|
||
By Richard Shippee, dick@uniforum.org
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Fri, 31 Jan 1997
|
||
|
||
Linus Torvalds, considered the "Father of the LINUX Operating System",
|
||
has been selected by the UniForum Board of Directors to receive The UniForum
|
||
Award. The Award will be presented to Torvalds on Thursday, March 13th, as
|
||
part of the morning Keynote Session at UniForum '97, being held at the Moscone
|
||
Convention Center in San Francisco.
|
||
|
||
|
||
|
||
|
||
|
||
The UniForum Award, presented annually since 1983, goes to individuals or
|
||
groups whose work has significantly advanced the cause of open systems over
|
||
time, or has had an immediate and positive impact on the industry with long
|
||
term ramifications. The UniForum Board of Directors considered a number of
|
||
nominees for this year's awards, and voted unanimously in their selection of
|
||
Linus Torvalds for his breakthrough work on the LINUX kernel and for his
|
||
pioneering efforts in making his work available at little or no cost to anyone
|
||
wishing to develop on it.
|
||
|
||
|
||
|
||
Linus Torvalds is the creator and chief architect of the Linux operating
|
||
system. At the University of Helsinki in the spring of 1991, frustrated
|
||
with the price of
|
||
Unix operating systems, Torvalds began writing some software code to handle
|
||
certain computing chores on the 386.
|
||
"I noticed that this was starting to be an operating system," he
|
||
says.
|
||
Since then, he has traveled all over the world promoting Linux.
|
||
Although developing Linux has been almost a full-time job for him,
|
||
he recently accepted a job at Transmeta in Santa Clara, California.
|
||
He and Tovi Monni recently celebrated the birth of their baby daughter,
|
||
Patricia Miranda Torvalds.
|
||
|
||
|
||
|
||
|
||
The UniForum Board also selected a second Award winner this year: James
|
||
Gosling of JavaSoft, and his development team, for their work on Java. Gosling
|
||
will receive his Award at the Wednesday, March 12th Keynote session at
|
||
UniForum '97.
|
||
|
||
|
||
|
||
The Award presentation to Linus Torvalds, at the Thursday Keynote session, is
|
||
open to all free of charge but requires attendees to register for UniForum
|
||
'97. Registrants may also visit the exhibits floor which features booths from
|
||
a number of LINUX vendors including Comtrol, LINUX International; SSC,
|
||
publishers of Linux Journal; Red Hat Software and Work Group Solutions. To
|
||
view the entire UniForum '97 Conference and Trade Show brochure, and to
|
||
register on-line, please go to
|
||
http://www.uniforum97.com/.
|
||
|
||
|
||
|
||
For additional information contact:
|
||
|
||
Richard Shippee, Director of Communications, UniForum
|
||
408-986-8840, ext 17, dick@uniforum.org
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Richard Shippee
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Linux Security 101
|
||
|
||
By Marsala, mars@loeffel.txdirect.net
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
You can jump down to the section on tcpd
|
||
|
||
Or take a peek at the other stuff you need to keep an
|
||
eye on.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Ok. You've got Linux beat. You finally got AfterStep set up the way you want
|
||
it, you've managed to set up ip masquerading for your home LAN, you've managed
|
||
to set up a cool issue for people to see when they log in, you managed to
|
||
convert a couple over to the One True OS, and chicks really dig you because,
|
||
as we all know, Linux geeks are sexy.
|
||
|
||
|
||
|
||
One night as you're peeking at /var/adm/messages, you notice that
|
||
someone from some place you've never heard of before tried to make 5 ftp
|
||
connections, 6 telnets, and even an nntp connection. What's up with that?
|
||
|
||
|
||
|
||
Well, Linux (and all Unix type OS's in general) were designed to be a
|
||
programmer's paradise. The same qualities that makes Linux such a wonderful
|
||
networking and hacking operating system also expose a few security holes.
|
||
There are a few programs that you probably rely on or use daily that can be
|
||
used to gain root access (which is a Bad Thing). What's worse, the commercial
|
||
distributions that many Linux users depend on have these programs with
|
||
security holes inside packages that are installed as part of the base
|
||
system.
|
||
|
||
|
||
|
||
That's the bad news. The good news is that we can make it tougher for the
|
||
Bad Guys to do their dirty deeds. By checking the
|
||
Linux ALERTS
|
||
page, you can find out what the holes we know about are, and how to
|
||
temporarily plug them up or even fix them up for good. There is also a nice
|
||
little tool that is probably on your system that we can use to keep them
|
||
from even having access to our machine.
|
||
|
||
|
||
|
||
And that's what I'm going to focus on. My belief here is that if we can
|
||
keep the Remote Bad Guys (people who don't have legitimate access to our
|
||
machines) out, then we only have to worry about the Local Bad Guys (if any).
|
||
Plus it gives us a chance to fix anything on our machine that is a security
|
||
hole the RBG's can use.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
tcpd
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
There's a daemon that's probably been installed on your machine that you don't
|
||
know about. Or at least, you're not aware of what it can do. It's called
|
||
tcpd, and it's how we shut off access to some of the basic services
|
||
that the Bad Guys can use to get on our system.
|
||
|
||
|
||
|
||
Since tcpd can be pretty complex, I'm not going to go into all the
|
||
details and tell you how to do the fancy stuff. The goal here is to keep the
|
||
mischievous gibbons from knocking down what it took so long for use to set
|
||
up.
|
||
|
||
|
||
|
||
tcpd is called into action from another daemon, inetd, whenever
|
||
someone tries to access a service like in.telnetd, wu.ftpd, in.fingerd,
|
||
in.rshd, etc. tcpd's job is to look at two files and determine if
|
||
the person who is trying to access the service has permission or not.
|
||
|
||
|
||
|
||
The files are /etc/hosts.allow and /etc/hosts.deny. Here's
|
||
how it all works:
|
||
|
||
|
||
|
||
1. Someone tries to use a service that tcpd is monitoring.
|
||
2. tcpd wakes up, and makes a note of the attempt to the syslog.
|
||
3. tcpd then looks hosts.allow
|
||
+ if it finds a match, tcpd goes back to sleep and lets the user access the service.
|
||
4. tcpd now takes a look at hosts.deny
|
||
+ if it finds a match, tcpd closes the user's connection
|
||
5. If it can't find a match in either file, or if both files are empty, tcpd shrugs,
|
||
guesses it's OK to let the user on, and goes back to sleep.
|
||
|
||
|
||
|
||
Now, there are a couple of things to note here. First, if you haven't edited
|
||
hosts.allow or hosts.deny since you installed Linux, then
|
||
tcpd assumes that you want to let everyone have access to your machine.
|
||
The second thing to note is that if tcpd finds a match in
|
||
hosts.allow, it stops looking. In other words, we can put an entry
|
||
in hosts.deny and deny access to all services from all machines, and
|
||
then list ``friendly'' machines in the hosts.allow file.
|
||
|
||
|
||
|
||
Let's take a look at the man page. You'll find the info you need by typing
|
||
man 5 hosts_access (don't forget the 5 and the underscore).
|
||
|
||
|
||
|
||
|
||
daemon_list : client_list
|
||
|
||
daemon_list is a list of one or more daemon process names
|
||
or wildcards
|
||
|
||
client_list is a list of one or more host names, host
|
||
addresses, patterns or wildcards that will be matched
|
||
against the remote host name or address.
|
||
|
||
List elements should be separated by blanks and/or commas.
|
||
|
||
|
||
|
||
|
||
Now, if you go take a look at the man page, you'll notice that I didn't show
|
||
you everything that was in there. The reason for that is because the extra
|
||
option (the shell_command) can be used to do some neat stuff, but *most
|
||
Linux distributions have not enabled the use of this option in their tcpd
|
||
binaries*. We'll save how to do this for an article on tcpd itself.
|
||
|
||
|
||
|
||
If you absolutely have to have this option, get the source from
|
||
|
||
here and recompile.
|
||
|
||
|
||
|
||
Back to business. What the above section from the hosts_access man
|
||
page was trying to say is that the format of
|
||
hosts.[allow|deny] is made up of a list of services and
|
||
a list of host name patterns, separated by a ``:''
|
||
|
||
|
||
|
||
You'll find the name of the services you can use by looking in your
|
||
/etc/inetd.conf...they'll be the ones with /usr/sbin/tcpd
|
||
set as the server path.
|
||
|
||
|
||
|
||
The rules for determining host patterns are pretty simple, too:
|
||
|
||
|
||
|
||
* if you want to match all hosts in a domain, put a ``.'' at the front.
|
||
+ Ex: .bar.com will match "foo.bar.com", "sailors.bar.com", "blue.oyster.bar.com",
|
||
etc.
|
||
|
||
|
||
* if you want to match all IPs in a domain, put a "." at the end.
|
||
+ Ex: 192.168.1. will match "192.168.1.1", "192.168.1.2", "192.168.1.3", etc.
|
||
|
||
|
||
|
||
And finally, there are some wildcards you can use:
|
||
* ALL matches everything. If in daemon_list, matches all daemons; if in client_list, it
|
||
matches all host names.
|
||
+ Ex: ALL : ALL would match any machine trying to get to any service.
|
||
|
||
|
||
* LOCAL matches host names that don't have a dot in them.
|
||
+ Ex: ALL : LOCAL would match any machine that is inside the domain or search
|
||
aliases given in your /etc/resolv.conf
|
||
|
||
|
||
* except isn't really a wildcard, but it comes in useful. It excludes a pattern from the
|
||
list.
|
||
+ Ex: ALL : ALL except .leetin-haxor.org would match all services to anyone who is
|
||
not from ``*.leetin-haxor.org''
|
||
|
||
|
||
|
||
Ok. Enough technical stuff. Let's get to some examples.
|
||
|
||
|
||
|
||
Let's pretend we have a home LAN, and a computer for each member of the family.
|
||
|
||
|
||
|
||
Our home network looks like this:
|
||
|
||
|
||
|
||
|
||
linux.home.net 192.168.1.1
|
||
dad.home.net 192.168.1.2
|
||
mom.home.net 192.168.1.3
|
||
sis.home.net 192.168.1.4
|
||
bro.home.net 192.168.1.5
|
||
|
||
|
||
|
||
|
||
Now, since no one in the family is likely to try and ``hack root,'' we can
|
||
assume they're all friendly. But....we're not so sure about the rest of
|
||
the people on the Internet. Here's how we go about setting things up so
|
||
people on home.net have full access to our machine, but no one else does.
|
||
|
||
|
||
|
||
In /etc/hosts.allow:
|
||
|
||
|
||
|
||
|
||
# /etc/hosts.allow for linux.home.net
|
||
|
||
ALL: .home.net
|
||
|
||
|
||
|
||
|
||
And in /etc/hosts.deny
|
||
|
||
|
||
|
||
|
||
# /etc/hosts.deny for linux.home.net
|
||
|
||
ALL : ALL
|
||
|
||
|
||
|
||
|
||
Since tcpd looks at hosts.allow first, we can safely deny
|
||
access to all services for everybody. If tcpd can't match the machine
|
||
sending the request to ``*.home.net'', the connection gets refused.
|
||
|
||
|
||
|
||
Now, let's pretend that Mom has been reading up on how Unix stuff works,
|
||
and she's started doing some unfriendly stuff on our machine. In order
|
||
to deny her access to our machine, we simply change the line in
|
||
hosts.allow to:
|
||
|
||
|
||
|
||
|
||
ALL: .home.net except mom.home.net
|
||
|
||
|
||
|
||
|
||
Now, let's pretend a friend from....uh....friend.com wants to get something
|
||
off our ftp server. No problem, just edit hosts.allow again:
|
||
|
||
|
||
|
||
|
||
# /etc/hosts.allow for linux.home.net
|
||
|
||
ALL: .home.net except mom.home.net
|
||
wu.ftpd: .friend.com
|
||
|
||
|
||
|
||
|
||
Things are looking good. The only problem is that the name server for
|
||
home.net is sometimes down, and the only way we can identify someone as
|
||
being on home.net is through their IP address. Not a problem:
|
||
|
||
|
||
|
||
|
||
# /etc/hosts.allow for linux.home.net
|
||
|
||
ALL: .home.net except mom.home.net
|
||
ALL: 192.168.1. except 192.168.1.3
|
||
ALL: .friend.com
|
||
|
||
|
||
|
||
|
||
And so on....
|
||
|
||
|
||
|
||
I have found that's it's easier to deny everybody access, and list your
|
||
friends in hosts.allow than it is to allow everybody access, and
|
||
deny only the people who you know are RBG's. If you are running a private
|
||
machine, this won't really be a problem, and you can rest easy.
|
||
|
||
|
||
|
||
However, if you're trying to run a public service (like an ftp archive of
|
||
Tetris games for different OS's) and you can't afford to be this paranoid,
|
||
then you need shouldn't put anything in hosts.allow, and just put
|
||
all of the people you don't want touching your machine in hosts.deny
|
||
|
||
|
||
|
||
You might also want to take a look at the next section.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
Other things to keep in mind
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Security holes in software
|
||
|
||
|
||
|
||
Like I said earlier, a lot of the software that comes standard in CD-ROMs have
|
||
security holes in them which could let local or even remote users execute
|
||
commands as root on your system. Keep an eye on
|
||
Linux ALERTS
|
||
to find out about problems we know about and how to fix them.
|
||
|
||
|
||
|
||
What services you offer
|
||
|
||
|
||
|
||
Check to make sure that the services you have running on your machine are
|
||
what you really want to offer. For example, most of us don't have a need
|
||
to run in.nntpd, yet it's got an entry in /etc/inetd.conf.
|
||
Do you really want everyone on the Internet to have access to
|
||
in.fingerd? Do you really need to let everyone on the Internet have
|
||
access to your ftp server?
|
||
|
||
|
||
|
||
Find what you don't need (or don't want to offer to any passing stranger who
|
||
might happen across your machine) and either shut it down or deny outside
|
||
access to it.
|
||
|
||
|
||
|
||
Passwords
|
||
|
||
|
||
|
||
Yeah, yeah, yeah. Everyone's heard the speech about passwords, but they
|
||
are pretty important. Especially if you're not restricting access to your
|
||
machine. Remember, if they can get to your machine, they can get on your
|
||
machine. And if they can get on your machine, they can get root access.
|
||
|
||
|
||
|
||
In case you haven't heard the speech, here's the condensed version:
|
||
1. Make the passwords at least 8 characters long.
|
||
2. Mix the case of the passwords.
|
||
3. Use at least one numeral.
|
||
4. Use at least one non-alphanumeric character.
|
||
5. Change the passwords on a regular basis. About once every
|
||
two months should do for the casual user.
|
||
I have found that using "k-rad" or "leet-speak" helps when you need to
|
||
make up a password. For example, instead of using the password
|
||
"foobar", try using "f00b4R!".
|
||
|
||
|
||
|
||
Lastly, get and install shadow passwords. You might have to recompile a
|
||
few services, but it's worth the extra protection.
|
||
|
||
|
||
|
||
File Permissions
|
||
|
||
|
||
|
||
Many of the security holes that exist are because the files are "setuid".
|
||
That means that a non-root user can execute the files as root. Remove
|
||
this permission from any files that don't need it. Like mount.
|
||
It really isn't that much of a hassle to keep one of your virtual
|
||
consoles logged in as root, and flip over to it when you need to get
|
||
something done.
|
||
|
||
|
||
|
||
Also, if you have stuff sitting somewhere that you don't want anyone else
|
||
to see, don't give them world rwx permission on the dir.
|
||
|
||
|
||
|
||
Keep an eye on the syslog
|
||
|
||
|
||
|
||
At least once a day, you need to go check the syslog and see what's been
|
||
happening. You can find it /var/adm/syslog, and I'd also recommend
|
||
taking a peek at /var/adm/messages. You'll want to look for
|
||
multiple connections coming from places you don't know in a short period
|
||
of time. If they look suspicious, then don't hesitate to slap an entry
|
||
for the domain into /etc/hosts.deny
|
||
|
||
|
||
|
||
Who you trust
|
||
|
||
|
||
|
||
This is just common sense. It's not a wise idea to give out your root password
|
||
to someone you just met on IRC 5 minutes ago who claims they can get Apache
|
||
up and running on your system if you just tell them the root password.
|
||
|
||
|
||
|
||
Set up a guest account with limited read, write, execute abilities and let them
|
||
use that.
|
||
|
||
|
||
|
||
It's also not wise to let people just log in and fiddle around on your machine.
|
||
Despite common belief, it is possible to create Unix ``viruses,'' and all you
|
||
really need is the knowledge, the will, and an opportunity. For more
|
||
information, see the paper on
|
||
The Plausibility of
|
||
Unix Virus Attacks
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
FINAL WORD
|
||
|
||
|
||
|
||
To be completely honest with you, the only way to be 100% sure your machine
|
||
can't be compromised is to physically deny access to it. That means get
|
||
rid of the modem and ethernet card, fill up any hole in the computer's case
|
||
with cement, and buy a big, mean pit bull to guard it while you are asleep.
|
||
|
||
|
||
|
||
Well, maybe that's going a bit far. But the point is, if they can't get to
|
||
your machine, they can't do anything to it. If you think your machine has
|
||
been compromised, disconnect it from the network, look through the
|
||
syslog, try to find out how it was compromised, fix the problem,
|
||
set all new passwords for your accounts, and then reconnect it.
|
||
|
||
|
||
|
||
We might not be able to make the machine 100% secure, but we can make
|
||
it hard for the Bad Guys to do their thing.
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
Email:
|
||
mars@loeffel.txdirect.net
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Marsala
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
THE MUTT MAILER
|
||
|
||
by Larry Ayers
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Introduction
|
||
|
||
|
||
|
||
Michael Elkins is a programmer who at one time was involved in the
|
||
development of the venerable mail-client, Elm. He had some ideas which he
|
||
would have liked to include in Elm but for whatever reasons the other Elm
|
||
developers weren't receptive. So he struck out on his own, creating a
|
||
text-mode mailer which incorporates features from a variety of other
|
||
programs. These include other mailers such as Elm and Pine, as well as John
|
||
Davis's Slrn newsreader. As an indication of the program's hybrid nature
|
||
he has named it Mutt. Although the mailer began as an amalgamation of
|
||
features from other programs, it has begun to assume an identity of its own.
|
||
|
||
|
||
|
||
Mutt has been in beta-testing for several months now and new versions
|
||
have been released regularly. Lately I've noticed that binary packages have
|
||
been appearing in the Sunsite incoming directory, which I take as a sign
|
||
that the program is now deemed ``suitable for a general audience.'' I have
|
||
found that it compiles cleanly and works dependably.
|
||
|
||
Distinguishing Characteristics
|
||
|
||
|
||
|
||
The composition of messages has always been a thorn in the side of
|
||
developers of mail clients. After all, a usable mailer is the goal, not
|
||
a text editor. The typical approach has been to include a simple message
|
||
composition editor (such as Pico in Pine) and allow the option of starting an
|
||
external editor of the user's choice. This has certain drawbacks. If in the
|
||
middle of a message you need an editing function not included by the internal
|
||
editor, it can be distracting and awkward to switch boats in midstream, so to
|
||
speak.
|
||
|
||
|
||
|
||
This minor dilemma is neatly side stepped by Mutt; there is no internal
|
||
editor included. All message composition is done with a familiar editor,
|
||
preferably a text-mode one so that Mutt can be run at the console as well as
|
||
under X-windows. As an example, I've set Mutt up to use Vile with a
|
||
message-specific rc-file (sets word-wrap, etc).
|
||
|
||
|
||
|
||
Mutt can be compiled with a feature unusual in text-mode mail clients:
|
||
it can fetch mail from a POP server, a duty which is more commonly assigned to
|
||
an external agent such as Popclient. Compile-time support is also available
|
||
for PGP-encrypted messages, though theoretically this is only available for
|
||
US citizens.
|
||
|
||
|
||
|
||
A few of Mutt's other features include:
|
||
|
||
|
||
* Configurable colorization of various screen elements, such as headers, sigs, and
|
||
foreground/background.
|
||
* Message sorting options
|
||
* Small executable size (around 150 kb. on my system)
|
||
* MIME support
|
||
* Message threading
|
||
* Indefinite postponement of outgoing messages
|
||
* Can use either curses/ncurses or S-lang as the screen library
|
||
* Customizable keybindings
|
||
* Delivery Status Notification (DSN) support
|
||
|
||
|
||
|
||
Mutt can be run from the command line, if you just want to mail a quick
|
||
message without having to load your mail-spool file. Incidentally, Mutt uses
|
||
the mailx (single-file) message format, so the transition from Pine or Elm
|
||
is painless.
|
||
|
||
|
||
|
||
If you've ever used the Jed editor or Slrn the appearance of Mutt will be
|
||
familiar. Like these programs Mutt is easy on the eyes, and the amount of
|
||
coloring used is easily controlled. The documentation supplied with Mutt is
|
||
very complete, but this isn't one of those programs which takes long to learn.
|
||
|
||
|
||
Obtaining Mutt
|
||
|
||
|
||
|
||
Binary versions of Mutt are available from the Sunsite archive site,
|
||
currently in pub/Linux/Incoming. I recommend obtaining the source
|
||
from the Mutt home site, where the
|
||
latest versions will first appear. Compiling it yourself allows the program
|
||
to be tailored to your needs; there are several compile-time options.
|
||
|
||
|
||
|
||
The non-export version, which contains PGP/MIME support, is
|
||
export-controlled; U.S. citizens can read the file README.US-only and follow
|
||
the directions to access the files. The non-export version has been
|
||
exported anyway (against the author's wishes), and can be obtained from the
|
||
following sites:
|
||
|
||
|
||
* ftp.teuto.de/pub/user/lmb
|
||
* ftp.fu-berlin.de/pub/unix/mail/mutt/mutt-pgp
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Why not give it a try? The source file is small, and compilation and
|
||
installation just takes a few minutes. I think you'll like it.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Larry
|
||
Ayers
|
||
|
||
|
||
|
||
Last modified: Fri Jan 24 18:54:25 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Larry Ayers
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
WINDOW-MANAGER NEWS
|
||
|
||
by Larry Ayers
|
||
|
||
|
||
|
||
|
||
Window-managers seem to be unique to unix-derived operating systems.
|
||
Rather than assuming all windowing/GUI tasks, the X-server confines itself
|
||
to the basic grunt-work of facilitating communications between the graphics
|
||
hardware and the kernel. This is typical unix behavior, in which complex
|
||
tasks are broken up into sub-tasks performed by separate programs. This is
|
||
beneficial to the end-user. If something goes wrong in such a system it is
|
||
easier to place blame and isolate the problem; flexibility and
|
||
configurability are also much greater than in systems in which the graphic
|
||
interface duties are intertwined inextricably with basic kernel
|
||
functions.
|
||
|
||
|
||
|
||
The end result of this is that if you start the X-server ``bare'' (without a
|
||
window manager) you will see borderless windows on a gray and black stippled
|
||
background. Few people want this appearance, so over the years a wide variety
|
||
of window-managing software has been developed. Some are proprietary, but in
|
||
the free software world there are several active projects, a few of which I'll
|
||
discuss in this article.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
FVWM
|
||
|
||
|
||
|
||
The F(?) Virtual Window Manager is, for several good reasons, the most
|
||
commonly used Linux window manager. It was originally an offshoot of an early
|
||
manager called Twm, but has evolved considerably in recent years.
|
||
|
||
|
||
|
||
Rob Nation, who was also partially responsible for top and rxvt, was the
|
||
maintainer of the 1.xx versions of Fvwm. This series reached a developmental
|
||
plateau a few years ago and a new group of developers adopted the program and
|
||
initiated the 2.xx series. The 1.xx versions are stable and reliable and are
|
||
still being used by many people, though they aren't actively maintained.
|
||
|
||
|
||
|
||
I won't go into the basic features of Fvwm, as this topic has been
|
||
well-covered (by John Fisk and others) in past issues of the Gazette. Since
|
||
those articles appeared there have been many new features and modules added to
|
||
Fvwm, a few of which I'll describe.
|
||
|
||
|
||
|
||
By the way, don't be put off by the beta status of the 2.xx versions;
|
||
since about version 2.0.37 the program has been relatively easy to compile and
|
||
free of any but very minor bugs. Version 2 is asymptotically approaching a
|
||
major release which will be version 2.1.
|
||
|
||
|
||
|
||
New Features
|
||
|
||
|
||
|
||
I can't help but think that the developers working on Fvwm2 are keeping an
|
||
eye on the upstart Afterstep window-manager, which is based on Fvwm2 code.
|
||
The newest Fvwm2 release (as of Jan 24,1997) is 2.0.45; patches have been
|
||
incorporated which give Fvwm2 some of the nicer decorative features of
|
||
Afterstep. These include tiled pixmaps for window-borders and title bars, as
|
||
well as gradient-shading of the title bar from one color to another. Another
|
||
addition is the ability to use mini-icons for title bar buttons. If you're not
|
||
interested in such decorative elaborations they can be easily disabled by
|
||
editing the fvwm.tmpl file before compilation. The new release is
|
||
worth obtaining even if you don't care about the new visible features, as many
|
||
bugs have been fixed. The man-page has also been expanded and updated to
|
||
cover these changes.
|
||
|
||
|
||
|
||
It's now possible to write Fvwm modules in either Perl or Python. Several
|
||
examples of each are included in the distribution, which is available from
|
||
this Hawaiian site.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Afterstep
|
||
|
||
|
||
|
||
If you are fond of the appearance of the NExtstep operating system, you'll
|
||
probably like Afterstep. This is an offshoot of Fvwm2 development which has
|
||
attracted much attention recently in the Linux community, to the point where
|
||
it is being included (despite its beta status) in some newer distributions.
|
||
|
||
|
||
|
||
Afterstep pioneered the use of pixmaps and mini-icons in borders and
|
||
title-bars, as mentioned in the Fvwm2 section above. But the major difference
|
||
is the Wharf module, a very configurable tool bar which uses larger-than-normal
|
||
icons (64x64). The supplied icons are very stylish, and can be configured to
|
||
have gradient-shaded backgrounds. As with the Fvwm2 Buttons module, the Wharf
|
||
(NExt calls it a ``dock'') can ``swallow'' applications and other modules. Lately
|
||
modules designed to be swallowed by the Wharf have become available from the
|
||
Afterstep web-sites. Among these are a PPP dialer, a CD-player, and a mixer.
|
||
Check out the Afterstep
|
||
Home Page for the latest news and releases.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Wm2
|
||
|
||
Possibly as a reaction to the growing number of unnecessary features in the
|
||
other window-managers,
|
||
Chris
|
||
Cannam has written a minimalist window-manager called Wm2. This small and
|
||
fast window-manager was inspired by the Plan 9 manager, which is part of the
|
||
experimental Plan 9 operating system. There are no icons, virtual desktops,
|
||
or configuration files, in stark contrast to the other managers discussed
|
||
here, just nicely framed windows and a simple menu which starts an xterm and
|
||
lists active and hidden windows. The windows are framed in a distinctive
|
||
manner, with no top title bar. Instead a shaped tab protrudes from the top of
|
||
the left side of the window with the title displayed vertically.
|
||
|
||
|
||
|
||
Rather than include a screen shot of Wm2 in action, here are links to the
|
||
Wm2 web page which has links to both a screen shot and the source itself:
|
||
|
||
|
||
|
||
|
||
The Wm2 Page (local)
|
||
|
||
|
||
|
||
|
||
|
||
The Wm2 Page (WWW)
|
||
|
||
|
||
|
||
Wm2 is still relatively new; I have noticed that it stresses the X-server
|
||
more than would be expected of such a small application, possibly because of
|
||
its use of the shaped-window X-extension. Screen refreshes seem to be slow.
|
||
Nonetheless in this third version it seems to be stable, and it provides a
|
||
refreshing contrast to the complexity of the other window-managers. The only
|
||
configuration involved comes before compilation of the source. The various
|
||
colors and preferred terminal emulator can be set in the Config.h file;
|
||
after installation the only way to change these settings is to re-edit and
|
||
recompile.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
If you'd like more information on these as well as several other
|
||
window-managers, visit
|
||
this excellent
|
||
site, which has many links and screen shots.
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Larry Ayers
|
||
|
||
|
||
Last modified: Fri Jan 24 19:11:42 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Larry Ayers
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
SHELLS FOR THE END USER
|
||
|
||
by Larry Ayers
|
||
|
||
|
||
|
||
My first shell, though I didn't know it by that name, was
|
||
command.com in DOS. It couldn't do much more than simply execute
|
||
commands, but it served my needs at the time. Later on I discovered the
|
||
commercial DOS command.com replacement 4DOS, by JP Software. This came
|
||
as something of a revelation to this novice computer user. Suddenly I could
|
||
do file-name completion, use aliases, and change to a directory on a different
|
||
drive with simple keystrokes. Wow, I thought, how did those programmers at JP
|
||
Software think of so many clever command-line functions and options!
|
||
|
||
|
||
|
||
I later learned that 4Dos (and its OS/2 sibling, 4OS/2) were influenced and
|
||
inspired by the various shells used on unix systems. When I first began using
|
||
Linux I was able to learn the rudiments of the Bash shell fairly quickly
|
||
because of past experience with the JP Software products.
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
The ``Bourne-Again'' Shell
|
||
|
||
|
||
|
||
New users of Linux are encouraged (in part by distribution defaults) to
|
||
use the GNU Bash shell. Bash has been polished over the years to the point
|
||
that any remaining bugs probably affect only the skilled users who make use
|
||
of its more arcane functions. Bash, and its reduced-function alias
|
||
sh, work well as agents for executing shell scripts. As a command
|
||
shell in a console or an xterm Bash provides many labor-saving shortcuts and
|
||
functions, most of which beginning users don't use. Reading the voluminous
|
||
Bash documentation I began to realize that using Bash the way most users do,
|
||
i.e. as the default login and command shell, touches only a small fraction
|
||
of its capabilities. O'Reilly has published a three-hundred-page book
|
||
detailing Bash shell programming and usage !
|
||
|
||
|
||
|
||
Recently Chet Ramey, the maintainer of Bash, released version 2.00 to the
|
||
FTP sites. After reading the list of changes and bug-fixes I concluded that
|
||
advanced users will be more appreciative of the release than will common
|
||
end-users, like myself. It's an odd feeling to learn of a feature by finding
|
||
out that bugs have been fixed in it! The documentation for Bash is extensive;
|
||
the man pages are available now in HTML format (in a separate file called
|
||
bash-doc-2.0.tar.gz). Bash can be obtained both from Sunsite and its
|
||
mirrors (in /pub/gnu) and from the
|
||
main GNU site.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
I remember the first time I navigated my way through the Slackware
|
||
installation menus; being offered the option to install tcsh and zsh made me
|
||
realize how little I knew. What were these alternative shells? Evidently
|
||
some users preferred them to bash, but why?
|
||
|
||
|
||
|
||
All of the shells discussed in this article are extensively documented, but
|
||
that very feature, as helpful as it is to advanced users, can make it
|
||
difficult to get a rough idea of why one shell might be preferable to another.
|
||
Luckily it isn't hard to install another shell just to try it out. Edit the
|
||
file /etc/shells (logged in as root) and add a line with the path to
|
||
the new shell. Then execute the command chsh; a default choice will be
|
||
offered to you. Ignore it and type in the name (with path) of the new shell.
|
||
You'll have to log out and log back in to activate the new shell.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Tcsh
|
||
|
||
|
||
|
||
In issue 12 of the Gazette Jesper
|
||
Pederson wrote a good introductory article about Tcsh; this article also
|
||
shows how Jesper's program Dotfile Generator can be used to help write
|
||
Tcsh resource files without spending many hours reading the manual. Since
|
||
that article appeared a new version of the Dotfile Generator has been released
|
||
which includes a module to generate Bash resource files. I highly
|
||
recommend this program, which is available from
|
||
this site. The Dotfile
|
||
Generator won't overwrite your existing files; it writes to another filename
|
||
(such as .bashrc-dotfile) This file can then be edited; I usually
|
||
transplant sections to my original files to try things out. The Dotfile
|
||
Generator allows you to try various features of your shell without having to
|
||
learn the precise rc-file syntax first.
|
||
|
||
1
|
||
|
||
A little resource-file editing will be necessary to change over to Tcsh.
|
||
The aliases which you have defined can be transplanted from your ~/.bashrc to
|
||
~/.cshrc without alteration, but the environment variables are another matter.
|
||
Bash (and other ``Bourne-compatible'' shells, such as Zsh) uses a different
|
||
format for this than Tcsh. As an example, export INFODIR=/mt/info in
|
||
the ~/.bash_profile would have to be changed to setenv INFODIR /mt/info
|
||
in ~/.tcshrc. I recommend going to the trouble of transferring aliases and
|
||
environment variables if you want to give Tcsh a try. If you don't you'll be
|
||
continually distracted by commands which don't work, and you will tend to
|
||
blame the shell.
|
||
|
||
|
||
|
||
The one feature which really stands out (if you're accustomed to Bash) is
|
||
the spelling-correction. When either a filename or command is misspelled the
|
||
shell pops up a suggested correction. If you tend to type commands quickly
|
||
and press ``enter'' without rereading what you've typed you'll love this.
|
||
Sometimes the shell is wrong, though, but pressing n rather than
|
||
y will force the shell to try and execute what you actually typed.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Zsh
|
||
|
||
|
||
|
||
After using Tcsh for a while, you may find yourself thinking, ``I really
|
||
don't want to switch completely to Tcsh; if only Bash had that spelling
|
||
correction built in!'' Zsh might be what you want.
|
||
|
||
|
||
|
||
Zsh is a Bourne-compatible shell like Bash but with several csh-like
|
||
features added. It also resembles the proprietary Korn shell as well as
|
||
Pdksh, a free Korn-shell clone. It's not at all difficult to adapt Bash
|
||
configuration files so that Zsh can use them as the syntax is nearly
|
||
identical. ~/.zshenv is analogous to ~/.bash_profile, while ~/.zshrc
|
||
corresponds to ~/.bashrc.
|
||
|
||
|
||
|
||
The first thing you notice when using Zsh for the first time is the prompt,
|
||
which by default looks like this:
|
||
|
||
|
||
|
||
<machine-name># /usr/local/src
|
||
|
||
|
||
|
||
|
||
|
||
As you can see, the current directory is on the right hand side of the
|
||
screen, giving more room for a command before the line breaks. When a typed
|
||
command reaches the path on the right the path disappears to make room.
|
||
|
||
|
||
|
||
The spelling correction behavior seems to be identical to that of Tcsh. As
|
||
with Bash and Tcsh, completion of paths and filenames is bound to the
|
||
tab key. Zsh has an elaborate implementation of programmable
|
||
completion, in which file-type specific behavior for completions can be set in
|
||
the resource-files.
|
||
|
||
|
||
|
||
One helpful aspect of Zsh's completion behavior deserves notice. Often
|
||
there will be a filename and a subdirectory with the same prefix, say if a
|
||
file called sample-2.01.tar.gz is unarchived into the directory in
|
||
which it resides, creating in the process a new subdirectory called
|
||
sample-2.01. Try the command cd sam<TAB> with some
|
||
shells and you will be asked if you want to change directory to
|
||
sample-2.01.tar.gz or to sample-2.01. Zsh is smart enough to
|
||
realize that directories don't normally have a tar.gz suffix, and
|
||
changes to the directory without comment or question.
|
||
|
||
|
||
|
||
The Zsh distribution contains extensive help-files which are in the
|
||
Info format, allowing them to be browsed from within Emacs or with a
|
||
stand-alone Info reader. After reading these documents I came away with
|
||
the impression that Zsh probably rivals Bash in the number of arcane features
|
||
and programming abilities. If you would like to see examples of the
|
||
complexity possible in Zsh configuration, take a look at The Next
|
||
Level, a package of Linux configuration files with explanation which has
|
||
become a part of recent Red Hat distributions. The Next Level's author,
|
||
Greg J. Badros, has included an elaborate set of Zsh resource files.
|
||
I found them to be quite informative as an example of what's possible with
|
||
this shell.
|
||
|
||
|
||
|
||
Zsh seems to be under active development; version 3.00 was released last
|
||
year, and there have been minor releases since then. There is a Zsh
|
||
home-page here which can serve as a good
|
||
introduction.
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
CONCLUSION
|
||
|
||
|
||
|
||
These shells certainly aren't hard to find; most distributions I've seen
|
||
include preconfigured packages for all three of them. One caveat: if you
|
||
decide to settle on Tcsh or Zsh as your login shell don't remove Bash, or its
|
||
symlink /bin/sh. Many shell scripts rely on /bin/sh in order to
|
||
run properly. Some packages, such as the Andrew User Interface System, like
|
||
to have csh available, so if you have the disk-space Tcsh, along with
|
||
its symlink /bin/csh may as well be retained even if it's not your
|
||
login shell.
|
||
|
||
|
||
|
||
The choice of shells reminds me of the eternal debate between vi-users and
|
||
emacs-users. A decision depends more on working-style and personality than
|
||
logic; try them all and see which one fits!
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Larry
|
||
Ayers
|
||
|
||
|
||
|
||
Last modified: Fri Jan 24 23:34:09 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Larry Ayers
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Novice Bash Tip -- Edit command-lines "joe-style"
|
||
|
||
By Joel Wilf, av293@lafn.org
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
If like me, you come from the world of DOS and WordStar, you
|
||
feel right at home with the joe editor, which uses WordStar
|
||
keystrokes.
|
||
|
||
|
||
|
||
But as soon as you exit joe, you're back in the land of bash,
|
||
where command-lines are edited "emacs-style." Soon,
|
||
your fingers are confused. Before you know it, you're pressing
|
||
<control>-d to move the cursor, only to find your command-line
|
||
disappearing.
|
||
|
||
|
||
|
||
But why use one set of keys to edit text and another to edit
|
||
commands? The beauty of Linux is that you can customize it to
|
||
your heart's content. Here's how to make bash act like our old
|
||
friend, joe:
|
||
|
||
|
||
|
||
|
||
STEP 1: DEFINE KEYS WITH .INPUTRC:
|
||
|
||
|
||
|
||
The bash command-line is handled by the GNU readline library. So
|
||
it's not surprising that bash uses the same keystrokes as GNU
|
||
emacs. Luckily, you can change these key-bindings simply by
|
||
setting new values in the file .inputrc.
|
||
|
||
|
||
|
||
The first step is to go to your $HOME directory and open or
|
||
create a text file named .inputrc. Then add the following
|
||
lines, which tell bash to use the basic joe keystrokes:
|
||
|
||
|
||
"\C-d": forward-char "\C-s": backward-char "\C-f": forward-word "\C-a": backward-word "\C-g":
|
||
delete-char "\C-t": kill-word "\C-y": kill-whole-line
|
||
You can also add the following lines, which fix the behavior of
|
||
the <home>, <end>, <delete>, and <backspace>
|
||
keys:
|
||
|
||
|
||
"\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line DEL: backward-delete-char
|
||
|
||
Finally, you can use .inputrc to modify any one of the dozens of
|
||
keystrokes and variables that control bash. (Among other
|
||
things, you can get bash to stop beeping at you!) Check the
|
||
READLINE section of the bash man page for details.
|
||
|
||
|
||
|
||
|
||
STEP 2: FIX TERMINAL SETTINGS WITH STTY:
|
||
|
||
|
||
|
||
An experienced Linuxer will see that the changes we made to
|
||
.inputrc has created a problem. We set <control>-s to
|
||
it's WordStar meaning. But the Linux terminal uses
|
||
<control>-s to send the "stop" signal.
|
||
Pressing <control>-s freezes the terminal until you type
|
||
<control>-q, the "start" signal.
|
||
|
||
|
||
|
||
The easiest way to fix this is to tell the terminal to use a
|
||
different "stop" key. To reassign "stop" to
|
||
<control>-p, type the following line (and put it in your
|
||
.bashrc to make it permanent):
|
||
|
||
|
||
stty stop '^p'
|
||
You can prove this works by pressing <control>-p then
|
||
<control>-q. It's also a good idea to check your terminal
|
||
configuration -- especially if you change other keys with
|
||
.inputrc. Type:
|
||
|
||
|
||
stty -a
|
||
This will display your terminal settings. If you reassigned the
|
||
"stop" key as shown above, you should see "stop = ^P".
|
||
|
||
|
||
|
||
Now you're home free. All you have to do is exit and log in
|
||
again. And you can edit commands "joe-style."
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Joel Wilf
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Pick an Editor, Any Editor
|
||
|
||
By Jens Wessling, jwesslin@erim.org
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
im (VI iMproved)
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
One day I realized that I seem to spend an
|
||
inordinate amount of time in front of a computer screen
|
||
and more precisely with a text editor in front of me.
|
||
This should hardly have been a surprise to me considering
|
||
I work with computers for eight to ten hours a day and then
|
||
I go home and spend several more. I guess that this obvious
|
||
fact finally struck home with me. I would guess I spend
|
||
about 20-30 hours a week in a text editor alone. With some
|
||
quick calculations I realized that this adds up to over 1000
|
||
hours a year. That is over 40 solid days of my life every
|
||
year in an editor. (That is a conservative estimate.) This
|
||
realization spurred me to try to optimize the time I spend
|
||
in my editor.
|
||
|
||
|
||
|
||
The first step I took was to try and find the best
|
||
editor around. I started asking around to see who used
|
||
what and to try to find out what the important qualities
|
||
of an editor were. Don't make this mistake.
|
||
Editors are one of the most religious beliefs a programmer
|
||
holds. Every programmer is convinced that there's is the
|
||
best. My office-mate uses PICO, some of my co-workers use
|
||
EMACS, VI, SlickEdit, or any one of an unending list. Every
|
||
person I talked to insured me that their selection was by
|
||
far the best. When I inquired about the differences, they
|
||
were primarily insignificant. That was when I learned the
|
||
horrible truth. Most editors are essentially equivalent.
|
||
No matter how hard people insist, most editors have more
|
||
features than any user will ever use. (Except PICO). In the
|
||
Linux community, these selections basically fall in to one
|
||
of two categories. VI clones, or Emacs. My recommendation
|
||
is that everyone learn one of these well. It doesn't really
|
||
matter which one, just pick one, stick with it and use it.
|
||
(Religiously if you must.)
|
||
|
||
|
||
|
||
I have gone to great lengths to learn VIM, a VI clone. And
|
||
certainly if not THE best, one of the top contenders. Many
|
||
features are shared among VI clones, basically the VI subset.
|
||
The additional features are basically individual to each
|
||
clone. VIM comes with most, if not all, Linux distributions.
|
||
The home page for VIM is
|
||
|
||
http://www.math.fu-berlin.de/~guckes/vim/. VIM is in
|
||
active development and is getting better by the day. Syntax
|
||
highlighting should be out, if not by the time you read this,
|
||
then soon thereafter.
|
||
|
||
|
||
|
||
I will assume that most people know the basics of VI and want
|
||
to change it from a simple tool to a powerful one. I will share
|
||
some of the handy tips and tricks I use.
|
||
|
||
|
||
|
||
|
||
Programming, Tabs, and Tags.
|
||
|
||
ctags is a marvelous utility for C and C++ Programmers. ctags
|
||
comes with the VIM distribution. What this utility does is
|
||
create a list of all the subroutine names in the files you
|
||
specify and allow you to jump to the given subroutine while
|
||
in you editor with just one keypress. The way you run ctags
|
||
is simple.
|
||
|
||
ctags *.c or ctags *.cpp
|
||
Then, crank up your editor and move to wherever it is you
|
||
call any subroutine from and press [CTRL]-]. This will
|
||
take you immediately to wherever the routine is, even if
|
||
it is in a different file.
|
||
|
||
|
||
|
||
File Switching
|
||
|
||
I frequently work with several files concurrently and I
|
||
need to switch between these files continually. The
|
||
command to switch to another file in VIM is ":e fn".
|
||
The shortcut to switch to the last file edited is ":e #".
|
||
This is fine for normal use, but I switch files often, and
|
||
4 keystrokes seems like a bit much. This is where VIM's
|
||
key mapping comes in. VIM like most editors has an rc
|
||
file. It is called .vimrc, what a shock. 8)
|
||
In this file I have the following command.
|
||
|
||
" Save and switch to other buffer. map N :w [CTRL]-M
|
||
This command lets me switch buffers with a single keypress.
|
||
The other nice feature in VIM for switching between files
|
||
is tab completion for file names. The way tab completion
|
||
works is to take whatever letters you have typed in so
|
||
far on for the file name and find all of the files that
|
||
could possibly match. Hitting tab will scroll through
|
||
the list of files until you find the one you want. If no
|
||
beginning letters are specified for the file name, it will
|
||
scroll through them all.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Mapping
|
||
|
||
I do a LOT of coding and I find that I often need to comment
|
||
out blocks of lines. I have developed 2 macros for handling
|
||
this with a minimum of effort.
|
||
|
||
map C 0i/*[CTRL-ESC]A*/[CTRL-ESC]j map T 0xx$xxj
|
||
If you examine the first line, you will see that it does the
|
||
following.
|
||
|
||
|
||
* Moves to the beginning of the line
|
||
* Enters Insert Mode
|
||
* Places "\*" there
|
||
* Escapes to command mode
|
||
* Adds "*/" to the end of the line
|
||
* Escapes to command mode
|
||
* Moves down One line
|
||
The second line does the following.
|
||
* Moves to the beginning of the line
|
||
* Removes 2 characters
|
||
* Moves to the end of the line
|
||
* Removes 2 characters
|
||
* Moves down One line
|
||
I can type "12C" in command mode and it will comment out the
|
||
next dozen lines. and "12T" will uncomment a dozen lines that
|
||
were commented by "C".
|
||
|
||
|
||
|
||
Keep in mind that when you remap keys, they lose there original
|
||
values. In this case, "C" was an odd Delete until end of line
|
||
and next several lines into a given buffer, and "T" was a command
|
||
I can't really figure out from the documentation. I don't really
|
||
miss these two but be careful that you don't map "i" or "x" or
|
||
anything else you might need later.
|
||
|
||
|
||
|
||
|
||
Have fun with this. I hope to have more later.
|
||
|
||
|
||
jEnS Wessling
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Jens Wessling
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
A PHILOSOPHY FOR CHANGE FROM DOS TO LINUX
|
||
|
||
By R. Frank Louden flouden@netusa1.net
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Unavoidable Confusion
|
||
|
||
|
||
|
||
|
||
On the surface, changing from a MS DOS/MS Windows user to a Linux user
|
||
is not such a major change. After all, to change directories in
|
||
Linux, you use the ``cd'' command and that is the same as DOS. Linux
|
||
provides X windows as a GUI and there are a number of similarities
|
||
with MS Windows.
|
||
|
||
|
||
|
||
So maybe all that is necessary is to learn a few different commands
|
||
and you are off and running. Well, right and wrong.
|
||
|
||
|
||
|
||
You might find yourself in the situation I was in when I first decided
|
||
to install Linux. I had never had any experience with Unix or Linux or
|
||
much of anything else outside of the realm of Microsoft.
|
||
|
||
|
||
|
||
The Intel/Microsoft consortium had given me a false sense of command
|
||
over my PC. I had no idea of the ``behind the scenes'' activity that
|
||
went on when DOS booted and Windows came up with it's attractive
|
||
colors and cute little icons. I began to learn a bit when I tried to
|
||
setup some software that wasn't MS applications. At work I learned
|
||
that it was necessary to occasionally contact an equipment
|
||
manufacturer to get the appropriate drivers for MS Windows. But
|
||
all-in-all I was successful in almost every attempt. Little did I
|
||
know...
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Fools Rush IN...
|
||
|
||
|
||
|
||
|
||
As you may have deduced, I work with computers and less obvious (but
|
||
it'll get even less obvious as we go along, I'm sure!) I have some
|
||
schooling in the computer field. So it won't be too surprising to
|
||
find that I was beginning to feel somewhat stifled by the MS environment.
|
||
I knew there were more colors, more sounds, more ways of
|
||
doing things than I saw on the shelf (at a rather high $$ amount, I
|
||
might add) in my local computer store and in the pages of my favorite
|
||
computer magazines.
|
||
|
||
|
||
|
||
One day, a friend mentioned Linux to me. She was quite an Internet
|
||
fan. She spent hours in IRC channels and had heard about some of the
|
||
Unix applications from the I-net dinosaurs (Unix users). So one day,
|
||
while browsing through the computer books shelves at my favorite
|
||
bookseller's, I noticed a copy of ``Linux Unleashed'' published by Sam's
|
||
Publishing. I bought it thinking I'd just see what all the fuss was
|
||
about.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Time Wounds All Heels
|
||
|
||
|
||
|
||
|
||
I couldn't wait. When I opened the pages and began reading I was
|
||
intrigued. The complexity and yet the continuous assurances that it
|
||
*could* be done had me all fired up to try out this ``experimental'' OS.
|
||
|
||
|
||
|
||
Lucky me! A CD was glued inside the back cover of the book. My
|
||
problem was, all I owned was a 386SX with 2 MB of memory and a 65 MB
|
||
hard-drive. Not enough! So I bought a new PC.
|
||
|
||
|
||
|
||
I ordered a Micron with 16 MB of memory and a 1.6 GB hard drive and a
|
||
CD-ROM drive. A heck of a lot of machine to my way of thinking! When
|
||
it arrived, it came pre-loaded with MS Win95 (doesn't everything?)
|
||
|
||
|
||
|
||
I decided to use FIPS to do a ``non-destructive'' repartition of my new
|
||
hard-drive. Well, it worked but the problem is the FIPS program took
|
||
every bit of empty space on the drive, I couldn't write a single file
|
||
in Win95 and I wasn't ready to completely forsake my old OS. So,
|
||
having already made a backup (yeah, right!) I did a complete reformat
|
||
of my C drive. I split the drive into 4 logical partitions and saved
|
||
one of them for Linux exclusively.
|
||
|
||
|
||
|
||
Even for someone with a fair amount of PC experience, there is room
|
||
for mistakes, doing what I was doing, and I made 'em. One thing I
|
||
didn't do (I didn't know about this at the time) was to also create a
|
||
small partition to use as Linux swap space. I did this a couple of
|
||
months later when I re-installed to upgrade to Slackware 3.1.
|
||
|
||
|
||
|
||
So here is a warning...
|
||
|
||
IF YOU JUST GOT THAT PC FOR CHRISTMAS AND YOU'VE NOT EVER SET ONE UP BEFORE AND YOU ARE
|
||
JUST LEARNING MS WINDOWS -- DO NOT INSTALL LINUX! DON'T EVEN THINK ABOUT IT!
|
||
Take your time and learn about that machine and the wondrous things
|
||
it is capable of doing for you. If later (and probably MUCH later)
|
||
you find it is boring doing the Microsoft Word cut-and-paste shuffle,
|
||
and Doom starts putting you to sleep, and you've invested in a class
|
||
or two in Computer Science at your local community college, Linux
|
||
might be just the thing.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
A Coincidence?
|
||
|
||
|
||
|
||
|
||
While I was typing away on this article, the phone rang. It was my
|
||
friend Ben and he had just hooked up his brand new P166 last
|
||
evening. First thing he said was, ``I got this new computer last night
|
||
and I need help before I throw it out the window.'' I got up and drove
|
||
over to his place. (Coldest day of the year so far! Brrrrr!) I looked
|
||
at his machine. Pre-loaded with Win95 (aren't they all?) He didn't
|
||
know what to do once the system booted and displayed the new GUI. I
|
||
showed him a couple of things and then told him not to install
|
||
Linux. He's definitely not ready!
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Who Is Ready?
|
||
|
||
|
||
|
||
|
||
None of us who are migrating from MS dominance. It's that simple.
|
||
But don't let that discourage you. If you know a bit more about PCs
|
||
than the occasional, at work, or gaming user and if you are as
|
||
fascinated by computing concepts and advances (Java, SMP, Graphics
|
||
rendering, etc.) as I am. If you LIKE to program or if you want to
|
||
set up as an ISP, then Linux is for you. And be prepared, Linux is a
|
||
whole different animal!
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Time Heals All Wounds
|
||
|
||
|
||
|
||
|
||
Learning takes time and in time you will learn. I started with Linux
|
||
in March of 1996. In the last ten months, I have installed Linux
|
||
(Slackware at home and Debian at work) about eight times. I have
|
||
learned something every day. I will say that while Linux is priced
|
||
right, I have spent more on books in the last ten months than I had in
|
||
the last 5 years.
|
||
|
||
|
||
|
||
Here are some of the things I have accomplished...
|
||
|
||
|
||
|
||
I have setup...
|
||
* PPP Link to my ISP
|
||
* X11R6
|
||
* GNAT Ada Compiler
|
||
* TkDesk
|
||
* TclTutor
|
||
* TkMan
|
||
* Netscape
|
||
* Mosaic
|
||
I am learning...
|
||
* GNU C/C++
|
||
* Perl
|
||
* Tcl/Tk
|
||
* Pov-Ray
|
||
* HTML Document Design
|
||
And there are many, many other places to go.
|
||
|
||
|
||
|
||
Let me say that ``setup'' is not truly the best word to use. In many
|
||
instances the setups I mentioned above required only that I tweak a
|
||
configuration file or adjust a Makefile. In some instances the program
|
||
refused to work and I had to read and study and yes, I had to ask a
|
||
couple of questions from the newsgroups too.
|
||
|
||
|
||
|
||
Out of the box, my printer didn't function so I had to read the
|
||
Printing HOWTO. Of course, it might have worked but how would I know
|
||
since I didn't have any idea about how lpr was used to queue up a
|
||
print job. Then I needed to get a SLIP or PPP connection functioning
|
||
so I could ask those questions on the newsgroups. I had been taught
|
||
some Ada when in school and when I saw GNAT was available, I wanted to
|
||
have it so I might refresh my skills there. I had to wait for
|
||
InfoMagic's September ``Linux Developer's Resource'' before I was able
|
||
to get a GNAT installed that would compile anything.
|
||
|
||
|
||
|
||
Just last week I got Pov-Ray up and running and I have been
|
||
enthusiastic about ray-traced images since I first saw a ringed
|
||
planet scene created with it. But I had to wait...and tinker...and
|
||
wait...and read...and make mistakes...and start all over again. There
|
||
are times when, like my friend Ben, I feel like throwing the PC out the
|
||
window and I have learned to move on to something else. And whenever
|
||
I move on, I learn more.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Linux Yes!
|
||
|
||
|
||
|
||
|
||
So I am sold! I have not as yet taken the MS partitions off of my
|
||
machine but 95% of the time I am working within the Linux
|
||
environment. Although sometimes my frustrations run high, I can
|
||
honestly say that I have not had as much fun with a computer since I
|
||
first started my Pascal classes back a few years ago.
|
||
|
||
|
||
|
||
So here I am, somewhere between a novice and a guru, lost in the Linux
|
||
OS Wonderland. I'm having a great time...why don't you join me?
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, R. Frank Louden
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Procmail Mini-Tutorial:
|
||
|
||
AUTOMATED MAIL HANDLING
|
||
|
||
|
||
by
|
||
Jim Dennis, Proprietor,
|
||
Starshine Technical Services
|
||
|
||
|
||
|
||
Converted to HTML by
|
||
Heather Stern
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
procmail is the mail processing utility language
|
||
written by
|
||
Stephen van den Berg
|
||
of Germany. This article provides a bit of background for
|
||
the intermediate Unix user on how to use procmail.
|
||
|
||
|
||
|
||
As a "little" language (to use the academic term)
|
||
procmail lacks many of the features and constructs
|
||
of traditional, general-purpose languages. It has
|
||
no "while" or "for" loops. However it "knows"
|
||
a lot about Unix mail delivery conventions and
|
||
file/directory permissions -- and in particular
|
||
about file locking.
|
||
|
||
|
||
|
||
Although it is possible to write a custom mail
|
||
filtering script in any programming language
|
||
using the facilities installed on most Unix
|
||
systems -- we'll show that procmail is the tool
|
||
of choice among sysadmins and advanced Unix
|
||
users.
|
||
|
||
|
||
|
||
Unix mail systems consist of MTA's (mail
|
||
transport agents like sendmail, smail, qmail
|
||
mmdf etc), MDA's (delivery agents like
|
||
sendmail, deliver, and procmail), and MUA's
|
||
(user agents like elm, pine, /bin/mail, mh,
|
||
Eudora, and Pegasus).
|
||
|
||
|
||
|
||
On most Unix systems on the Internet sendmail
|
||
is used as an integrated transport and delivery
|
||
agent. sendmail and compatible MTA's have the
|
||
ability to dispatch mail *through* a
|
||
custom filter or program through either of
|
||
two mechanisms: aliases and .forwards.
|
||
|
||
|
||
|
||
The aliases mechanism uses a single file
|
||
(usually /etc/aliases or /usr/lib/aliases)
|
||
to redirect mail. This file is owned and
|
||
maintained by the system administrator.
|
||
Therefore you (as a user) can't modify it.
|
||
|
||
|
||
|
||
The ".forward" mechanism is decentralized.
|
||
Each user on a system can create a file
|
||
in their home directory named .forward
|
||
and consisting of an address, a filename,
|
||
or a program (filter). Usually the file
|
||
*must* be owned by the user or root and
|
||
*must not* be "writeable" by other users
|
||
(good versions of sendmail check these factors
|
||
for security reasons).
|
||
|
||
|
||
|
||
It's also possible, with some versions of
|
||
sendmail, for you to specify multiple addresses,
|
||
programs, or files, separated with commas. However
|
||
we'll skip the details of that.
|
||
|
||
|
||
|
||
You could forward your mail through any
|
||
arbitrary program with a .forward that consisted
|
||
of a line like:
|
||
|
||
"|$HOME/bin/your.program -and some arguments"
|
||
|
||
|
||
|
||
Note the quotes and the "pipe" character. They are
|
||
required.
|
||
|
||
|
||
|
||
"Your.program" could be a Bourne shell script,
|
||
an awk or perl script, a compiled C program or
|
||
any other sort of filter you wanted to write.
|
||
|
||
|
||
|
||
However "your.program" would have to be written to
|
||
handle a plethora of details about how sendmail would
|
||
pass the messages (headers and body) to it, how you would
|
||
return values to sendmail, how you'd handle file locking
|
||
(in case mail came in while "your.program" was still
|
||
processing one, etc).
|
||
|
||
|
||
|
||
That's what procmail gives us.
|
||
|
||
|
||
|
||
What I've discussed so far is the general information
|
||
that applies to all sendmail compatible MTA/MDA's.
|
||
|
||
|
||
|
||
So, to ensure that mail is passed to procmail for
|
||
processing the first step is to create the .forward
|
||
file. (This is safe to do before you do any configuration
|
||
of procmail itself -- assuming that the package's binaries
|
||
are installed). Here's the canonical example, pasted from
|
||
the procmail man pages:
|
||
|
||
"|IFS=' '&&exec /usr/local/bin/procmail -f-||exit 75 #YOUR_USERNAME"
|
||
|
||
|
||
|
||
This seems awfully complicated compared to my
|
||
earlier example. That's because my example was
|
||
flawed for simplicity's sake.
|
||
|
||
|
||
|
||
What this mess means to sendmail (paraphrasing into
|
||
English) is:
|
||
* Pipe the mail to the following command(s):
|
||
* Set the shell's "inter-field seperator" (IFS) to a space, and -- if that went O.K. (&&)
|
||
execute the program named "/usr/local/bin/procmail"
|
||
(yours may need to be different -- try the command 'which procmail' to see if it's on
|
||
the path or 'locate procmail' if your system maintains a file locator database).
|
||
* The procmail program is being passed a set of switches: "-f-" which tells it to "update
|
||
timestamp in the leading the 'From' line in the header"
|
||
(this last bit is rather obscure and has to do with how messages are normally stored in
|
||
your "incoming" or mail file or "spool" as we Unix hacks like to call it).
|
||
* The next part of this .forward command is the Bourne shell's "||" operator which is
|
||
basically a continuation from the "and" (&&) operator that we used before. It says "or"
|
||
(if that command didn't work -- i.e. it returned any error) then "exit" (stop
|
||
processing) and return an error number 75 (which we presume is meaningful to sendmail
|
||
-- the program that called this command).
|
||
* The last part of this .forward expression is a comment which according to the man
|
||
pages:
|
||
|
||
"is not actually a parameter that is required by procmail, in fact, it will be discarded
|
||
by sh before procmail ever sees it; it is however a necessary kludge against
|
||
overoptimising sendmail programs:"
|
||
|
||
* You should just change the phrase YOUR_NAME to your login name on that system.
|
||
|
||
|
||
|
||
This complicated line can be just pasted into most
|
||
.forward files, minimally edited and forgotten.
|
||
|
||
|
||
|
||
If you did this and nothing else your mail would
|
||
basically be unaffected. procmail would just
|
||
look for its default recipe file (.procmailrc) and
|
||
finding none -- it would perform its default action
|
||
on each messages. In other words it would append new
|
||
messages into your normal spool file.
|
||
|
||
|
||
|
||
If your ISP uses procmail as its local delivery
|
||
agent then you can skip the whole part of about
|
||
using the .forward file -- or you can use it anyway.
|
||
|
||
|
||
|
||
In either event the next step to automating your
|
||
mail handling is to create a .procmailrc file in
|
||
your home directory. You could actually call
|
||
this file anything you wanted -- but then you'd
|
||
have to slip the name explicitly into the .forward
|
||
file (right before the "||" operator). Almost
|
||
everyone just uses the default.
|
||
|
||
|
||
|
||
Now we can get to a specific example. So far all
|
||
we've talked about it how everything gets routed
|
||
to procmail -- which mostly involves sendmail and
|
||
the Bourne shell's syntax. Almost all sendmail's
|
||
are configured to use /bin/sh (the Bourne shell)
|
||
to interpret alias and .forward "pipes."
|
||
|
||
|
||
|
||
So, here's a very simple .procmailrc file:
|
||
|
||
:0c:
|
||
$HOME/mail.backup
|
||
|
||
|
||
|
||
This just appends an extra copy of all incoming
|
||
mail to a file named "mail.backup" in your
|
||
home directory.
|
||
|
||
|
||
|
||
Note that a bunch of environment variables are preset
|
||
for you. It's been suggested that you should
|
||
explicity set SHELL=/bin/sh (or the closest
|
||
derivative to Bourne Shell available on your system).
|
||
I've never had to worry about that since the shells
|
||
I use on most systems are already Bourne compatible.
|
||
|
||
|
||
|
||
However, csh and other shell users should take note
|
||
that all of the procmail recipe examples that I've
|
||
ever seen use Bourne syntax.
|
||
|
||
|
||
|
||
The :0 line marks the beginning of a "recipe"
|
||
(procedure, clause, whatever. :0 can be followed
|
||
be any of a number of "flags." There is a literally
|
||
dizzying number of ways to combine these flags. The
|
||
one flag we're using in this example is 'c' for
|
||
"copy."
|
||
|
||
|
||
|
||
You might ask why the recipe starts with a :0.
|
||
Historically you used to use :x (where x was a
|
||
number). This was a hint to procmail that the
|
||
next x lines were conditions for this recipe. Later,
|
||
the option was added to precede conditions with a
|
||
leading asterisk -- so they didn't have to be manually
|
||
counted. :0 then came to mean something like:
|
||
"count them yourself."
|
||
|
||
|
||
|
||
The second colon on this line marks the end of
|
||
the flags and the beginning of the name for a
|
||
lockfile. Since no name is given procmail will
|
||
pick one automatically.
|
||
|
||
|
||
|
||
This bit is a little complicated. Mail might arrive
|
||
in bursts. If a new message arrives while your script
|
||
is still busy processing the last message -- you'll
|
||
have multiple sendmail processes. Each will be dealing
|
||
with one message. This isn't a problem by itself.
|
||
However -- if the two processes might try to write
|
||
into one file at the same time they are likely to
|
||
get jumbled in unpredictable ways (the result will
|
||
not be a properly formatted mail folder).
|
||
|
||
|
||
|
||
So we hint to procmail that it will need the check
|
||
for and create a lockfile. In this particular case
|
||
we don't care what the name of the lock file would
|
||
be (since we're not going to have *other* programs
|
||
writing into the backup file). So we leave the
|
||
last field (after the colon) blank. procmail will
|
||
then select its own lockfile name.
|
||
|
||
|
||
|
||
If we leave the : off of the recipe header line
|
||
(ommitting the last field entirely) then no lockfile
|
||
is used.
|
||
|
||
|
||
|
||
This is appropriate whenever we intend to only
|
||
read from the files in the recipe -- or in cases
|
||
where we intend to only write short, single line
|
||
entries to a file in no particular order (like
|
||
log file entries).
|
||
|
||
|
||
|
||
The way procmail works is:
|
||
|
||
|
||
|
||
It receives a single message from sendmail
|
||
(or some sendmail compatible MTA/MDA). There
|
||
may be several procmail processing running
|
||
currently since new messages may be coming
|
||
in faster than they are being processed.
|
||
|
||
|
||
|
||
It opens its recipe file (.procmailrc by default
|
||
or specified on its command line) and parses
|
||
each recipe from the first to the last
|
||
until a message has been "delivered" (or
|
||
"disposed of" as the case may be).
|
||
|
||
|
||
|
||
Any recipe can be a "disposition" or "delivery"
|
||
of the message. As soon as a message is
|
||
"delivered" then procmail closes its files, removes
|
||
its locks and exits.
|
||
|
||
|
||
|
||
If procmail reaches the end of it's rc file
|
||
(and thus all of the INCLUDE'd files) without
|
||
"disposing" of the message -- than the message
|
||
is appended to your spool file (which looks
|
||
like a normal delivery to you and all of your
|
||
"mail user agents" like Eudora, elm, etc).
|
||
|
||
|
||
|
||
This explains why procmail is so forgiving
|
||
if you have *no* .procmailrc. It simply
|
||
delivers your message to the spool because
|
||
it has reached the end of all its recipes
|
||
(there were none).
|
||
|
||
|
||
|
||
The 'c' flag causes a recipe to work on a "copy"
|
||
of the message -- meaning that any actions
|
||
taken by that recipe are not considered to be
|
||
"dispositions" of the message.
|
||
|
||
|
||
|
||
Without the 'c' flag this recipe would catch
|
||
all incoming messages, and all your mail would
|
||
end up in mail.backup. None of it would get
|
||
into your spool file and none of the other recipes
|
||
would be parsed.
|
||
|
||
|
||
|
||
The next line in this sample recipe is simply
|
||
a filename. Like sendmail's aliases and .forward
|
||
files -- procmail recognizes three sorts of
|
||
disposition to any message. You can append it
|
||
to a file, forward it to some other mail address,
|
||
or filter it through a program.
|
||
|
||
|
||
|
||
Actually there is one special form of "delivery"
|
||
or "disposition" that procmail handles. If you
|
||
provide it with a directory name (rather than a
|
||
filename) it will add the message to that directory
|
||
as a separate file. The name of that file will be
|
||
based on several rather complicated factors that
|
||
you don't have to worry about unless you use
|
||
the Rand MH system, or some other relatively
|
||
obscure and "exotic" mail agent.
|
||
|
||
|
||
|
||
A procmail recipe generally consists of three
|
||
parts -- a start line (:0 with some flags) some
|
||
conditions (lines starting with a '*' -- asterisk --
|
||
character) and one "delivery" line which can be
|
||
file/directory name or a line starting with a '!' --
|
||
bang -- character or a '|' -- pipe character.
|
||
|
||
|
||
|
||
Here's another example:
|
||
|
||
:0
|
||
* ^From.*someone.i.dont.like@somewhere.org
|
||
/dev/null
|
||
|
||
|
||
|
||
This is a simple one consisting of no flags,
|
||
one condition and a simple file delivery. It simply
|
||
throws away any mail from "someone I don't like."
|
||
(/dev/null under Unix is a "bit bucket" -- a bottomless
|
||
well for tossing unwanted output DOS has a similar
|
||
concept but it's not nearly as handy).
|
||
|
||
|
||
|
||
Here's a more complex one:
|
||
|
||
:0
|
||
* !^FROM_DAEMON
|
||
* !^FROM_MAILER
|
||
* !^X-Loop: myaddress@myhost.mydomain.org
|
||
| $HOME/bin/my.script
|
||
|
||
|
||
|
||
This consists of a set of negative conditions (notice
|
||
that the conditions all start with the '!' character).
|
||
This means: for any mail that didn't come from a
|
||
"daemon" (some automated process) and didn't come
|
||
a "mailer" (some other automated process) and which
|
||
doesn't contain any header line of the form:
|
||
"X-Loop: myadd..." send it through the script in
|
||
my bin directory.
|
||
|
||
|
||
|
||
I can put the script directly in the rc file
|
||
(which is what most procmail users do most of the
|
||
time). This script might do anything to the mail.
|
||
In this case -- whatever it does had better be good
|
||
because procmail way will consider any such mail
|
||
to be delivered and any recipes after this will
|
||
only be reached by mail from DAEMONs, MAILERs
|
||
and any mail with that particular X-Loop: line
|
||
in the header.
|
||
|
||
|
||
|
||
These two particular FROM_ conditions are actually
|
||
"special." They are preset by procmail and actually
|
||
refer to a couple of rather complicated regular
|
||
expressions that are tailored to match the sorts of
|
||
things that are found in the headers of most mail
|
||
from daemons and mailers.
|
||
|
||
|
||
|
||
The X-Loop: line is a normal procmail condition.
|
||
In the RFC822 document (which defines what e-mail
|
||
headers should look like on the Internet) any line
|
||
started with X- is a "custom" header. This means
|
||
that any mail program that wants to can add pretty
|
||
much any X- line it wants.
|
||
|
||
|
||
|
||
A common procmail idiom is to add an X-Loop: line
|
||
to the header of any message that we send out --
|
||
and to check for our own X-Loop: line before
|
||
sending out anything. This is to protect against
|
||
"mail loops" -- situations where our mail gets
|
||
forwarded or "bounced" back to us and we endlessly
|
||
respond to it.
|
||
|
||
|
||
|
||
So, here's a detailed example of how to
|
||
use procmail to automatically respond to mail
|
||
from a particular person. We start with
|
||
the recipe header.
|
||
|
||
:0
|
||
|
||
|
||
|
||
... then we add our one condition (that the mail
|
||
appears to be from the person in question):
|
||
|
||
* ^FROMharasser@spamhome.com
|
||
|
||
|
||
|
||
FROM is a "magic" value for procmail -- it checks
|
||
from, resent-by, and similar header lines. You could
|
||
also use ^From: -- which would only match the header
|
||
line(s) that start with the string "From:"
|
||
|
||
|
||
|
||
The ^ (hiccup or, more technically "caret")
|
||
|
||
is a "regular expression anchor" (a techie phrase that
|
||
means "it specifies *where* the pattern must be
|
||
found in order to match." There is a whole book
|
||
on regular expression (O'Reilly & Associates).
|
||
"regexes" permeate many Unix utilities, scripting
|
||
languages, and other programs. There are slight
|
||
differences in "regex" syntax for each application.
|
||
However the man page for 'grep' or 'egrep' is an
|
||
excellent place to learn more.
|
||
|
||
|
||
|
||
In this case the hiccup means that the pattern
|
||
must occur at the beginning of a line (which is
|
||
its usual meaning in grep, ed/sed, awk, and other
|
||
contexts).
|
||
|
||
|
||
|
||
... and we add a couple of conditions to avoid
|
||
looping and to avoid responding to automated systems
|
||
|
||
* !^FROM_DAEMON
|
||
* !^FROM_MAILER
|
||
|
||
|
||
|
||
(These are a couple more "magic" values.
|
||
The man pages show the exact regexes that are
|
||
assigned to these keywords -- if you're curious or
|
||
need to tweak a special condition that is
|
||
similar to one or the other of these).
|
||
|
||
|
||
|
||
... and one more to prevent some tricky loop:
|
||
|
||
* !^X-Loop: myaddress@myhost.mydomain.org
|
||
|
||
|
||
|
||
(All of these patterns start with "bangs" (exclammation
|
||
points) because the condition is that *no* line of the
|
||
header start with any of these patterns. The 'bang' in
|
||
this case (and most other regex contexts) "negates" or
|
||
"reverses" the meaning of the pattern).
|
||
|
||
|
||
|
||
... now we add a "disposition" -- the autoresponse.
|
||
|
||
| (formail -rk \
|
||
-A "X-Loop: yourname@youraddress.com" \
|
||
-A "Precendence: junk"; \
|
||
echo "Please don't send me any more mail";\
|
||
echo "This is an automated response";\
|
||
echo "I'll never see your message";\
|
||
echo "So, GO AWAY" ) | $SENDMAIL -t -oi
|
||
|
||
|
||
|
||
This is pretty complicated -- but here's how it works:
|
||
* The pipe character tells procmail that it should launch a program and feed the message
|
||
to it.
|
||
* The open parenthesis is a Bourne shell construct that groups a set of commands in such
|
||
a way as to combine the output from all of them into one "stream." We'll explain this
|
||
more later.
|
||
* The 'formail' command is a handy program that is included with the procmail package. It
|
||
"formats" mail headers according to its command line switches and its input.
|
||
+ -rk tells 'formail' to format a "reply" and to "keep" the message body. With these
|
||
switches formail expects a header and body as input.
|
||
+ The -A parameters tells formail to "add" the next parameter as a header line. The
|
||
parameters provided to the -A switch must be enclosed in quotes so the shell
|
||
treats the whole string (spaces and all) as single parameters.
|
||
+ The backslashes at the end of each line tell procmail mail to treat the next line
|
||
as part of this one. So, all of the lines ending in backslashes are passed to the
|
||
shell as one long line.
|
||
+ This "trailing backslash" or "line continuation" character is a common Unix idiom
|
||
found in a number of programming languages and configuration file formats.
|
||
+ The semicolons tell the shell to execute another command -- they allow several
|
||
commands to be issued on the same command line.
|
||
+ Each of the echo commands should be reasonably self-explanatory. We could have
|
||
used a 'cat' command and put our text into a file if we wanted. We can also call
|
||
other programs here -- like 'fortune' or 'date' and their output would be combined
|
||
with the rest of this).
|
||
+ Now we get to the closing parenthesis. This marks the end of the block of commands
|
||
that we combined. The output from all of those is fed into the next pipe -- which
|
||
starts the local copy of sendmail (note that this is another variable that
|
||
procmail toughtfully presets for us).
|
||
+ The -t switch on sendmail tell it to take the "To:" address from the header of
|
||
it's input (where 'formail -r' put it) and the -oi switch enables the sendmail
|
||
"option" to "ignore" lines that consist only of a 'dot' (don't worry about the
|
||
details on that).
|
||
|
||
|
||
Most of the difficulty in understanding procmail
|
||
as nothing to do with procmail itself. The intricacies
|
||
of regular expressions (those wierd things on the
|
||
'*' -- conditional lines) and shell quoting and
|
||
command syntax, and how to format a reply header that
|
||
will be acceptable to sendmail (the 'formail' and
|
||
'sendmail' stuff) are the parts that require so
|
||
much explanation.
|
||
|
||
|
||
|
||
The best info on mailbots that I've found used to be
|
||
maintained by Nancy McGough (sp??) at the Infinite Ink
|
||
web pages:
|
||
|
||
http://www.jazzie.com/ii/
|
||
|
||
|
||
|
||
|
||
|
||
More information about procmail can be found in
|
||
Era Eriksson's "Mini-FAQ." at
|
||
|
||
http://www.iki.fi/~era/procmail/mini-faq.html
|
||
|
||
|
||
|
||
|
||
|
||
I also have a few procmail and SmartList links off of
|
||
my own web
|
||
pages.
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, James T. Dennis
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ] [ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
USR
|
||
Utilizing the US Robotics Pilot with Linux
|
||
|
||
by James McDuffie,mcduffie@scsn.net
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
Why the Pilot?
|
||
|
||
There are a lot of Personal Digital Assistants available on the market
|
||
these days. These include the Newton, Windows CE machines, and Psion. But
|
||
the PDA being discussed here is the US Robotics Pilot. Before purchasing a
|
||
PDA I thought carefully about a number of issues. These included cost,
|
||
portability, and how well it could be expanded.
|
||
|
||
|
||
|
||
|
||
|
||
The are a couple reasons why I purchased the Pilot. For one thing the
|
||
Pilot is not very expensive. The Pilot comes in two different versions,
|
||
called the Pilot 1000 and the Pilot 5000. These are the exact same except
|
||
for the amount of memory they have loaded. The Pilot 1000 has 128k of
|
||
memory while the Pilot 5000 has 512k of memory. What I did was purchase a
|
||
Pilot 1000 and a 1 MB upgrade chip at the same time. This way I saved
|
||
money in the long run than if I had purchased a Pilot 5000 and then later
|
||
upgraded to 1 MBB of memory. The Pilot is considerably cheaper than other
|
||
PDAs. Such as the Newton which is priced as under $800. The Pilot 1000
|
||
can be found for as low as $224 and the Pilot 5000 for as low as $269.
|
||
The 1 MB upgrade chip can be found for as little as $89. Prices such as
|
||
this make the Pilot a cost effective solution.
|
||
|
||
|
||
|
||
Another issue was how portable the Pilot is. Carrying around a heavy PDA
|
||
all day is not very comfortable. But the Pilot is very portable. It
|
||
measures 4.7 x 3.2 x .7 inches, small enough to fit comfortably in your
|
||
hand. The Pilot only weighs 5.7 ounces, with batteries. Because of this
|
||
the Pilot can fit comfortably in your shirt pocket or your pants pocket.
|
||
The Pilot's power supply is two 2 triple A batteries. These batteries can
|
||
last you up to a month if you use the Pilot moderately. After all a PDA is
|
||
supposed to help you, not burden you down by being bulky and heavy.
|
||
|
||
|
||
|
||
The Pilot is very expandable too. Such is the case with the 1 MB
|
||
upgrade chip that can be purchased from varies places. I find that 1 MB
|
||
of memory is more than enough memory for my needs. The Pilot is also
|
||
expandable in that you can upload any of numerous shareware or commercial
|
||
applications for the Pilot. There is even a program that allows you to
|
||
hook your Pilot up to a modem and dial into your ISP and then check your
|
||
POP mail! These applications are very small. The average application
|
||
made for the Pilot runs about 10k. With a 1 MB chip you could
|
||
theoretically have 100 10k apps on the Pilot. The Pilot features a RS-232
|
||
serial connector on the bottom of it. The connector is used for syncing
|
||
the Pilot with your desktop computer or for other uses. Other uses
|
||
include hooking up a modem or hooking up a soon to be release wireless
|
||
modem and pager. The Pilot can grow as your need for it grows.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Using the Pilot with Linux
|
||
|
||
Right now there is software available for use with the Pilot and Linux and
|
||
other Unix flavors. You can obtain the software for use with Linux
|
||
from:
|
||
|
||
|
||
|
||
ftp://ns1.pfnet.com/pub/PalmOS/
|
||
|
||
This software is still in development, but is highly usable. To use this
|
||
software all you have to do is get the latest pilot-link package and
|
||
untar/ungzip it. Once you have it expanded all it takes is to run the
|
||
configure script and then do a make. You will then have
|
||
about 16 programs depending on what version you have. I suggest that you
|
||
install all of these programs into their own directory. I have mine
|
||
installed in /usr/local/pilot and have included this directory in my path
|
||
statement. This will make it easier for you to play around with the
|
||
software. If you want to run the software as any user other than root,
|
||
you will have to set them suid root. I have done this but restricted
|
||
their execution to a group that only my login is a member of. This allows
|
||
the software to execute the serial port.
|
||
|
||
|
||
|
||
The software is simple enough to use. You simply supply supply the program
|
||
name, the serial port and other information such as a filename. The
|
||
pilot-xfer program allows you to install programs or data files that
|
||
programs use into the Pilot. To install program all you would have to do
|
||
is use the command pilot-xfer /dev/cua?? -i [program name]. After
|
||
entering this your press the hot-sync button on the Pilot cradle and the
|
||
Pilot installs the program. The program is then available for immediate
|
||
use. Or if you wanted to install a text file into the memo you would
|
||
simply enter install-memo /dev/cua?? [file name]. There are plenty
|
||
of other programs that help you transfer information with other
|
||
applications such as the date book, the address book and the to do list.
|
||
|
||
|
||
|
||
For me, the name of these programs are pretty long and with typing the
|
||
serial device name it gets tedious fast. So I set up a couple of aliases
|
||
to speed up things. Some of my aliases are:
|
||
|
||
alias pxi='pilot-xfer /dev/cua2 -i'
|
||
|
||
alias im='install-memo /dev/cua2'
|
||
|
||
These are the functions I use the most, because I hardly ever download
|
||
applications from my Pilot since I already have them on my hard drive.
|
||
The same goes for memos I install. But for the information that I create
|
||
in the Pilot I use the sync-memodir program. It puts every memo in
|
||
a separate fill. But the down side is that does not put the files in
|
||
categories as they are on your Pilot. The up side is that the Windows
|
||
software is not required.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
What to do if you do not have a free serial port
|
||
|
||
One problem I encountered was that I did not have a free serial port. My
|
||
mouse is on cua0 and my modem on cua1. For a while I had to switch the
|
||
Pilot cradle with my modem. This was highly annoying because I could not
|
||
use the modem while I was playing with my Pilot. I solved this with a $29
|
||
dollar ISA card I found at a local computer story, local as in locally
|
||
owned and operated. The card is called the COM-5 card and is manufactured
|
||
by Mouse Systems.
|
||
|
||
|
||
|
||
|
||
|
||
The card is useful because if COM1 and COM2 are in use then COM3 and COM4
|
||
are not available. A COM port is simply a label that identifies a
|
||
specific IRQ and address. COM1 and COM3 share the same IRQ as does COM2
|
||
and COM4. But this card allows you to add another serial port at any
|
||
combination of IRQ and address that you desire. I have mine set on IRQ 12
|
||
and address 238. To get this to work with Linux all I had to do was tell
|
||
Linux to map this specific address and IRQ combination to the device
|
||
/dev/cua2. The following command does this:
|
||
|
||
setserial /dev/cua2 port 0x238 irq 12 autoconfig
|
||
|
||
It tell Linux where the serial port is available and to what device to
|
||
map it. With this working I was able to play around with my Pilot while
|
||
using my modem. Also I now have an extra serial port should I need it for
|
||
other tasks.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Logging in to a Linux computer via the Pilot
|
||
|
||
Logging into a Linux computer via the Pilot is possible. It is not really
|
||
that hard once you have the correct software. All you need is the
|
||
application called Simple Term which can be obtained from Adam's Software
|
||
Archive listed in the links section. Install the software on the Pilot
|
||
and then make sure the Pilot is hooked up to the serial port. Run agetty
|
||
on the serial device such as with this command:
|
||
|
||
|
||
|
||
/sbin/agetty 19200 cua2 vt100
|
||
|
||
And then put the Pilot in the cradle and hit online. You should then be
|
||
able to talk with your Linux computer. The reason this works with the
|
||
cradle is because the cradle is basically just a null modem hook up to
|
||
the computer. Because of this a null modem adapter put on the cradle will
|
||
allow you to use the Pilot on a modem, because of the fact that it
|
||
reverses the null modem feature of the cradle. Logging into your Linux
|
||
computer via the Pilot is not the most useful thing in the world since
|
||
the program does not contain any terminal emulation. But it is possible
|
||
which makes it fun.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Links
|
||
|
||
US Robotics Pilot Page
|
||
|
||
Scott's Pilot Page
|
||
|
||
Adam's USR Pilot Software Archive
|
||
|
||
Aslan's Pilot PDA Links
|
||
|
||
|
||
|
||
These links should be enough to learn about the US Robotics Pilot and how
|
||
to use them. I hope this information will be helpful. If you have any
|
||
questions what so ever, please contact me.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Pilot-Unix Mailing List
|
||
|
||
The pilot-unix mailing list is for discussion and idea-sharing for those
|
||
interested in using the US Robotics Pilot PDAs with UNIX systems. This
|
||
includes people who are interested in helping to develop tools to allow the
|
||
Pilot to operate with UNIX, and possibly to develop an SDK for the Pilot
|
||
for Unix.
|
||
|
||
|
||
|
||
|
||
|
||
All postings to the list should be sent to the address
|
||
|
||
|
||
|
||
pilot-unix@lists.best.com
|
||
|
||
|
||
|
||
Commands, such as subscribe or unsubscribe requests should be sent to the
|
||
address
|
||
|
||
|
||
|
||
pilot-unix-request@lists.best.com
|
||
|
||
|
||
|
||
Note that there are two list modes - normal (you receive each message as it
|
||
is sent) and digest. The default mode is digest mode. To subscribe to the
|
||
digest, send an email message with the single word "subscribe" in the
|
||
message body to "pilot-unix-request@lists.best.com". To subscribe to the
|
||
normal list, use the word "subsingle" in the message body. You can also get
|
||
a list of commands which the list server understands by sending mail with
|
||
the single word "help" in the body to the -request address.
|
||
|
||
|
||
|
||
If you have administrative questions or requests which require the
|
||
intervention of a person, please send those to
|
||
|
||
|
||
|
||
pilot-unix-owner@lists.best.com.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, James McDuffie
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Stronghold
|
||
: Undocumented Fun
|
||
|
||
|
||
|
||
By James Shelburne, brammal@iamerica.net
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Disclaimer: Secure Socket Layer technology is a pretty touchy
|
||
legal matter. There's lots of money riding on it for a relatively small
|
||
number of companies. Therefore keep in mind that what I say in this article
|
||
may not be correct. If you plan to use Stronghold/Netscape (or any other SSL
|
||
server/client pair) for inter-office communication get legal advice, or make
|
||
sure you know what you're doing.
|
||
|
||
Also I won't go into some of the knowledge that I think you already
|
||
have, like the basics of public key cryptography or the fact that SSl URLs
|
||
are https:// instead of http://.
|
||
|
||
|
||
|
||
If you've looked for affordable ways to incorporate Secure Socket technology
|
||
into your intranet you've probably run into Stronghold. Although Stronghold
|
||
runs on platforms other than Linux it's a great, low resource intensive way,
|
||
to use a spare Linux box for providing encrypted/authenticated document
|
||
transfers over the Internet. This is perfect if you need to
|
||
"network" separate offices over the Internet without worrying about
|
||
prying eyes looking in on your document transfers.
|
||
|
||
|
||
The main problem you face when trying to use Stronghold for inter-office
|
||
communication is the lack of good documentation. Stronghold is mainly
|
||
intended for companies who want to receive credit card orders on-line. As
|
||
such, the installation scripts and documentation don't go into much detail
|
||
about setting up Certificate Authorities (more on this later) and the
|
||
features that allow you to not only have server authentication, but also
|
||
client authentication as well. To clarify things a bit I'll give you a short
|
||
"tutorial" on Secure Socket features. Since Netscape is the only
|
||
browser that currently has a decent Secure Socket Layer (or SSL from here on
|
||
out) implementation, I'll use that.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Netscape Security
|
||
|
||
|
||
|
||
Start up Netscape (3.0) and select Options -> Security
|
||
Preferences. Click on the tab that says Site Certificates. This
|
||
dialog box contains information about what Certificate Authorities your
|
||
browser currently recognizes and what level of trust you have assigned to
|
||
each. To illustrate this, select United States Postal Service CA and
|
||
click the button that says "Edit Certificate..."
|
||
|
||
|
||
Now you should see another dialog box pop up which contains various
|
||
information on that particular certificate. Notice the two fields:
|
||
"This certificate belongs to:" and "This certificate was
|
||
issued by:". In both cases it contains the same information. This means
|
||
that the certificate has been "self-signed" by the certificate
|
||
owner.
|
||
|
||
|
||
A little further down in the dialog box you'll see a pair of "radio
|
||
buttons" that allow you to either accept or deny connections from
|
||
secured Web sites that have been certified with this key. In other words, if
|
||
you allow connections from sites whose keys have been signed by the USPS
|
||
you're telling Netscape that you trust the USPS enough to certify
|
||
SSL-enabled Web servers and that no further proof of a server's identity is
|
||
needed. In reality, the USPS doesn't publicly certify keys (at least that I
|
||
know of), we're just using that as an example. The final check-box tells
|
||
Netscape to warn you before a secure connection is established to a Web
|
||
server that has been certified by this key. Click "Cancel" to exit
|
||
this dialog box.
|
||
|
||
|
||
If you connect to a site that has not been certified by one of the CAs
|
||
listed, all is not lost; you can still accept the individual site's key as
|
||
an individual "Site Certificate."We won't worry about this method
|
||
too much, but if you want to see which, if any, site certificates are
|
||
installed in Netscape then select Site Certificates from the drop-down
|
||
list above the "Site Certificate" list box. Note that, for some
|
||
reason, Certificate Authority certificates are considered
|
||
"Site Certificates."
|
||
|
||
|
||
|
||
What you've looked at here is enough for basic electronic commerce. In other
|
||
words, if you want to send sensitive information to a Web site, all you
|
||
really need to know is that the site is who it claims to be. The Certificate
|
||
Authorities listed provide this level of security. If you want to
|
||
use your Web server to distribute sensitive information to select
|
||
individuals, Server Authentication doesn't do you much good. Client
|
||
Authentication gives you the ability to authenticate the clients who connect
|
||
to your SSL Web server.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Client Authentication
|
||
|
||
|
||
|
||
Client Authentication of one of the neatest features of Netscape. In the
|
||
previous screen, select the tab that says Personal Certificates. If
|
||
you installed any Client Certificates (doubtful) they'll be here. If a
|
||
server requests Client Authentication, Netscape can perform one of three
|
||
actions:
|
||
|
||
|
||
1. Automatically decide which Client Certificate to send the server.
|
||
2. Let the user decide which Client Certificate to send to the server.
|
||
3. Send a particular Client Certificate to the server.
|
||
|
||
|
||
|
||
You can tell which action you want Netscape to perform by selecting the
|
||
appropriate option from the drop-down list in the "Personal
|
||
Certificates" dialog box.
|
||
|
||
Client certificates can be purchased from
|
||
various Certificate Authorities. This can get to be expensive if you want to
|
||
certify multiple client browsers, not to mention a hassle. Luckily
|
||
Stronghold comes with the basic tools that will allow you to create your own
|
||
small-time certificate authority that you can use to certify clients who
|
||
connect to your server and even other servers on your intranet.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
A look at the files
|
||
|
||
|
||
|
||
There are lots of relevant files that Stronghold works with. I'll list the
|
||
main, non-HTTP-specific ones. I'll also assume you have installed the
|
||
program in the default directory (preferred).
|
||
|
||
|
||
|
||
/usr/local/ssl/private/YOUR-SERVER.key This is your server's
|
||
*private* key and should not be world-accessible at all. The way Stronghold
|
||
installed the directory "private" is chmod 700 root.
|
||
|
||
|
||
/usr/local/ssl/certs/YOUR-SERVER.cert This is where your servers
|
||
*public* key is located. This should be world-readable, and in fact your
|
||
server won't work in secure mode if it is not.
|
||
|
||
|
||
/usr/local/ssl/CA/rootcerts.pem This file contains the public keys
|
||
from the various CAs who issue Client Certificates. When your server wants
|
||
to check that a Client Certificate is actually issued by a valid CA it looks
|
||
in this file. This can be changed, but more on that later.
|
||
|
||
|
||
/usr/local/ssl/CA/cacert.pem When you start your own CA this file
|
||
will contain your public key. Note: This is not your server's public key.
|
||
|
||
|
||
/usr/local/ssl/CA/private/cakey.pem The private key for your CA
|
||
is stored here. As with all private keys, only root (or whatever username
|
||
you administer your CA under) should be able to see or change it.
|
||
|
||
|
||
/usr/local/ssl/CA/ssleay.conf AND /usr/local/ssl/lib/ssleay.conf For
|
||
one reason or another, Stronghold has two separate configuration files.
|
||
There is only a slight difference between them and Stronghold seems to want
|
||
to use them both so I'll describe the files as if they were one and point out
|
||
the differences as we come to them.
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
The ssleay.conf file
|
||
|
||
|
||
|
||
ssleay.conf is the main configuration file for Stronghold's key processing
|
||
tools. It's relatively complex but fairly well commented out so I won't go
|
||
into the whole thing, just a general overview and extra explanation where I
|
||
think it's necessary.
|
||
|
||
|
||
|
||
The thing that makes this configuration file different from what we've come
|
||
to expect from Linux (and UN*X in general) is the way it's subdivided. If
|
||
you've done much MS Windows programming you'll notice that it is divided
|
||
into key=value pairs and most sections also have an
|
||
"application name," for instance:
|
||
|
||
|
||
[ policy_match ]
|
||
countryName = match
|
||
stateOrProvinceName = match
|
||
organizationName = match
|
||
organizationalUnitName = optional
|
||
commonName = supplied
|
||
emailAddress = optional
|
||
|
||
|
||
In this section policy_match is the "application name" and
|
||
the rest are standard key=value pairs. Here the whole section can be
|
||
referenced by the label "policy_match"
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Selected fields (from ssleay.conf):
|
||
|
||
|
||
|
||
default_crl_days: This "CRL" stumped me for a while. Apparently
|
||
it has to do with Certificate Revocation Lists, a feature that is not really
|
||
implemented in the SSleay toolkit (the package that was used to give
|
||
Stronghold it's SSL capabilities). Actually that's not completely true, the
|
||
CRL capability is there but CRL handling utilities aren't.
|
||
|
||
|
||
|
||
policy: The "policy" field lets you select which
|
||
policy you want to sign keys under. You probably won't need to mess with
|
||
this since, in most cases, you will check and sign keys by hand. If you want
|
||
to use a specific policy (check the Stronghold docs, what there is of them
|
||
;) ) change this field to "policy_match" and edit the policy_match
|
||
section below to reflect your chosen policy. The two possible values:
|
||
policy_match and policy_anything are
|
||
"application names" of the sections of the configuration file that
|
||
define who you will and will not sign keys for, or your "policy."
|
||
|
||
|
||
|
||
distinguished_name: There is only one difference between the two
|
||
different configuration files that Stronghold's key management tools use,
|
||
and this is it. This key=value pair will point to one of two
|
||
different "application names": req_distinguished_name or
|
||
makeca_distinguished_name. The only time it will point to
|
||
makeca_distinguished_name is when you are creating your own Certificate
|
||
Authority, the rest of the time it will point to
|
||
req_distinguished_name.
|
||
|
||
|
||
|
||
[makeca_distinguished_name]: This and the next entry are not
|
||
key=value pairs, but rather "application names" that define
|
||
particular groups of information.
|
||
|
||
The makeca_distinguished_name section of the file is only really referenced
|
||
when you first create your CA. Also you do
|
||
not need all of the fields that are included under this heading. For
|
||
instance, when I made my CA key pair I removed both
|
||
"organizationalUnitName" and "commonName." Because we
|
||
aren't dealing with slick commercial software, it may object if you start
|
||
altering this configuration file heavily.
|
||
|
||
|
||
|
||
|
||
[req_distinguished_name]: This section of the config file is where information on
|
||
machines to certify is kept. When you create a key-pair/signing request for
|
||
your SSl server with genkey, default information is looked up here.
|
||
Feel free to change some of the fields if you don't want this much info in
|
||
your keyfile. Beware, some commercial key signers (i.e. RSA or whoever) may
|
||
object to altered request formats. As before, your CA may choke if it gets a
|
||
request that has been highly altered. One field to especial watch out for is
|
||
"commonName," this is where Netscape looks to see if a web server
|
||
is using an appropriate keyfile for it's domain name. For example, if Netscape
|
||
tries to make a secure connection to www.insecure.org and the keyfile that
|
||
the server sends says it belongs to www.secure.org, you'll get a little
|
||
dialog box warning you about a possible security problem. If no
|
||
"commonName" is supplied, Netscape fails to connect and gives an
|
||
error-message.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
The programs
|
||
|
||
|
||
|
||
genkey:Genkey is the program that is used to generate an initial
|
||
key-pair for your secure server and send out a signing request certificate
|
||
to your chosen CA. Before you run genkey make sure and create backup of both
|
||
your private and public keys for your Web server. After you make backups,
|
||
delete the original keys as genkey won't operate if it finds that a key-pair
|
||
already exists. Run the program like this:
|
||
|
||
|
||
|
||
genkey YOUR_SERVER_NAME
|
||
|
||
|
||
|
||
This will create a key-pair for your server and send out a Certificate
|
||
Signing Request (or CSR). Since we are going to create our own CA and sign
|
||
the key for the Web server with that, make sure that the CSR is sent to your
|
||
own e-mail address and not Verisign. Now you have generated an initial
|
||
key-pair and CSR. Get the CSR from your e-mail and save it for later.
|
||
|
||
Also note that the defaults for genkey are had from the
|
||
req_distinguished_name section of /usr/local/ssl/lib/ssleay.conf, if
|
||
there are fields you don't want included in your keyfile remove them from
|
||
this section.
|
||
|
||
|
||
|
||
makeca: Makeca is the program that is used to actually create your
|
||
Certificate Authority. This program gets it's default information from the
|
||
file /usr/local/ssl/CA/ssleay.conf in the makeca_distinguished_name
|
||
section (assuming you have installed everything in the default locations).
|
||
|
||
Makeca is executed without any arguments and is actually pretty intuitive.
|
||
As before, if there are entries that you don't want in your CA's keyfile
|
||
just remove their entries from the makeca_distinguished_name section
|
||
of the relevant configuration file.
|
||
|
||
|
||
|
||
ca: Ca is the actual program that you will use to perform
|
||
Certificate Authority functions. This includes signing other Web server keys
|
||
and Netscape's client keys. Assuming that you have been following along up
|
||
till now I'll assume that you have already used genkey to create a
|
||
key for your Web server and that you have mailed the CSR to yourself. To
|
||
sign your Web server's CSR save it as /tmp/csr and type the following:
|
||
|
||
|
||
|
||
ca -config /usr/local/ssl/lib/ssleay.conf -in /tmp/csr
|
||
|
||
|
||
|
||
ca will check the indicated configuration file to see what, if any, policy
|
||
has been defined for signing keys and ask you for your CA password. After
|
||
the key is signed it is stored in /usr/local/ssl/CA/new_cert/. New
|
||
certificates are not stored by name but by serial number, with the newest
|
||
cert having the highest number.
|
||
|
||
The cert is stored in PEM (Privacy Enhanced Mail) format and as such, can be
|
||
included in e-mail as is.
|
||
|
||
|
||
|
||
getca: Once you have a signed certificate for your Web server you
|
||
are ready to install it. Getca is the program for this and is called with:
|
||
|
||
|
||
|
||
getca YOUR_SERVER_NAME < /tmp/cert
|
||
|
||
|
||
|
||
We are assuming that /tmp/cert is your signed keyfile in PEM format.
|
||
|
||
One of the odd things about getca is that the input file must be
|
||
"piped" into the program.
|
||
|
||
If this went correctly your Web server should now have a public key signed
|
||
by your CA. Now for the tricky part...
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Making Everything Work
|
||
|
||
|
||
|
||
Even though you now have a signed key certificate for your Web server you
|
||
still can't use it. This is because Netscape isn't aware of your CA, this is
|
||
to say that your CA isn't in the list of Site Certificates that we
|
||
looked at earlier. To add your CA to that list follow these steps:
|
||
|
||
|
||
1. Since the only (easy) way to install a key certificate in Netscape is through a Web
|
||
server you'll have to add a new MIME type. I added mine to the mime.types file by
|
||
adding a line like this:
|
||
|
||
application/x-x509-ca-cacert cacert
|
||
There are other ways to add MIME types that don't involve messing with config files but I
|
||
like the direct approach. Adding this MIME type tells Stronghold that every file that
|
||
ends with a .cacert extension should be sent as a Certificate Authority's public key.
|
||
|
||
2. The public key for your Certificate Authority is located in
|
||
/usr/local/ssl/CA/cacert.pem. The only problem here is that it in in PEM format and
|
||
Netscape expects CA keys to be in DER format. Luckily changing the format is pretty
|
||
painless, simply move into the same directory as cacert.pem and type the following:
|
||
|
||
x509 -outform DER cert.cacert
|
||
Like getca, x509 requires input and output to be "piped." In any event your key is now in
|
||
proper format and can be moved into one of your Web server's document directories.
|
||
|
||
3. Now point Netscape at your freshly converted CA certificate (cert.cacert). Since you've
|
||
added the appropriate MIME type Netscape will know that it is accepting a CA
|
||
certificate and will lead you though the process of installing it.
|
||
|
||
|
||
|
||
With that out of the way you should now see your CA's key when you look in
|
||
Netscape's
|
||
Site Certificates dialog box. Now, when you connect with
|
||
your Web server, Netscape will find the CA who signed the server's key and
|
||
try to locate it in it's database of CA certificates. Since we've just
|
||
installed your CA's certificate, Netscape should accept encrypted connections
|
||
from any site that has been signed by your CA.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Client Certificates
|
||
|
||
|
||
|
||
Creating Client Certificates for Netscape is a pretty complex task, and one
|
||
of the least documented features of SSL. All of Netscape's Client
|
||
Certificate functions work through a WWW interface, and as such you'll need
|
||
two special files: a HTML and a CGI, here are both:
|
||
|
||
|
||
|
||
|
||
key_req.cgi---------------------------------------------------------
|
||
|
||
#!/usr/bin/perl
|
||
read(STDIN,$input,$ENV{'CONTENT_LENGTH'});
|
||
open(TEST, ">/tmp/client_csr");
|
||
$input =~ s/\+/ /g;
|
||
$input =~ s/&/\n/g;
|
||
$input =~ s/%2B/\+/g;
|
||
$input =~ s/%2F/\//g;
|
||
$input =~ s/%3D/=/g;
|
||
$input =~ s/%0A//g;
|
||
print TEST ("$input");
|
||
print("Content-type: text/html\n\n$input\n");
|
||
--------------------------------------------------------------------
|
||
|
||
keygen.html---------------------------------------------------------
|
||
<HTML><HEAD>
|
||
<TITLE>Make akey</TITLE></HEAD><BODY>
|
||
<FORM ACTION="/cgi-bin/key_req.cgi" METHOD=POST>
|
||
E-mail: <br>
|
||
<INPUT TYPE="TEXT" NAME="Email" MAXLENGTH=40SIZE=40><br>
|
||
Common Name: <br>
|
||
<INPUT TYPE="TEXT" NAME="CN" MAXLENGTH=64 SIZE=64><br>
|
||
Organization Name: <br><INPUT TYPE="TEXT" NAME="O"><br>
|
||
Organization Unit: <br><INPUT TYPE="TEXT" NAME="OU"><br>
|
||
Locality: <br><INPUT TYPE="TEXT" NAME="L"><br>
|
||
State or Province: <br><INPUT TYPE="TEXT" NAME="SP"><br>
|
||
Country (2 letter): <br>
|
||
<INPUT TYPE="TEXT" NAME="C" MAXLENGTH="2" SIZE="2"><br>
|
||
<KEYGEN NAME="SPKAC" CHALLENGE="testkeygen"><br>
|
||
<INPUT TYPE="submit" VALUE="Generate Key"></FORM>
|
||
</BODY></HTML>
|
||
--------------------------------------------------------------------
|
||
|
||
|
||
These files may need a little modification to work on your system, but they
|
||
should work like this:
|
||
|
||
|
||
|
||
keygen.html This is the actual HTML that Netscape needs to process a
|
||
key request. Like many things in Stronghold's SSL key management utilities,
|
||
you can omit just about whatever fields you want. For instance you might
|
||
want to only create keys that have an e-mail address and a name, for this
|
||
you would just remove everything except those two fields. This HTML was
|
||
snagged from the SSL user mailing list archive at
|
||
|
||
http://remus.prakinf.tu-ilmenau.de/ssl-users/
|
||
|
||
|
||
|
||
key_req.cgi This is the CGI program that will take Netscape's key
|
||
request and format it into something that your CA can understand and sign.
|
||
The script outputs two copies of the key request, the first goes to
|
||
/tmp/client_csr and the second is echoed back to Netscape as text.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Making A Signed Client Certificate
|
||
|
||
|
||
|
||
To create a Client Certificate signed by your CA follow these steps:
|
||
|
||
|
||
1. Assuming you have correctly installed both the CGI and HTML, load the HTML form into
|
||
Netscape. From the drop-down list select the key-size that you want. If you are using
|
||
the export version of Netscape you won't be able to choose a key size any larger than
|
||
512 bits. Fill in the fields with the desired information and select Generate Key.
|
||
Netscape will lead you through the steps of creating your key. When you see the text of
|
||
the client_csr echoed to the screen, you'll know that the script has been completed.
|
||
|
||
2. Go into your CA directory and type:
|
||
|
||
ca -spkac /tmp/client_csr -out /tmp/clientcert.der
|
||
You'll be asked for your CA password and, if all goes well, a signed Client Cert will be
|
||
output into /tmp/clientcert.der.
|
||
|
||
3. As with installing CA certificates Netscape needs a special MIME type telling it that a
|
||
particular file is a Client Certificate. Install this MIME type just like you installed
|
||
the previous one:
|
||
|
||
application/x-x509-user-cert der
|
||
This will tell Stronghold to use this MIME type for every file that ends in the .der
|
||
extension.
|
||
Whenever you change the configuration files you will have to restart the server so that
|
||
the changes will take effect. Stronghold comes with a script called reload that does
|
||
this for you.
|
||
|
||
4. Move clientcert.der into a directory of your Web server and point your copy of Netscape
|
||
at it. Netscape will then guide you through installing your new Client Certificate.
|
||
As you do this keep in mind that you won't be able to make a key with one copy of
|
||
Netscape and install the signed certificate in another. This is because every time
|
||
Netscape makes a key it keeps various information in a database file. Because it is in
|
||
a file you don't have to worry about creating the key and installing it in one session.
|
||
You can even shut down Netscape and install the key the next day without running into
|
||
any problems.
|
||
|
||
|
||
|
||
|
||
After the certificate is installed select Options -> Security
|
||
Preferences and click the Personal Certificates tab. Your new
|
||
Client Certificate should appear in the listbox.
|
||
|
||
If you're not the only person who has access to your machine, or even if you
|
||
*think* that you are. It's a good idea to password protect your Client
|
||
Certificate, this way someone won't be able to masquerade as you by simply
|
||
having access to your computer. In Options -> Security
|
||
Preferences, selecting the Passwords tab will bring up a dialog
|
||
box that will allow you to password protect your copy of Netscape. If you
|
||
set a password here it will will be used to actually encrypt your Client
|
||
Certificate(s). Loose this password and you're out of luck.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Client Authentication
|
||
|
||
|
||
|
||
Unfortunately client authentication isn't very advanced with any SSL Web
|
||
server package as of yet. In the future this will change so we might as well
|
||
get comfortable with SSL technology now, even though parts can get pretty
|
||
bumpy.
|
||
|
||
First we'll go through the steps to enable reliable Client Authentication
|
||
with Stronghold:
|
||
|
||
|
||
1. Open Stronghold's SSL configuration file in a text editor (httpsd.conf).
|
||
|
||
2. Enable SSLFakeBasicAuth. This will allow Stronghold to make limited decisions about who
|
||
should be allowed access to the server from the information it gets from Client
|
||
Certificates.
|
||
|
||
3. Set SSLVerifyClient to 2. This tells Stronghold that it must always verify clients who
|
||
want to connect to the server. If this isn't set then SSLFakeBasicAuth is pretty much
|
||
useless.
|
||
|
||
4. The SSLCACertificateFile directive tells Stronghold where to look for valid CA
|
||
certificates for checking signed client keys. Normally this points to the file
|
||
rootcerts.pem which contains public keys for a number of CAs that sign Client
|
||
Certificates. It's very important to point this to your own CA's public key file, in
|
||
this case cacert.pem. Doing this will only allow SSL connections from clients who have
|
||
had their keys signed by your CA, if you are using this for inter-office work, you will
|
||
want to do it this way.
|
||
|
||
|
||
|
||
Stronghold handles users in a different and more limited way than what most
|
||
webmasters are used to. For instance, in my Client Certificate I've only
|
||
included my Name and e-mail address. This way, Stronghold identifies me with
|
||
a string like this:
|
||
|
||
|
||
|
||
/CN=James Shelburne/Email=brammal@iamerica.net
|
||
|
||
|
||
If you will look at the source for the HTML form above you'll notice that
|
||
the "keys" are the same (i.e. CN for CommonName, Email for e-mail
|
||
address etc.). If I had included other fields in my certificate,
|
||
Stronghold would identify me by a larger list of "keys and
|
||
values."
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
Using SSLFakeBasicAuth
|
||
|
||
|
||
|
||
To test out SSLFakeBasicAuth insert a line like this in Stronghold's SSL
|
||
configuration file (Note: this only works in the SSL config file.
|
||
SSLFakeBasicAuth doesn't work with unencrypted HTTP transfers)
|
||
|
||
|
||
|
||
<Location /TEST_DIR>
|
||
AuthType Basic
|
||
AuthName Secret_Stuff
|
||
AuthUserFile /usr/local/apache/conf/ssl_user_file
|
||
<Limit GET POST>
|
||
require valid-user
|
||
</Limit>
|
||
</Location>
|
||
|
||
|
||
|
||
|
||
The file /usr/local/apache/conf/ssl_user_file (or whatever file you
|
||
choose to use) should contain the SSL identifier strings for each person
|
||
that you want to be able to access your SSL server. If I wanted to set up my
|
||
server so that I was the only one who would be able to access it, then the
|
||
only line in my ssl_user_file would be:
|
||
|
||
|
||
/CN=James Shelburne/Email=brammal@iamerica.net
|
||
|
||
|
||
When I try to make a secure connection to the server, Netscape will send the
|
||
Client Certificate made earlier. Stronghold will see that
|
||
SSLFakeBasicAuth is enabled and if I try and access /TEST_DIR, it will check
|
||
the users in the AuthUserFile to see if I'm there. If I'm in the file I'll
|
||
be granted access, if not, then access will be refused.
|
||
|
||
|
||
|
||
If you want to control access for a number of different user groups, feel free
|
||
to have multiple ssl_user_files each containing the identifying strings for the
|
||
people in that group. You might have ssl_accounting, ssl_sales and etc.
|
||
|
||
|
||
|
||
How do you find the strings that each user is identified by? When
|
||
SSLVerifyClient is set to 2 and a person tries to access a directory on the
|
||
server that is protected by SSLFakeBasicAuth the
|
||
user string comes up in the file /usr/local/apache/logs/ssl/access_log.
|
||
However, a better way to get the same information is
|
||
through the use of CGI environment variables, in particular
|
||
SSL_CLIENT_DN. Here's a short CGI script that when accessed through
|
||
SSL will display the user's identifying string:
|
||
|
||
|
||
|
||
CLIENT_DN displayer--------------------------------------------------
|
||
#!/usr/bin/perl
|
||
print <ltEOF
|
||
Content-type: text/html
|
||
|
||
<html><head>
|
||
<title>Your SSL_CLIENT_DN string</title></head><h3>Your SSL_CLIENT_DN string is:<br></h3>
|
||
<h4>$ENV{'SSL_CLIENT_DN'}</h4>
|
||
<html>
|
||
EOF
|
||
---------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
There are other CGI environment variables but SSL_CLEINT_DN is the most
|
||
useful. If you know your way around CGI programming you can automate your
|
||
site on the basis of the SSL_CLIENT_DN variable.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, James Shelburne
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Usenix/Uselinux in Anaheim
|
||
|
||
By Phil Hughes, phil@ssc.com
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Usenix/Uselinux Photo Album
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Here I am at Usenix at the Mariott Hotel in Anaheim. Actually,
|
||
it is pleasant to be in nice weather after almost drowning in
|
||
Seattle. It had rained here the day before so the air
|
||
was actually clean. But, let me talk about the show instead of the weather.
|
||
|
||
|
||
|
||
Usenix is a five-day show that, this year, has a heavy Linux
|
||
presence. For those not familiar with Usenix, it has been the "wear a tie
|
||
and get laughed at" Unix show for years. It is technical
|
||
and tends to draw a very seriously technical crowd.
|
||
|
||
|
||
|
||
It is broken up into tutorials, a trade show and a technical
|
||
conference. Well, plus the informal beer drinking sessions and such.
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Tutorial Days
|
||
|
||
|
||
|
||
The first two days are tutorials and I elected to attend an all-day
|
||
tutorial on the Linux 2.0 kernel presented by Stephen Tweedie. I found
|
||
it to be excellent and that seemed to be the general opinion of the
|
||
approximately 125 people who attended.
|
||
|
||
|
||
|
||
In eight hours and 170 overheads, Stephen addressed four specific
|
||
areas of the kernel: memory management, the scheduler, filesystems and
|
||
I/O and networking. I feel the goal of the talk, "to be with
|
||
the design and algorithms behind the Linux kernel and to be able
|
||
to read the Linux source code with some understanding"
|
||
was met. While Stephen did not necessarily expect attendees
|
||
to be familiar with Unix systems programming, the more you
|
||
knew about Unix the easier it was to understand the
|
||
presentation. After all, learning all about a new operating
|
||
system in eight hours is quite a challenge.
|
||
|
||
|
||
|
||
On Tuesday, Ted T'so taught a tutorial on writing device drivers under
|
||
Linux. This talk was attended by about 60 students. I elected to
|
||
take Tuesday as a day to catch up on LJ work and make a run to
|
||
Fry's Electronics to see if they carry Linux Journal. They
|
||
don't--which makes no sense as Fry's is exactly the
|
||
kind of place a Linux geek would want to go.
|
||
|
||
|
||
|
||
Tuesday evening started with free food and drink. This is one of
|
||
the best ways to get geeks talking. The Marriott did a great job
|
||
with an array of food carts with various choices including fruit,
|
||
veggies, potato patties, nachos, hamburgers and hot dogs. There
|
||
were also drink and dessert carts. They even had my drug of
|
||
choice, Dr. Pepper.
|
||
|
||
|
||
|
||
There were Birds-of-a-Feather sessions scheduled from 6PM
|
||
to 10PM. The two Linux ones were scheduled at the same time,
|
||
both at 7PM. As I already know a lot about Caldera Linux I
|
||
elected to go to the talk on Electronic Design Automation
|
||
(EDA). Peter Collins, manager of software services for
|
||
Exemplar Logic, headed the BoF and talked about how his
|
||
company had done an NT port but now had a Linux port. He
|
||
pointed out that EDA grew up on Unix-based systems like Suns and
|
||
the capabilities of Linux were a better fit for current EDA users.
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
The Trade Show
|
||
|
||
|
||
|
||
The trade show started on Wednesday. While this was not a Linux-specific
|
||
trade show, Linux had a large presence. Linux vendors included
|
||
Caldera, EST (makers of the bru backup utility), InfoMagic, Linux
|
||
International, Red Hat, Walnut Creek CDROM, Workgroup Solutions and
|
||
Yggdrasil. Plus, of course, our booth where we were giving away
|
||
sample copies of Linux Journal. Lots of other
|
||
vendors came by to talk about Linux and the Linux products they sell.
|
||
|
||
|
||
|
||
Linux interest was very high. While Usenix is a geek conference,
|
||
these are mostly professional geeks who are making serious technical
|
||
decisions for real companies. I answered many "It seems
|
||
like Linux could do this" inquiries.
|
||
|
||
|
||
|
||
Within the trade show I think SSC offered the biggest hit. We just
|
||
finished our new "fences" t-shirt. We sold out of the
|
||
shirts in about four hours on the first day. This gave me the
|
||
feeling that I was at the right show--not one where Microsoft
|
||
was being honored.
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Linus Talks and Linux Talks
|
||
|
||
|
||
|
||
On Wednesday afternoon we proved how significant the Linux
|
||
interest/presence was. Linus was scheduled to talk on the future of
|
||
Linux in a fairly large room, which soon filled up, with standees
|
||
everywhere--including the hall outside. Usenix quickly offered
|
||
to move the crowd into a much larger hall.
|
||
|
||
|
||
|
||
The talk went well as Linus explained new features and new
|
||
ideas. I won't bore you with details. The important thing is that
|
||
the goal is world domination. To some this sounded like humor. Maybe
|
||
it was. Only time will tell. In the mean time, building a superior
|
||
product can't hurt.
|
||
|
||
|
||
|
||
Wednesday evening was a time for more Linux sessions. I attended
|
||
one called The Classroom of the Future that showed how an
|
||
experimental program brought the Internet to K-12 schools in
|
||
Ireland. I also attended another called The Future of the
|
||
Linux Desktop, missing Greg Wettstein's talk on perceptions. [see
|
||
Greg's article "Linux in the Trenches" in LJ #5,
|
||
September 1994--Ed.]
|
||
|
||
|
||
|
||
Thursday was another day of talks and trade show. Peter Struijk,
|
||
SSC's "head nerd" managed to make it to
|
||
Victor Yodaiken' presentation on real-time Linux [see
|
||
LJ #34, February 1997] and a talk on the /proc file system
|
||
by Stephen Tweedie. In the evening,
|
||
I hosted a session on embedded, turnkey and real-time systems and
|
||
intended to make it to Developing Linux-based electronic markets
|
||
for Internet Trading Experiments but ended up talking with
|
||
some of the attendees of my session instead.
|
||
|
||
|
||
|
||
The evening ended with a short talk about Linux and reality with
|
||
Stephen Tweedie and then a trip back to the hotel room to finish up
|
||
this column. Then, if I run out of things to do I may actually
|
||
get some sleep.
|
||
|
||
|
||
|
||
Friday offers a day of Uselinux business talks. However, the
|
||
combination of editorial deadlines and exhaustion mean that
|
||
you won't get to read about it here.
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
What Next?
|
||
|
||
|
||
|
||
It was a great show. Usenix has always been a great show offering
|
||
high-quality sessions and a really nice mix of
|
||
"non-suites". Having Usenix/Uselinux made it all the
|
||
better. I am sure there will be serious cooperation between Usenix and Linux
|
||
International to continue to make Linux a big part of Usenix.
|
||
|
||
|
||
|
||
If I have one complaint it was that there was too much to do. Add
|
||
a Linux International board meeting to a schedule that included
|
||
sessions, talks and BoFs from 9AM to 11PM with parallel Linux tracks
|
||
plus the normal Usenix tracks and there just wasn't time to breathe
|
||
or, more importantly, sit down to a beer and talk to fellow kernel
|
||
hackers, systems administrators or vendors.
|
||
|
||
|
||
|
||
Anyone who wants to get copies of the Proceedings of this
|
||
conference or find out what the future holds with regard to Usenix,
|
||
should contact USENIX Association at
|
||
office@usenix.org or check out their web site at
|
||
http://www.usenix.org/ or, if all else fails, call
|
||
510-528-8649. Oh, and if you don't know what 8649 spells you
|
||
must be new to the Unix community.
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, Phil Hughes
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
"Linux Gazette...making Linux just a little more lovable!" [IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
WELCOME TO THE LINUX WEEKEND MECHANIC!
|
||
|
||
Published in the February 1997 Edition of the Linux Gazette
|
||
|
||
|
||
Copyright (c) 1997 John M. Fisk <fiskjm@ctrvax.vanderbilt.edu>
|
||
|
||
The Linux Gazette is Copyright(c) 1997
|
||
Specialized Systems Consultants Inc.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
Time To Become... The Linux Weekend Mechanic!
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
You've made it to the weekend and things have finally slowed down. You
|
||
crawl outa bed, bag the shave 'n shower 'cause it's Saturday, grab that
|
||
much needed cup of caffeine (your favorite alkaloid), and shuffle down
|
||
the hall to the den. It's time to fire up the Linux box, break out the
|
||
trusty 'ol Snap-On's, pop the hood, jack 'er up, and do a bit of
|
||
overhauling!
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Table of Contents
|
||
|
||
* Welcome To the Weekend Mechanic!
|
||
* Supermount for 2.x Kernels!
|
||
* DOSEMU and WP 6.1 for DOS...
|
||
* X Window Wallpapering...!
|
||
* Closing up Shop...
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] Howdy! Welcome to the Weekend Mechanic
|
||
|
||
|
||
|
||
|
||
Phew! It's good to be back!
|
||
|
||
|
||
|
||
|
||
So how's everyone doing? How are things going? I had a great semester
|
||
this past Fall -- got my 4.0 and everything :-) Still, things got rather
|
||
hectic toward the end of classes and I'm still trying to get myself
|
||
shoveled out from beneath a pile of backlogged email. I managed to survive
|
||
six finals, the usual glut of "end-of-the-semester projects",
|
||
a flight to Washington D.C. and a drive from there to N.Y. with my brother,
|
||
his wife, and three small boys to visit our parents for Christmas, a new HD
|
||
installation and complete system re-installation (the story of my life...),
|
||
AND I actually managed to show my face at work once or twice before classes
|
||
started again. If you're wondering why you haven't heard back from me,
|
||
hang in there, I'm coming... :-)
|
||
|
||
|
||
|
||
|
||
And is it only me, or does it seem that the 'ol Linux Gazette has really
|
||
taken on quite a nice face lift since Marjorie Richardson took the
|
||
helm...? I have to admit, the LG looks GREAT -- new graphics, better
|
||
organization, a search engine, and so forth. Having worked on the LG in
|
||
the past I know how much time and effort goes into each issue and I know
|
||
that Marjorie has worked hard on this. I know that a lot of folks have
|
||
taken the time to drop a note (the Mail section is as busy as it always
|
||
was... :-) but if you haven't, you really need to! Here, let me make it
|
||
easy for all of you with mail-capable browsers...
|
||
|
||
Dear Marjorie...
|
||
|
||
|
||
|
||
|
||
See! that wasn't so bad, and the reality of it is that demonstrated interest
|
||
and ongoing support are what keeps this 'ol ezine going in the first place!
|
||
Remember: "The masses may vote with their feet, but hackers
|
||
vote with both hands! (...unless you're able to type with your toes or are
|
||
gifted with a prehensile tail or something... :-)"
|
||
|
||
|
||
|
||
|
||
Anyway, drop Marjorie a note, she'll really appreciate it.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] Supermount for 2.x Kernels!
|
||
|
||
|
||
|
||
|
||
I don't know about you, but one of the things that I really missed
|
||
after doing the kernel 2.0 upgrade was being able to use supermount.
|
||
For those of you who are unfamiliar with it, supermount is a program
|
||
(in the form of a kernel patch) written by Stephen Tweedie that,
|
||
in effect, allows you to insert, take out, and re-insert removable media
|
||
such as floppies and CDs without going through all the rigmarole of using
|
||
mount and umount. For those of us who are converts from
|
||
the DOS era who are perpetually forgetting to umount a floppy before popping
|
||
it out of the drive, this comes as blessed succor.
|
||
|
||
|
||
|
||
|
||
And the good news is: IT'S BACK!
|
||
|
||
|
||
|
||
|
||
Actually, it probably wasn't gone all that long, truth be known. I've been
|
||
periodically checking in at the favorite sunsite.unc.edu mirror site
|
||
and peeking around the /pub/linux/kernel/patches/ subdir for a newer version
|
||
of supermount. No luck. Then recently, I saw a note posted by Stephen in
|
||
response to someone's query that the program was available for the 2.0
|
||
kernels. To break the suspense, here's the URL:
|
||
|
||
ftp://linux.dcs.ed.ac.uk/pub/linux/kernel/supermount/
|
||
|
||
|
||
|
||
|
||
There's a patch for kernel versions 2.0.0 and 2.0.23 and a README file that
|
||
outlines the fairly simple steps to applying the patch, recompiling the kernel
|
||
(and speaking of forgetting to do things, if you don't do a 'make zlilo' then
|
||
DON'T FORGET TO RERUN LILO if you install the new kernel), and setting up the
|
||
needed /etc/fstab entry to start using it. For those of you who've used
|
||
supermount in the past, you'll be pleased to know that the installation and
|
||
setup haven't changed since the kernel 1.2.13 version -- you should be able to
|
||
use your old /etc/fstab (if it's still lying around somewhere) and have things
|
||
come up working like they did in the Good Old Days!
|
||
|
||
|
||
|
||
|
||
Also, I wrote a short article on supermount several months ago for the LG and
|
||
mentioned that I'd had a lot of trouble getting it to work correctly with the
|
||
SoundBlaster 2X CD-ROM that I was using at the time. I was able to change CDs
|
||
but the directory listing simply wasn't being updated correctly. Well, after
|
||
the system upgrade this past Fall, I've switched to a Toshiba 8X CD and it
|
||
works fine with this. Which reminds me...
|
||
|
||
|
||
|
||
|
||
If you want to use supermount with a CD-ROM, at least with the ATAPI type drive
|
||
that I've got, then you'll likely want to make a small change to one of the
|
||
kernel files to allow the CD-ROM drive door to be opened when the drive has
|
||
been mounted. As most of you probably have noticed, once you mount the CD
|
||
drive, the door is locked -- you have to umount the drive in order to open it
|
||
and change CDs. Obviously, this doesn't work well if the point to using
|
||
supermount is NOT having to do this type of this. So, to disable door
|
||
locking, and PRESUMING YOU'RE USING AN ATAPI TYPE CD-ROM, then edit the file:
|
||
|
||
|
||
/usr/src/linux/drivers/block/ide-cd.c
|
||
|
||
|
||
|
||
|
||
|
||
Look for the following section which is near the beginning of the file:
|
||
|
||
|
||
|
||
/* Turning this on will disable the door-locking functionality.
|
||
This is apparently needed for supermount. */
|
||
|
||
#ifndef NO_DOOR_LOCKING
|
||
#define NO_DOOR_LOCKING 0
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
Change that '0' to a '1' after the NO_DOOR_LOCKING and you'll be all
|
||
set. This, as the quick-witted will have already surmised, does what it
|
||
implies: it disables door locking so you'll be able to change CDs. How
|
||
about that for easy, eh?
|
||
|
||
|
||
|
||
|
||
So, to summarize what you'll need to do, here's the brief rundown:
|
||
|
||
1. get your hands on the supermount patch (I'll help you with this one in a minute...)
|
||
2. apply the patch to the kernel:
|
||
|
||
$ cd /usr/src/linux
|
||
$ cp "path-to-patch"/supermount-0.4c-for-2.0.diff .
|
||
$ patch -s -p1
|
||
edit the /usr/src/linux/drivers/block/ide-cd.c file to disable door
|
||
locking
|
||
recompile your kernel AND RERUN LILO (ever get the idea that I've
|
||
forgotten to do this myself once or twice... :-)
|
||
edit your /etc/fstab to enable mounting of floppy or CD-ROM drives via
|
||
supermount
|
||
reboot the system to load the new kernel and enable supermount
|
||
Enjoy!!
|
||
|
||
|
||
|
||
|
||
|
||
Now, for the trusting (or merely lazy like myself... :-), here's a copy of the
|
||
patches and the README file:
|
||
|
||
|
||
|
||
|
||
supermount-0.4c-for-2.0.23.diff
|
||
|
||
supermount-0.4c-for-2.0.diff
|
||
|
||
supermount.README
|
||
|
||
|
||
|
||
|
||
If you're the suspicious or just plain cautious type then go ahead and get the
|
||
files from the URL above. Also, you might want to check there for updates or
|
||
newer releases.
|
||
|
||
|
||
|
||
|
||
One thing that I've not really tried yet is seeing what happens if the CD-ROM
|
||
drive is mounted via supermount and you attempt to play an audio CD. I've not
|
||
had the nerve to try this. In this case, it's probably safe to go ahead and
|
||
umount the drive, play the CD, and then mount the drive once again -- since
|
||
there's an entry for the CD-ROM drive in /etc/fstab, all you should have to do
|
||
is something like:
|
||
|
||
|
||
mount /cdrom
|
||
|
||
|
||
presuming that /cdrom is where you normally mount your CD.
|
||
|
||
|
||
|
||
|
||
The other thing that I've not tried is using supermount with BOTH ext2 and
|
||
MS-DOS type floppies. I suspect that it would cause a bit of trouble but,
|
||
again, I've not been daring (or foolish...?) enough to try this little
|
||
maneuver.
|
||
|
||
|
||
|
||
|
||
Anyway, I hope that give supermount a try! The README file is pretty helpful
|
||
in terms of answering basic setup and usage questions and he includes a copy
|
||
of his /etc/fstab file as an example. Hope you enjoy!
|
||
|
||
|
||
|
||
|
||
John
|
||
|
||
Nashville, TN
|
||
|
||
Mon Jan 20 10:26:51 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] DOSEMU and WP 6.1 for DOS...
|
||
|
||
|
||
|
||
|
||
I hesitate to even bring this up... :-)
|
||
|
||
|
||
|
||
|
||
One of the more common USENET postings in almost any of the linux
|
||
groups these days is some newbee who innocently ventures a question such as
|
||
"Is there a word processor for Linux like Word for Windows...".
|
||
After the poor bloke gets flamed to a crisp with ardent admonitions to eschew
|
||
such lollipop-ware and use a real text-processing system such as
|
||
LaTeX or GROFF, there usually ensues a heated debate over the virtues of one's
|
||
favorite system for getting something into print...
|
||
|
||
|
||
|
||
|
||
I think I'd like to avoid such debate... :-)
|
||
|
||
|
||
|
||
|
||
I would, however, like to humbly offer one possible solution to the need for a
|
||
word processor under Linux -- especially if you're either unfamiliar with
|
||
LaTeX or find that it doesn't completely meet your text-processing needs. And
|
||
that is, using DOSEMU and one of the common word processors available
|
||
for DOS. Now, if you already have a system working for you then by all means
|
||
stick with it! However, if you still find yourself rebooting to DOS, OS/2, or
|
||
Windows to do a bit of word processing then this might be one possible
|
||
alternative.
|
||
|
||
|
||
|
||
|
||
But before I go on...
|
||
|
||
|
||
|
||
|
||
Let me quickly mention that I'm well aware that the usual business apps which
|
||
have long been available for the other OS's -- the word processors,
|
||
spreadsheets, desktop publishing packages, PIMs, and so forth -- are starting
|
||
to appear as Linux-native applications! This is great news and I
|
||
certainly welcome and support such efforts to bring these much-needed tools to
|
||
the the Linux OS! Thing is, what I've tried so far really hasn't been helpful
|
||
for me. To wit:
|
||
|
||
* LyX -- a VERY nice, near-WYSIWYG front-end to the LaTeX text processing system. I've
|
||
just now started to spend some time with this. One of the things that I've really liked
|
||
about this is that it uses a system that is native to Linux and UNIX -- LaTeX. It means
|
||
that the documents are portable and render in a reliable manner. For my own tastes, the
|
||
fonts sometimes appear a bit old, but that's strictly my own tastes. I think this holds
|
||
a lot of promise.
|
||
|
||
* StarOffice -- I think that this also holds a LOT of promise. It's currently freely
|
||
available as beta software and has a very modern installation routine and very handsome
|
||
UI (to my conceits). My own pet peeve about it is the frequency in which I get warnings
|
||
about the version expiring and the (admittedly minor) irritation of having to download
|
||
a whole new set of files and doing the installation all over again.
|
||
|
||
My other fairly minor complaint with it is the look of the output -- I've not been
|
||
terribly impressed with the set of default fonts that come with it. Again, this is
|
||
strictly a matter of taste, but the output hasn't been exactly what I'd hoped for..
|
||
|
||
* EZ -- The EZ word processor is part of the Andrew User Interface System (aka, AUIS) and
|
||
really is a fairly easy to use word processor. Overall, I've been pleased with its ease
|
||
of installation and use and the output is generally quite acceptable. The range of
|
||
fonts is a bit limited, but for short notes and memos it's quite useful. I've not spent
|
||
enough time with this to really ascertain the full extent of its customizations. I
|
||
suspect that it's capable of more than I'm currently doing if I only knew how...
|
||
|
||
* I've also played around some with a few of the other available word processors --
|
||
SciTeXt, Thot, and Papyrus. They all seem to be "works in progress" and show promise.
|
||
Still, I've not found that the output equals what I've been able to achieve using the
|
||
usual DOS, OS/2, Win, or Mac apps.
|
||
|
||
Sorry, call me a heretic... :-)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
I really don't want to get mired down in a review of all the possible word
|
||
processor tools out there -- I mention these in order to say, "I've given
|
||
them a a try..." Two other applications that really deserve to be
|
||
mentioned include the Caldera's WordPerfect for Linux and the
|
||
Applixware Suite available through Red Hat Software. I've not had a
|
||
chance to try either of these out, although I've read a good deal of pro's and
|
||
con's about each of them in the linux USENET hierarchy. A buddy at school
|
||
just got a copy of the academic version of Applixware and I'm pretty
|
||
interested in seeing this in action. So far, he's been pretty pleased with
|
||
it, so I definitely need to stop by and give this a try!
|
||
|
||
|
||
|
||
|
||
Anyway, what I've found is working quite well for me is a combination of
|
||
DOSEMU and WordPerfect 6.1 for DOS. If you happen to have an old (or new)
|
||
copy of WP for DOS available to you, and you're willing to give DOSEMU a
|
||
whirl, let me urge you to give this a try.
|
||
|
||
|
||
|
||
|
||
At this point, I'm going to do something I swore to myself I'd never do -- I'm
|
||
going to weenie out on you a NOT go through the entire process of setting up
|
||
DOSEMU. The reason for this is that, although I've gotten it up and running
|
||
on my own box at home here, I really don't feel terribly comfortable with
|
||
being able to walk anyone else through the process. I ended up tinkering
|
||
around with it and, through an admittedly haphazard process of trial &
|
||
(mostly) error, got the thing to work. There are still several things about
|
||
it that I don't understand and so I won't inflict my ignorance upon you.
|
||
|
||
|
||
|
||
|
||
Still with me... :-)
|
||
|
||
|
||
|
||
|
||
Thing is, there's a very helpful little file that comes with DOSEMU called
|
||
"QuickStart" that goes through the setup process step-by-step. If a
|
||
Neanderthal like me can get this working, I'm confident that you can too!
|
||
|
||
|
||
|
||
|
||
What I would like to do is present a brief synopsis of my experiences with
|
||
this in the hopes that it might be helpful to someone trying the same things.
|
||
Again, let me emphasize that this represents strictly my own
|
||
experiences. As the old saying goes, "your mileage may vary..."
|
||
|
||
DOSEMU SETUP
|
||
|
||
|
||
|
||
|
||
After upgrading to kernel 2.0 I found it necessary to upgrade a number of
|
||
packages, including DOSEMU. At the time, I picked up the most recent version
|
||
which was dosemu-0.63.1.36. The configuration, compilation, and installation
|
||
were as simple as:
|
||
|
||
|
||
$ ./configure
|
||
$ make
|
||
$ make install
|
||
|
||
|
||
This defaulted to including DPMI support, requiring the emumodule and
|
||
syscallmgr modules to be loaded before being able to use DOSEMU. DPMI support
|
||
allows you to try your hand at booting up Windows under DOSEMU. Over the past
|
||
few months I've had mixed success at best in doing this. Also, since this is
|
||
not currently supported by the DOSEMU folks, you're completely on your own if
|
||
you want to venture into this! :-)
|
||
|
||
|
||
|
||
|
||
After compiling and installing the binaries, I used the QuickStart file as a
|
||
guide and created the needed /etc/dosemu.conf and /etc/dosemu.users files.
|
||
DOSEMU comes with a heavily commented configuration file -- dosemu.conf
|
||
-- that let's you customize in a rational manner. For the curious, here's my
|
||
current working version of dosemu.conf:
|
||
|
||
/etc/dosemu.conf example file
|
||
|
||
|
||
|
||
|
||
Let me make a couple comments about this before going on:
|
||
|
||
* I set rawkeyboard to on. This allows the full use of all the WP keystroke combinations.
|
||
I found that without this, some of the usual key combinations simply weren't working. I
|
||
was able to use the menus without any problem at all, but I still wanted to be able to
|
||
keep my hands on the keyboard.
|
||
|
||
Be aware that if you do this, there's a chance that if DOSEMU crashes it will not
|
||
correctly reset the keyboard and could potential require a cold boot (or a remote
|
||
'kbd_mode -a' to reset it). See the comments in the dosemu.conf file about this.
|
||
|
||
* I also wanted to get mouse support working. I found that the internal mouse driver that
|
||
comes with DOSEMU worked fine for most programs but didn't seem to work for WP. You'll
|
||
notice that I commented that section out and set up the Serial stuff so that I could
|
||
load my own mouse driver from DOS.
|
||
|
||
* Under the Video section, I found that I was able to get decent text-mode AND
|
||
graphics-mode support using the S3 chipset support. I've got a Diamond Stealth 64 Video
|
||
VRAM with 2MB of memory and this has worked great. There are a number of warnings in
|
||
this section of dosemu.conf and it would be advisable to read carefully through them.
|
||
|
||
* Finally, I really needed to have printer support if this was to be a viable solution at
|
||
all. I've been using the apsfilter program for some time now and really love this a
|
||
LOT. One of the printer modes that it sets up is 'raw' mode and I found that this was
|
||
the key to being able to print from DOS. Printer support uses lpr, and by using the
|
||
"-Praw" option I was able to get printing to work. I also set up raw access to the lpt1
|
||
port.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
After doing all of this (in an incremental fashion) I found myself with a
|
||
working version of DOSEMU and a functional WP program!
|
||
|
||
|
||
|
||
|
||
I also decided to load the emumodule and syscallmgr modules at boot time so
|
||
that I could use DOSEMU more easily. To do so, you'll probably want to the
|
||
use 'insmod' program that gets compiled with the rest of the DOSEMU files.
|
||
The easy way to do this is to use the 'load_module.sh' script in the root DOSEMU
|
||
directory. I found that by editing the first couple lines of the script I was
|
||
able to call it from any directory: just add the correct path names at the
|
||
top:
|
||
|
||
|
||
#!/bin/bash
|
||
MODULESDIR=/usr/local/lib/dosemu-0.63.1.36/0.63.1.36/modules
|
||
BINDIR=/usr/local/lib/dosemu-0.63.1.36/bin
|
||
[...]
|
||
|
||
|
||
and then add a stanza to /etc/rc.d/rc.local such as:
|
||
|
||
|
||
if [ -x /usr/local/lib/dosemu-0.63.1.36/load_module.sh ]; then
|
||
echo "Loading DOSEMU 0.63 modules..."
|
||
. /usr/local/lib/dosemu-0.63.1.36/load_module.sh
|
||
fi
|
||
|
||
|
||
The modules use up very little memory and the convenience of not having to
|
||
remember to load them is probably worthwhile.
|
||
|
||
INSTALLING WORDPERFECT 6.1 FOR DOS
|
||
|
||
|
||
|
||
|
||
There really isn't an awful lot of startling news here -- if you're used to
|
||
installing DOS programs then this is pretty much a "no-brainer".
|
||
The one important point to make, however, has to do with video driver
|
||
installation. I discovered something quite valuable recently when I
|
||
re-installed my system over Christmas Break.
|
||
|
||
|
||
|
||
|
||
The first time I set up WP 6.1 I installed only the S3 drivers (since
|
||
I'm using an S3-based Diamond card). I found that doing so provided
|
||
graphics mode support under DOS in resolutions up to 1280x1024. However,
|
||
I was keenly disappointed to find that the best graphics-mode resolution
|
||
I could get under DOSEMU was an abysmal 320x200. No matter how I poked,
|
||
prodded, wheedled, cajoled, threatened, and messed with it, that's all I got.
|
||
|
||
|
||
|
||
|
||
Serious Bummer... :-(
|
||
|
||
|
||
|
||
|
||
Over Christmas, when I reinstalled the system, I noticed that one of the video
|
||
drivers was labeled simply "VESA" and so, on a whim, installed that
|
||
as well as the S3 drivers. This turned out to be quite fortuitous as although
|
||
the S3 drivers still did not give better than 320x200 resolution, the VESA
|
||
driver actually allowed me to get 1024x768 in 8-bit color. On a 17" monitor,
|
||
this is a very comfortable resolution and provides pretty good WYSIWYG
|
||
previewing.
|
||
|
||
|
||
|
||
|
||
So, the moral of the story is -- if you're in doubt, give the VESA video
|
||
drivers a whirl.
|
||
|
||
RUNNING WORDPERFECT 6.1 UNDER DOSEMU
|
||
|
||
|
||
|
||
|
||
Once I got DOSEMU installed and properly configured (BTW, I also created the
|
||
/etc/dosemu.users file that simply has the word "all" as the sole
|
||
word on the first line -- this let's anyone (i.e., me) to execute the
|
||
program) and WP 6.1 installed, I was quite pleased to discover that nearly all
|
||
the features available from running it under DOS were also available under
|
||
DOSEMU:
|
||
|
||
* full mouse support
|
||
* full text mode support
|
||
* graphics mode for WYSIWYG editing and print preview to 1024x768 in 256 colors
|
||
* support for all keystroke combinations
|
||
|
||
The one feature that I haven't yet tried is fax support, although ostensibly
|
||
it should work.
|
||
|
||
|
||
|
||
|
||
A feature of WP that is completely UNAVAILABLE under DOS is that I can be
|
||
editing a file in WP under DOSEMU and, using Ctrl-Alt-Fn, switch to another
|
||
virtual terminal and continue to work under Linux. Running X Window
|
||
concurrently also has shown no signs of causing problems.
|
||
|
||
|
||
|
||
|
||
Let me say this again since I get a chill just thinking about it...
|
||
|
||
|
||
|
||
|
||
I can run DOSEMU + WP 6.1 in a virtual terminal and have full editing and
|
||
printing capabilities while at the same time freely switch to another VT or
|
||
even to X Window and have all these processes running concurrently!!
|
||
|
||
|
||
|
||
|
||
This is what makes Linux such a seriously cool OS!!
|
||
|
||
|
||
|
||
|
||
This is way too cool... ;-)
|
||
|
||
|
||
|
||
|
||
The one caveat I'd mention is that of using WP in graphics mode. I don't know
|
||
about WP 5.1, but version 6.1 supports a fairly respectable graphics-mode that
|
||
provides WYSIWYG editing and print preview. On my system, the performance is
|
||
quite acceptable, although not quite as responsive as under DOS (but then
|
||
who'd want to run anything under DOS if they didn't really need to... :-)
|
||
However, switching to a VT or to an X Window session while in graphics mode
|
||
renders the system completely unusable -- the keyboard AND the console both
|
||
go into impenetrable lockup which only a cold boot fixes. This has, at least,
|
||
been my experience. However, I found that if I simply exited back to text
|
||
mode before switching to another VT then everything worked fine.
|
||
|
||
|
||
|
||
|
||
Finally, let me make one last comment about using WP under DOSEMU. One of my
|
||
ongoing complaints about many (though certainly not all) of the current
|
||
"word processors" available for Linux is the quality of the printed
|
||
output. The features that drew me to using WP were the familiarity with the
|
||
program and the quality of the final output. WP 6.1 supports, among other
|
||
things, TrueType fonts and having invested in a Corel Draw some time back (and
|
||
its 750+ TT fonts) I was pretty keen to being able to continue to use these.
|
||
I've been quite pleased that under Linux I can still do basic word processing
|
||
in a known environment with predictable output. That was the clincher for me.
|
||
|
||
|
||
|
||
|
||
Again, let me quickly add that this might not be at all what you want or you
|
||
might simply dislike the WP system itself. The thing about Linux is that it
|
||
give you a choice once again!
|
||
|
||
|
||
|
||
|
||
And, for the skeptics out there, those who said, "it can't be
|
||
done...", here's a screen shot of WP 6.1 running under X...
|
||
|
||
|
||
|
||
|
||
screen shot of WP 6.1 running under xdos
|
||
|
||
|
||
|
||
|
||
Give this a try! If you like it, keep it. If not, delete it and have
|
||
a look at something else. Also, if you're looking for something to run
|
||
under X then you might be well served to give either the Applixware suite
|
||
or the Linux WordPerfect port a try. DOSEMU will run under X (as xdos)
|
||
but WP loses some of its functionality -- mouse support and keystroke
|
||
support can be a bit flaky and graphics-mode support is completely lost.
|
||
So, if X is where you spend most of your time, you might consider investing
|
||
in or investigating one of the native X programs.
|
||
|
||
|
||
|
||
|
||
Most of all, though...
|
||
|
||
|
||
|
||
|
||
Have Fun & Happy Linux'ing!
|
||
|
||
|
||
|
||
|
||
John
|
||
|
||
Nashville, TN
|
||
|
||
Mon Jan 20 13:18:01 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] X Window Wallpapering...!
|
||
|
||
|
||
|
||
|
||
Well, here's a little nothingburger that comes pretty close to being a bona
|
||
fide FAQ -- the question arises from time to time as to how to
|
||
(automatically) wallpaper one's X Window session after starting X. For the
|
||
impatient, the short answer is:
|
||
|
||
|
||
xv -quit -root image.gif
|
||
|
||
|
||
Presuming, of course, that the image that you wanted to use was in fact called
|
||
"image.gif" the above would use the ubiquitous xv program by
|
||
John Bradley to tile your root window with the specified window. The
|
||
"-quit" option causes xv to do its work and then quietly terminate.
|
||
|
||
|
||
|
||
|
||
If you're using one of the 1.x versions of FVWM then just add a stanza such as
|
||
the following:
|
||
|
||
|
||
Function "InitFunction"
|
||
Exec "I" exec /usr/X11/bin/xv -quit -root /usr/gx/image.gif &
|
||
[...]
|
||
EndFunction
|
||
|
||
|
||
That is, you simply add a stanza for xv to the "InitFunction" and
|
||
this is done automatically!
|
||
|
||
|
||
|
||
|
||
Since I've not upgraded to the newer FVWM 2.x version (nor FVWM-95, or any of
|
||
the other myriad new window managers) you're rather on your own with this one.
|
||
However, I suspect that a quick perusal of the manual page or the
|
||
configuration file should quickly point the way.
|
||
|
||
|
||
|
||
|
||
At the moment, I'm using olvwm 4 (with the 3.2 libraries) and added the
|
||
following to the /var/openwin/lib/Xinitrc file:
|
||
|
||
|
||
#!/bin/sh
|
||
# Xinitrc executed by openwin script to display startup logo
|
||
# and restore desktop setup (saved using owplaces)
|
||
# Hereby placed into public domain by Kenneth Osterberg 1993.
|
||
|
||
[...]
|
||
|
||
# Start programs
|
||
exec /usr/X11/bin/xv -quit -root /var/openwin/lib/marbleFlowers.gif &</b>
|
||
exec /usr/local/X11/bin/xcalendar -geometry 240x240+0+160 &
|
||
exec /usr/X11/bin/xclock -geometry 134x127+252+0 &
|
||
exec /usr/local/X11/bin/rxvt -ls -font 9x15 -geometry 80x32+500+195 &
|
||
exec /usr/local/X11/bin/rxvt -ls -font 9x15 -geometry 79x31+252+268 &
|
||
exec /home/fiskjm/bin/syslogtk -geometry +398+0 &
|
||
|
||
# Startup the OpenLook window manager
|
||
if [ ! -z "$WINDOWMANAGER" ]; then
|
||
exec $WINDOWMANAGER
|
||
else
|
||
exec $OPENWINHOME/bin/olwm
|
||
fi
|
||
|
||
|
||
This has the identical effect of tiling the root window before olvwm is
|
||
launched.
|
||
|
||
|
||
|
||
|
||
If you're interested in this, there are actually all sorts of nifty things
|
||
that you can play with along this line. Keep in mind that xv has a plethora
|
||
of options for setting the root window image interactively. To do so, simply
|
||
find an image that you'd like to play with, launch xv with the image filename
|
||
as the argument, and then select the "Root" button. I won't list
|
||
all the possible options -- try them out and amuse yourself!
|
||
|
||
|
||
|
||
|
||
Thing is, to really have a good time you need to have a few images to play
|
||
with and question is, where to get these little rascals...?
|
||
|
||
|
||
|
||
|
||
Well...
|
||
|
||
|
||
|
||
|
||
Here's a couple ideas to get you going:
|
||
|
||
* If you're running Windows, Win95, or OS/2 then you have to look no farther than your C:
|
||
drive! XV is more than capable of handling the *.BMP files from Windows and converting
|
||
them to .GIF or .JPG (or any of several other formats for that matter) files. I'll use
|
||
this as an example in a minute...
|
||
|
||
* For those of you wanting to get rid of the... er... Windows motif and if you're
|
||
connected to the INTERNET, then the world is your oyster, my friend!!
|
||
|
||
There are all KINDS of great images out there that you can play with. FWIW, the GIMP
|
||
home page has a fantastic marble tile image on its front page. It's wallpapering my
|
||
desktop at this moment.
|
||
|
||
You might also do a quick Yahoo, Alta Vista, or WebCrawler search for any of the
|
||
numerous Online Art Museums and Art Galleries. Or, for all you 60's Baby Boomers who
|
||
grew up watching the Apollo flights and dreamt of being an astronaut, check out NASA's
|
||
huge collection of space related images. If you're a Netscape user, simply click the
|
||
right mouse button over the image and save it to disk. Keep in mind that some images do
|
||
have copyright protection.
|
||
|
||
* For those do-it-yourself'ers out there with a bit of talent, you can easily play around
|
||
with programs such as xpaint and draw your own or modify an image to your likings.
|
||
|
||
One of the other fun programs to play with is xfractint which generates fractal images.
|
||
It will also SAVE those images in GIF format.
|
||
|
||
|
||
|
||
Anyway, you get the picture. If you have a scanner, then you're golden :-)
|
||
|
||
|
||
|
||
|
||
So let's do a quick walk through on this.
|
||
|
||
|
||
|
||
|
||
After I somewhat reluctantly installed Win95 this past Fall (I was taking a
|
||
Visual Programming class and you can guess as to which Visual language we had
|
||
to use...) I discovered a few new wallpaper images including one that I really
|
||
liked -- the Forest.bmp image. I happen to enjoy hiking around in the nearby
|
||
Great Smoky Mountains and grew up in the pine forests of upstate New York.
|
||
Anyway, I decided that I'd gotten a bit tired of the 'ol SteelBlue background
|
||
and was ready for a change. Here's what I did...
|
||
|
||
|
||
|
||
|
||
After mounting my Win95 partition and copying the c:\win95\Forest.bmp file to
|
||
my home directory I used xv to have a look at this rascal and convert it to a
|
||
GIF image. XV allows you to save an image as any number of different formats
|
||
and I chose GIF, Full Color. That done, I had a suspicion that this might be
|
||
a bit of a color resource hog -- a suspicion that was confirmed by another
|
||
handy little program, xli.
|
||
|
||
|
||
|
||
|
||
Xli is a graphics manipulation program that is easily found at any of the
|
||
sunsite mirrors in the
|
||
X11 directory under the graphics viewers subdirectory. One of its handy
|
||
features is the "identification" mode that it can run in. To get
|
||
information about an image (from the command line) simply type in:
|
||
|
||
|
||
xli -ident image.gif
|
||
|
||
|
||
and assuming that the image you were interested was, in fact, named
|
||
"image.gif" then it would print out a useful one-liner. Doing this
|
||
to the Forest.gif image that we just created using xv, we find:
|
||
|
||
|
||
$ xli -ident ~/Forest.gif
|
||
/home/fiskjm/Forest.gif is a 256x256 GIF87a image with 256 colors
|
||
|
||
|
||
Hmm... the size is OK, but with 256 colors this will definitely burn out my
|
||
color map quicker than you can say Netscape! Now, enter the next useful
|
||
program to our arsenal of image tools -- ImageMagick.
|
||
|
||
|
||
|
||
|
||
ImageMagick is one of those seriously cool, Must-Have programs if you're
|
||
playing around with images very often. I recently found the latest version
|
||
(nicely pre-compiled, thank you...) at the
|
||
GA Tech sunsite
|
||
mirror (ImageMagick-3.7.9-tgz) along with the needed libraries
|
||
(libIMPlugin-1.0-tgz). Installing the precompiled bin's was a no-brainer and
|
||
I was up and running in no time flat.
|
||
|
||
|
||
|
||
|
||
One of the programs that is included with ImageMagick (it's actually a suite
|
||
of programs) is convert. convert allows you to quickly and
|
||
easily convert images from one format to another and to optionally set its
|
||
various attributes. You need to have a look at the manual page (which is
|
||
included with the binaries) to really appreciate all the things this is
|
||
capable of doing. For what I was trying to do, all I needed was to set the
|
||
size of the color map to something a bit more sane.
|
||
|
||
|
||
|
||
|
||
Using the "-colors" option I was able to set the "preferred
|
||
number of colors" to something that was a bit more X friendly:
|
||
|
||
|
||
convert -colors 32 ~/Forest.gif ~/forest.gif
|
||
|
||
|
||
Doing this and running xli on it once again, we find that it has, in fact,
|
||
been stripped down to a more lean 32 colors:
|
||
|
||
|
||
xli -ident ~/forest.gif
|
||
~/forest.gif is a 256x256 interlaced GIF89a image with 32 colors
|
||
|
||
|
||
That's a bit better. Now I suppose that I could have used an even smaller
|
||
number but 32 colors gave an image that differed visually from the original
|
||
image very little.
|
||
|
||
|
||
|
||
|
||
Anyway, that was it! I now had a 256x256 image with 32 colors that no longer
|
||
threatened to burn out my entire color map! I added a stanza to the Xinitrc
|
||
file and voila!, instant wallpaper!
|
||
|
||
|
||
|
||
|
||
Keep in mind that this is hardly the only way to do this. There are
|
||
several other nifty programs out there that provide similar functionality.
|
||
Try scrounging around in the X11/graphics/ subdirectory of any of the sunsite
|
||
mirrors or at ftp.x.org in its contrib
|
||
subdirectory.
|
||
|
||
|
||
|
||
|
||
Another program that I'll mention before closing this up is the truly awesome
|
||
xearth program. If you're looking for a truly impressive, animated X
|
||
wallpaper program, look no further. This is one way too cool program! I
|
||
don't have a screen shot of it to show you but believe me, it's worth setting
|
||
it up and giving it a whirl! At the moment, you should be able to find it in
|
||
the
|
||
/X11/xapps/graphics/ subdirectory of any of the sunsite Linux mirrors.
|
||
The file to look for is xearth-1.0.tgz.
|
||
|
||
|
||
|
||
|
||
Anyway, hope this gets you going! I admit that it's been a bit of a
|
||
smorgasbord of suggestions, but you might be able to find something useful
|
||
here! :-)
|
||
|
||
|
||
|
||
|
||
As usual, hope you enjoy!
|
||
|
||
|
||
|
||
|
||
John
|
||
|
||
Nashville, TN
|
||
|
||
Mon Jan 20 21:08:25 CST 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] Closing Up Shop...
|
||
|
||
|
||
|
||
|
||
Well, as usual, things around here have been busier than I'd hoped and I just
|
||
don't have the time to do all of the writing that I'd like to. Also, I'm
|
||
trying to keep this page to a reasonable size :-) (those of you who've been
|
||
hanging around here for a while might remember those 160K+ size pages...).
|
||
|
||
|
||
|
||
|
||
So what has everyone been up to? Found any new toys... :-)
|
||
|
||
|
||
|
||
|
||
Over Christmas, I finally started working on something that I'd been
|
||
promising to do for ages: I've started to learn emacs! I have to say that
|
||
this has been a bit of a paradigm shift after having used VIM for such a long
|
||
time. However, I can see why the loyalties run so deep -- Emacs is a
|
||
seriously cool and indisputably powerful editor. Truth is, however, that I've
|
||
not taken the purist approach: I have to admit that I'm really using
|
||
XEmacs. I also got my hands on an xemacs-derivative called
|
||
infodock which is another way-too-cool and VERY powerful editor.
|
||
|
||
|
||
|
||
|
||
I'd hoped to write a bit on my initial experiences and impressions but I guess
|
||
that will have to wait for another month or so. Thing is, there are actually
|
||
quite a number of GREAT editors out there to mess around with. And the more
|
||
that I try out different ones (I've decided that I really am an "editor
|
||
junkie...") the more I'm convinced that the essence of the editor flame
|
||
wars that periodically erupt can be summed up in preference.
|
||
|
||
|
||
|
||
|
||
Not to throw a wet blanket on anyone's jihad, but...
|
||
|
||
|
||
|
||
|
||
Although feature sets, user interfaces, resource utilization, performance
|
||
issues, and so forth are very valid issues when discussing the various merits
|
||
and liabilities of one's favorite editor, the bottom line is: you probably
|
||
use it because you like it! I have to admit that after using VIM for the past
|
||
couple years, emacs is something of an acquired taste. However, if
|
||
you've been using emacs for a while, then vi looks a bit stark and your
|
||
fingers feel bewildered.
|
||
|
||
|
||
|
||
|
||
Anyway, there's no accounting for taste and no apologies for it either. The
|
||
great thing about Linux is that "it restores the choice once again!"
|
||
Try everything out, use what is useful, keep what you like. And FWIW, those
|
||
of you using a VI clone like myself might be interested in giving the latest
|
||
iteration of VIM a test drive. As of a little bit ago, VIM 4.5 source was in
|
||
the sunsite Incoming directory. It can now be compiled, using the Motif
|
||
widget set, to have both a console-based and an honest-to-goodness X-based
|
||
interface. The X version is called gvim (for "Graphical
|
||
VIM") and I'm using it right now. It has all of the usual keystrokes
|
||
(for all you ten-fingered typers...) but has nice mouse support for cursor
|
||
positioning and cut-and-paste operations. It also sports a handsome
|
||
scrollbar, handles multiple windows with aplomb, and even touts a rudimentary
|
||
but useful menu bar. It has a very extensive online help system that is
|
||
vaguely hypertext-like: you can navigate from one "node" to another
|
||
using a keystroke similar to that with tags: Ctrl-] selects a node and Ctrl-t
|
||
returns you to the original location.
|
||
|
||
|
||
|
||
|
||
With any luck, I'll have some time this next month and will try to put
|
||
something together -- mostly just chat, nothing terribly profound. I've got a
|
||
few screen dumps for the visually-oriented. Those of you who are considering
|
||
taking the leap and learning emacs might well be served to have a look at
|
||
this rascal. AND, keep in mind that it is NOT just an X Window app -- it'll
|
||
run in console mode just as easily as under X. Have a look at the XEmacs home
|
||
page for more info:
|
||
|
||
WWW.XEMACS.ORG
|
||
|
||
AND WHILE YOU'RE THERE, HAVE A PEEK AT THE
|
||
infodock stuff as well.
|
||
Finally, in this month's Linux Journal there's a very nice article by
|
||
an old LG regular: Larry Ayers, who has written a review comparing GNU
|
||
Emacs with XEmacs. For the curious, it's well worth having a look at what
|
||
Larry's impressions of the two were.
|
||
|
||
|
||
|
||
|
||
Well, I've got a bit of work to get one tonight and so I'll wrap this up for
|
||
the month. I'm still trying to get out from underneath a pile of
|
||
email. Hang in there... I'm coming!
|
||
|
||
|
||
|
||
|
||
Best Wishes and Happy Linux'ing!!
|
||
|
||
|
||
|
||
|
||
John M. Fisk
|
||
|
||
Nashville, TN
|
||
|
||
Monday, January 27, 1997
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE] If you'd like,
|
||
drop me a note at:
|
||
John M. Fisk <fiskjm@ctrvax.vanderbilt.edu>
|
||
|
||
|
||
|
||
|
||
Version Information:
|
||
|
||
$Id: issue14.txt,v 1.1.1.1 2002/08/14 22:26:57 dan Exp $
|
||
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Copyright © 1997, John M. Fisk
|
||
Published in Issue 14 of the Linux Gazette
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
Next
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
LINUX GAZETTE BACK PAGE
|
||
|
||
Copyright © 1997 Specialized Systems Consultants, Inc.
|
||
For information regarding copying and distribution of this material see the Copying License.
|
||
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
CONTENTS:
|
||
* About This Month's Authors
|
||
* Not Linux
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
ABOUT THIS MONTH'S AUTHORS
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Larry Ayers
|
||
Larry Ayers lives on a small farm
|
||
in northern Missouri, where he is currently engaged in building a
|
||
timber-frame house for his family. He operates a portable band-saw mill,
|
||
does general woodworking, plays the fiddle and searches for rare
|
||
prairie plants, as well as growing shiitake mushrooms. He is also
|
||
struggling with configuring a Usenet news server for his local ISP.
|
||
|
||
|
||
|
||
|
||
John M. Fisk
|
||
John Fisk is most noteworthy as the former editor of the
|
||
Linux Gazette.
|
||
After three years as a General Surgery resident and
|
||
Research Fellow at the Vanderbilt University Medical Center,
|
||
John decided to "hang up the stethoscope", and pursue a
|
||
career in Medical Information Management. He's currently a full
|
||
time student at the Middle Tennessee State University and hopes
|
||
to complete a graduate degree in Computer Science before
|
||
entering a Medical Informatics Fellowship. In his dwindling
|
||
free time he and his wife Faith enjoy hiking and camping in
|
||
Tennessee's beautiful Great Smoky Mountains. He has been an avid Linux fan,
|
||
since his first Slackware 2.0.0 installation a year and a half
|
||
ago.
|
||
|
||
|
||
|
||
|
||
Jim Dennis
|
||
Jim Dennis
|
||
is the proprietor of
|
||
|
||
Starshine Technical Services.
|
||
His professional experience includes work in the technical
|
||
support, quality assurance, and information services (MIS)
|
||
departments of software companies like
|
||
Quarterdeck,
|
||
Symantec/
|
||
Peter Norton Group, and
|
||
McAfee Associates -- as well as
|
||
positions (field service rep) with smaller VAR's.
|
||
He's been using Linux since version 0.99p10 and is an active
|
||
participant on an ever-changing list of mailing lists and
|
||
newsgroups. He's just started collaborating on the 2nd Edition
|
||
for a book on Unix systems administration.
|
||
Jim is an avid science fiction fan -- and recently got
|
||
married at the World Science Fiction Convention in Anaheim.
|
||
|
||
|
||
|
||
|
||
Grant B. Gustafson
|
||
Grant Gustafson is Professor of Mathematics, the
|
||
University of Utah, Salt Lake City. Besides
|
||
differential equations, he has an interest in
|
||
microcomputers (since 1978), compilers, programming
|
||
languages, system utilities and TeX typesetting.
|
||
|
||
|
||
|
||
|
||
Michael J. Hammel
|
||
Michael J. Hammel,
|
||
is a transient software engineer with a background in
|
||
everything from data communications to GUI development to Interactive Cable
|
||
systems--all based in Unix. His interests outside of computers
|
||
include 5K/10K races, skiing, Thai food and gardening. He suggests if you
|
||
have any serious interest in finding out more about him, you visit his home
|
||
pages at http://www.csn.net/~mjhammel. You'll find out more
|
||
there than you really wanted to know.
|
||
|
||
|
||
|
||
|
||
Phil Hughes
|
||
Phil Hughes is the publisher of
|
||
Linux Journal, and thereby Linux
|
||
Gazette. He dreams of permanently tele-commuting from his home on the
|
||
Pacific coast of the Olympic Peninsula. As an employer, he is "Vicious, Evil,
|
||
Mean, & Nasty, but kind of mellow" as a boss should be.
|
||
|
||
|
||
|
||
|
||
Mike List
|
||
Mike List is a father of four teenagers, musician, printer (not
|
||
laserjet), and recently reformed technophobe, who has been into computers
|
||
since April,1996, and Linux since July.
|
||
|
||
|
||
|
||
|
||
R. Frank Louden
|
||
Frank Louden has a degree in Computer Science from Purdue.
|
||
While working on his degree, he also worked in the Medical center first as a
|
||
Computer Clerk then as the Systems Manager.
|
||
He currently works as a Programmer, which "is all the fun and a lot
|
||
fewer headaches (read: It sounds like a hardware problem to me.)"
|
||
He first installed Linux last March, so he knows the challenge a convert
|
||
faces.
|
||
On the personal side, he lives in a small town in north central Indiana and
|
||
would love to organize a LUG but thinks it'd be difficult to find
|
||
any other Linux users out here in the boonies. He has two cats, Mac and
|
||
Catalina who he says "both know more about Linux than I do...but they never
|
||
reveal their secrets!"
|
||
|
||
|
||
|
||
|
||
James McDuffie
|
||
|
||
|
||
|
||
James McDuffie is a 17 year old high school student who is looking forward
|
||
to graduating. In college he plans to major in Computer Science
|
||
and minor in English. He would like to be a writer while still
|
||
working with computers. James wrote the article Connecting Computers via
|
||
PLIP which appeared in issue #6 of the Linux Gazette. He has been an avid
|
||
reader of the Linux Gazette ever since it was just starting out. And wishes
|
||
that it continues helping the Linux community for some time to come.
|
||
|
||
|
||
|
||
|
||
James Shelburne
|
||
|
||
|
||
|
||
James Shelburne currently lives in Waco, Texas where he spends most of
|
||
his free time working on various Linux networking projects. Some of his
|
||
interests include Perl + CGI, Russian, herbal medicine and the Ramones
|
||
(yes, you heard right, the Ramones). He is also a staunch Linux advocate
|
||
and tries to convert every MacOS/MS Windows/AMIGA user he comes into
|
||
contact with. Needless to say, only other Linux users can stand him.
|
||
|
||
|
||
|
||
|
||
Kelley Spoon
|
||
Kelley Spoon currently studies computer science at the University of Texas,
|
||
San Antonio. Some of his hobbies include trying to learn how to play the
|
||
guitar, playing Euchre, laughing at John C. Dvorak, converting pizza into
|
||
source code, terrorizing villages along the Mexican border, and frightening
|
||
small childern. He has been a Linux user since August 1995, and still
|
||
pronounces the name as "luh-eye-nucks".
|
||
Kelly has written another article for us about tcpd that will appear in
|
||
issue 15 of Linux Gazette.
|
||
|
||
|
||
|
||
|
||
Jens Wessling
|
||
|
||
|
||
|
||
Jens Wessling is a 26 year old Research Scientist working for the
|
||
Environmental Research Institute of Michigan. He has been
|
||
playing with Linux since Kernel 1.0.99. He is
|
||
married and has 2 cats. He is currently working on his
|
||
Masters Degree in Computer and Information Science
|
||
at the University of Michigan. Life frequently gets in his way.
|
||
|
||
|
||
|
||
|
||
Joel Wilf
|
||
Joel Wilf is a technical writer with a strong interest in
|
||
computers and multimedia. He is also a screenwriter, whose
|
||
credits include
|
||
Supercarrier and Outsiders. Writing a
|
||
script-formatting utility, under DOS, led him to the richer
|
||
programming and text-processing environment of Linux. Offline,
|
||
he enjoys reading and traveling. He lives in Encino,
|
||
California.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[IMAGE]
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
NOT LINUX
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Thanks to all our authors, not just the ones above, but also those who wrote
|
||
giving us their tips and tricks and making suggestions. Thanks also to our
|
||
new mirror sites. We get new ones every month. I was very excited to have
|
||
both one in Russia and the new Italian translation site go up this month.
|
||
(See the Mirror Page.)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
My two favorite holidays are Valentine's Day and Halloween. Not sure I want
|
||
to know what that little fact may have to say about my psyche. At any rate I hope
|
||
the animated heart wasn't too annoying. I thought it was quite cute. Thanks
|
||
to Michael, our web guy, for finding it and the roses to present to our authors.
|
||
|
||
|
||
|
||
Two days after Valentine's on February 16, Riley and I will be celebrating
|
||
our 5th wedding anniversary. In fact, we're celebrating all weekend --
|
||
a long one with the holiday -- by leaving town and telling no one where we
|
||
are going. Riley is a very special guy, and we've had a great 5 years. I
|
||
look forward to many more with him.
|
||
|
||
|
||
|
||
February 16 is also the birthday of my nephew Alex Carter. He's 14 and
|
||
working on his Black Belt in Tae Kwon Do. He's a smart kid and loves
|
||
playing on his computer. I need to find the time to introduce him to Linux.
|
||
|
||
|
||
|
||
On a professional note, I am now Managing Editor of Linux Journal as well
|
||
as Linux Gazette. Gary Moore and I have switched jobs--keeps things from
|
||
getting boring. However, I refused to give up custody of Linux Gazette,
|
||
it's just too much fun.
|
||
|
||
|
||
|
||
Have fun!
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
Marjorie L. Richardson
|
||
|
||
Editor, Linux Gazette gazette@ssc.com
|
||
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
|
||
[ TABLE OF CONTENTS ]
|
||
[ FRONT PAGE ]
|
||
Back
|
||
|
||
|
||
|
||
_______________________________________________________________________________________________
|
||
|
||
|
||
|
||
|
||
Linux Gazette, http://www.ssc.com/lg/
|
||
|
||
This page written and maintained by the Editor of Linux Gazette,
|
||
gazette@ssc.com
|