[net.bugs.uucp] System V introduces yet another inconsistency

dave@lsuc.UUCP (David Sherman) (02/28/85)

Since time immemorial (well, a few years anyway), the public
directory for shipping files to a remote system (normally
/usr/spool/uucppublic) has been user "uucp"'s home directory.
In other words,    uucp file site!~uucp/file     works.

I tried this the other day with a site we talk to which is
trying to follow the System V "standard". Lo and behold, the
System V standard has "uucp" as a normal user whose home
directory is /usr/lib/uucp, and the uucico login is "nuucp".

Great. Why couldn't they leave well enough alone? Now, before
I transfer anything to/from a remote site's public directory,
I have to find out whether it's ~uucp or ~nuucp. (Or else
use /usr/spool/uucppublic and hope they haven't chosen to put
the public directory elsewhere.)

Dave Sherman
-- 
{utzoo pesnta nrcaero utcs hcr}!lsuc!dave
{allegra decvax ihnp4 linus}!utcsri!lsuc!dave

dave@timeinc.UUCP (David Mutterer) (03/01/85)

> Since time immemorial (well, a few years anyway), the public
> directory for shipping files to a remote system (normally
> /usr/spool/uucppublic) has been user "uucp"'s home directory.
> In other words,    uucp file site!~uucp/file     works.
> 
> I tried this the other day with a site we talk to which is
> trying to follow the System V "standard". Lo and behold, the
> System V standard has "uucp" as a normal user whose home
> directory is /usr/lib/uucp, and the uucico login is "nuucp".
> 
> Great. Why couldn't they leave well enough alone? Now, before
> I transfer anything to/from a remote site's public directory,
> I have to find out whether it's ~uucp or ~nuucp. (Or else
> use /usr/spool/uucppublic and hope they haven't chosen to put
> the public directory elsewhere.)
> 
> Dave Sherman
> -- 
> {utzoo pesnta nrcaero utcs hcr}!lsuc!dave
> {allegra decvax ihnp4 linus}!utcsri!lsuc!dave

No you don't..... try reading some documentation....  the "~uucp"
means to look up the home directory in the passwd file.... which
/usr/lib/uucp should be uucp's $HOME...   while "~/dave" would
mean to put the files into /usr/spool/uucppublic/dave...  it is 
all very easy to understand.....  try it you'll like it...

-- 

					David Mutterer
					[vax135|ihnp4]!timeinc!dave


"Any opinions expressed herein are those of the writer and
do not necessarily reflect the opinion of Time Incorporated."

honey@down.FUN (code 101) (03/01/85)

you have no business sending to ~uucp.  use
	uucp file otherhost!~/whatever
to send to the public spooling directory.

	peter

guy@rlgvax.UUCP (Guy Harris) (03/01/85)

> Since time immemorial (well, a few years anyway), the public
> directory for shipping files to a remote system (normally
> /usr/spool/uucppublic) has been user "uucp"'s home directory.
> In other words,    uucp file site!~uucp/file     works.
> 
> I tried this the other day with a site we talk to which is
> trying to follow the System V "standard". Lo and behold, the
> System V standard has "uucp" as a normal user whose home
> directory is /usr/lib/uucp, and the uucico login is "nuucp".
> 
> Great. Why couldn't they leave well enough alone?

My guess is that this was done to permit you to do "su uucp" and get
something more meaningful on your terminal than "Shere".  The S5R2
"cron" supports per-user crontabs, but a user can only install their
own crontab (the manual page doesn't say that "root" can install another
user's crontab).  (System III also supplied "nuucp").

> Now, before I transfer anything to/from a remote site's public directory,
> I have to find out whether it's ~uucp or ~nuucp.

Try just "~"; it's supposed to default to UUCP's home directory.
(Alternatively, just make "/usr/spool/uucppublic" "uucp"s home directory.)

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy

mjs@eagle.UUCP (M.J.Shannon) (03/01/85)

> In other words,    uucp file site!~uucp/file     works.
> 
> Dave Sherman

In all the documentation, the claim has been made that the proper way of saying
what you meant is:

	uucp file site!~/file

Many machines (and many more as time goes on and people realize the need for
security) use different logins for each uucp neighbor.  The code that comes
from AT&T correctly deals with this by special casing the particular idiom
"~/file" as meaning "file in the uucppublic directory, whatever it may be
called at the destination site".  The fact that your usage may work on some
machines is simply an indication that login name uucp has /usr/spool/uucppublic
as its home directory on those machines.

Simply because you have come to depend on a "feature" that (to my knowledge)
has never been documented, you may not claim that System V has introduced an
inconsistency.  The moral of the story is that if you don't play by the letter
of the rules, you'll eventually get bitten.
-- 
	Marty Shannon
UUCP:	ihnp4!eagle!mjs
Phone:	+1 201 522 6063

lda@bonnie.UUCP (Larry Auton) (03/01/85)

in article <454@lsuc.UUCP>,  Dave Sherman complains about (paraphrased)

	~uucp being moved from /usr/spool/uucppublic to /usr/lib/uucp

Poor fellow.  There are very good reasons for not having home directories
that are writable by the world.  Better Security is the best reason.

(quote)
> ... Why couldn't they leave well enough alone? Now, before
> I transfer anything to/from a remote site's public directory,
> I have to find out whether it's ~uucp or ~nuucp. (Or else
> use /usr/spool/uucppublic and hope they haven't chosen to put
> the public directory elsewhere.)

Awww.  You done got me started cryin' now.  Boo Hoo.  Why not use an
approach suggested by the uucp manual page ("manual?  what manual?  I
never seen no manual before!?") and send to:

	site!~/file

The null user name (~/) tells uucp to prepend PUBDIR (wherever that is,
you don't need to know) to the destination path.

"Gee!"
"No, UUCP!" (sniff, sniff)
-- 
Larry Auton
(201)386-4272
ihnp4!bonnie!lda

wescott@ncrcae.UUCP (Mike Wescott) (03/01/85)

+--------------------
|I tried this the other day with a site we talk to which is
|trying to follow the System V "standard". Lo and behold, the
|System V standard has "uucp" as a normal user whose home
|directory is /usr/lib/uucp, and the uucico login is "nuucp".
|
|Great. Why couldn't they leave well enough alone? Now, before
|I transfer anything to/from a remote site's public directory,
|I have to find out whether it's ~uucp or ~nuucp. (Or else
|use /usr/spool/uucppublic and hope they haven't chosen to put
|the public directory elsewhere.)
|
|Dave Sherman
+--------------------

In a sense they did leave well enough alone, the public uucp directory
which is not necessarily the home directory of uucp or nuucp can be
specified with a simple ~ :

	uucp xxx yyy!~

transfers xxx to machine yyy as /usr/spool/uucppublic/xxx (or whatever
directory is PUBDIR on yyy).  Similarly,

	uucp xxx yyy!~/zzz

ends up as /usr/spool/uucppublic/zzz/xxx.  And

	uucp xxx yyy!~/zzz/xyz

creates file /usr/spool/uucppublic/zzz/xyz on machine yyy.
Note the differences:
	~	PUBDIR
	~/x	directory PUBDIR/x
	~/x/y	file y in dirctory ~/x

It gets a little bewildering at times, trying to figure out what
the file will end up as on the remote.

Michael Wescott
NCR Corp.
mcnc!ncsu!ncrcae!wescott
usceast!ncrcae!wescott

henry@utzoo.UUCP (Henry Spencer) (03/01/85)

> In all the documentation, the claim has been made that the proper way of saying
> what you meant is:
> 
> 	uucp file site!~/file

Please point to where it says this in the V7 uucp documentation.  Uucp
far pre-dates System V, and AT&T cannot retroactively say "we did this
all along".

> Many machines (and many more as time goes on and people realize the need for
> security) use different logins for each uucp neighbor.

Of course.  So do we.  But ~uucp gets the expected effect on our machine.
What does the use of separate logins for each uucp neighbor have to do
with where uucp's home directory is??

On investigation, it turns out that ~uucp is not documented in the Bell
documents.  Either this convention was invented within Bell and got
propagated by folklore, or it was invented by the Duke people who were
some of the first serious non-Bell uucp users.  The convention definitely
appears in Duke's how-to-set-up-uucp documentation, which is what first
got a lot of non-Bell sites onto the network.

It appears that AT&T has gone its arrogant, insular way and has elected
to ignore the de-facto standard of the rest of the uucp community in
favor of introducing its own.  Argh...
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

ron@men1.UUCP (Ron Flax) (03/01/85)

> > Since time immemorial (well, a few years anyway), the public
> > directory for shipping files to a remote system (normally
> > /usr/spool/uucppublic) has been user "uucp"'s home directory.
> > In other words,    uucp file site!~uucp/file     works.
> > 
> > I tried this the other day with a site we talk to which is
> > trying to follow the System V "standard". Lo and behold, the
> > System V standard has "uucp" as a normal user whose home
> > directory is /usr/lib/uucp, and the uucico login is "nuucp".
> > 
> 
> No you don't..... try reading some documentation....  the "~uucp"
> means to look up the home directory in the passwd file.... which
> /usr/lib/uucp should be uucp's $HOME...   while "~/dave" would
> mean to put the files into /usr/spool/uucppublic/dave...  it is 
> all very easy to understand.....  try it you'll like it...
> 
Sorry Dave but...

The way I've learned it (and all the UNIX systems I've seen operate) is
that ~uucp expands out to uucp's $HOME, and ~/<anything> will expand out
to the current user's $HOME/<anything> (ie. uucp if uucico is running suid).

So... ~uucp expands to uucp's $HOME and ~/filename expands out to uucp's
$HOME/filename.  Unless uucico is *NOT* running suid to uucp.

If you must have a uucp login that doesn't execute uucico then try something
like uucpmgr, etc.  Usually root maintains uucp stuff anyhow, so I don't 
view this as a real problem.

--
Ron@men1	(Ron Flax)
MTACCS Engineering Network
..!{seismo,umcp-cs}!{prometh,cal-unix}!men1!ron

     "The opinions expressed herein are mine only if you agree with them."

guy@rlgvax.UUCP (Guy Harris) (03/02/85)

Before we all jump on poor Dave, let us pause and turn to Chapter 1,
Verse UUCP(1), in the Good Book, Version 7:

	Pathnames may be one of

	(1)	a full pathname;

	(2)	a pathname preceded by '~user', where 'user' is a userid on
		the specified system and is replaced by that user's login
		directory;

	(3)	anything else is prefixed by the current directory.

No mention of '~' by itself.  Checking the 4.2BSD UUCP, it is special-cased
to refer to PUBDIR.  For those of you who may not need to know but who want
to know, it is a #define constant in the UUCP source which should be set to
the UUCP public directory (which should probably be left as
"/usr/spool/uucppublic").  This is used in other places; if a file can't
be moved to its final destination, it is sometimes moved to PUBDIR/something-
or-other and a mail message is sent out to that effect, mentioning PUBDIR
by name (so maybe you *do* need to know, in order to tell what it's talking
about).

Now maybe it doesn't appear in the V7 manual because it didn't exist in that
version of UUCP, or maybe it just wasn't documented.  I don't have V7
UUCP source handy, so I don't know.  I have the feeling it *was* added in
later versions of UUCP.  Now, in the C shell, "~" by itself refers to the
current user's home directory, so maybe in the V7 UUCP "~" by itself
referred to UUCP's home directory.  Then again, in vanilla V7
"/usr/spool/uucppublic" didn't exist either; "uucp"s home directory was,
if I remember correctly, "/usr/spool/uucp".

The later UUCPs do the right thing by not forcing UUCP's home directory
and the UUCP public directory to be the same directory.  I always use "~"
by itself to refer to the UUCP public directory.  However, there are systems
out there running V7, and "~" may or may not work there but it definitely wasn't
documented there.  If I remember correctly, the Law Society of Upper Canada is
running V7.  As such, Dave's documentation may very well make no mention of "~"
by itself.

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy

honey@down.FUN (code 101) (03/03/85)

uucp man pages since time immemorial have documented ~uucp.
surprisingly, henry spencer suggests that at&t's decision to
support this convention is arrogant and insular.  for shame,
henry.  are you suggesting is that some sort of magic should
make ~uucp mean something different?  unclean!

it is hardly arrogance on at&t's part for individual uucp
administrators to put uucp's home directory where they choose.
e.g., allegra has been running with the uucp home directory in
/usr/lib/uucp (where it belongs!) essentially forever, without
complaint.

not until honey danber has ~/file been properly documented; this
is now almost fixed:  the man page indicates that ~/file stands
for /usr/spool/uucppublic/file, which is almost true.  while the
default public directory is /usr/spool/uucppublic, this may be
changed by declaring LOGNAME=uufoo PUBDIR=whatever in the
Permissions file.  perhaps the real man page (which is offline,
in my office) gets it right.

	peter

john@genrad.UUCP (John Nelson) (03/03/85)

>Awww.  You done got me started cryin' now.  Boo Hoo.  Why not use an
>approach suggested by the uucp manual page ("manual?  what manual?  I
>never seen no manual before!?") and send to:
>
>	site!~/file

Well, I looked in both my Berkeley 4.1 manual, AND my Berkeley 4.2 manual,
and the format "site!~/file" is NOT documented,  So lets not get abusive,
huh?  I don't know if this is a feature added in system III, or just a
documentation clarification.

Even in my System III and System V manuals, the site!~/file format is
not really documented.

Quoted from the System III uucp manual entry (just happen to have it handy):

=>Path names may be one of:
=>  ...
=>2.  a path name preceded by ~user where user is a login name on the specified
=>    system and is replaced by that users's login directory
=>
=>3.  a path name preceded by ~/user where user is a login name on the specified
=>    system and is replaced by that users's directory under PUBDIR;

This is NOT THE SAME as site!~/file.  Oh, it is clarified in the "WARNING"
section, but it easy to understand the confusion.

piet@mcvax.UUCP (Piet Beertema) (03/04/85)

	>..the System V standard has "uucp" as a normal user whose home
	>directory is /usr/lib/uucp, and the uucico login is "nuucp".
	>Great. Why couldn't they leave well enough alone? Now, before
	>I transfer anything to/from a remote site's public directory,
	>I have to find out whether it's ~uucp or ~nuucp.
Is that the SysV standard or is SysV just by default distributed with
that setup?
Lots of non-SysV sites have/had uucp as a normal user with home directory
/usr/spool/uucp. This may work fine if there's only one system you're
talking to and if you don't use uucppublic. In all other cases it would
be wise to give each system a separate login (homedir e.g. /usr/spool/uucp)
and use uucp only as a special passwd entry, homedir /usr/spool/uucppublic.

-- 
	Piet Beertema, CWI, Amsterdam
	...{decvax,philabs}!mcvax!piet

henry@utzoo.UUCP (Henry Spencer) (03/05/85)

> it is hardly arrogance on at&t's part for individual uucp
> administrators to put uucp's home directory where they choose.

Except that it breaks a convention that much of the uucp world has
come to rely on.  If you don't care what you break (this attitude
is known as "arrogance" if one is feeling polite, and by less printable
words if one has just been bitten by it), you can change anything.

> not until honey danber has ~/file been properly documented; this
> is now almost fixed:  the man page indicates that ~/file stands
> for /usr/spool/uucppublic/file ...

I'm glad to hear that Honey Danber has finally documented this stuff.
I agree, by the way, that ~/file is a far-superior notation.  But a
good part of the world has been using ~uucp for quite a while, and
the conversion problem needs to be handly gently and patiently, not
by arbitrary fiat.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

smk@axiom.UUCP (Steven M. Kramer) (03/05/85)

The way I handle the 'su uucp' problem is to make a UUCP entry
in passwd right after the uucp entry.  The UUCP user has a normal shell.
After logging in, the owner of files shows as uucp due to the behavior
of the getpwent scanning algorithm, which is OK by me.

By the way, is much better to have different logins for each machine you
attach to.  This way, you can do things like last to find out how good
the connection is.  Also, there is more control over who calls you if each
connection is private.  (You old net fogies know this already.)
-- 
	--steve kramer
	{allegra,genrad,ihnp4,utzoo,philabs,uw-beaver}!linus!axiom!smk	(UUCP)
	linus!axiom!smk@mitre-bedford					(MIL)

david@ukma.UUCP (David Herron, NPR Lover) (03/06/85)

References: <454@lsuc.UUCP> <1242@eagle.UUCP> <5138@utzoo.UUCP>

>it is hardly arrogance on at&t's part for individual uucp
>administrators to put uucp's home directory where they choose.
>e.g., allegra has been running with the uucp home directory in
>/usr/lib/uucp (where it belongs!) essentially forever, without
>complaint.
>
>	peter

Why does the uucp home directory belong as /usr/lib/uucp??????

Granted, there should be an administrative login for the uucp "super-user".
But why should it get the name "uucp" since custom and convention for
many years has had ~uucp being PUBDIR.

BTW, the honey-danber uucp is really slick.  I just wish the manual
didn't talk and talk without saying anything.

-- 
:------------------------------------------------------------------:
:- David Herron							  -:
:-								  -:
:- ARPA-> "ukma!david"@ANL-MCS or david%ukma.uucp@anl-mcs.arpa    -:
:- ARPA-> Or even anlams!ukma!david@ucbvax.arpa			  -:
:-								  -:
:- UUCP-> {ucbvax,unmvax,boulder,research}!anlams!ukma!david	  -:
:- UUCP-> {mcvax!qtlon,vax135,mddc}!qusavx!ukma!david		  -:
:- UUCP-> {A-Large-Portion-of-The-World}!cbosgd!ukma!david	  -:
:------------------------------------------------------------------:

	"The home of poly-unsaturated thinking".

honey@down.FUN (code 101) (03/06/85)

ok fine, then it's arrogance:  fuck 'em.  this has nothing to
do with honey danber, system v, standards, arbitrary fiat, or
inconsistencies.  site administrators have been putting ~uucp
wherever they damn well please from time immemorial (i.e., since
1/1/70).  just because some uninformed soul can't read a man
page (would that he hadn't read the postnews man page), we don't
have to engage in false accusations or misguided breast-beating.

	peter

honey@down.FUN (code 101) (03/07/85)

david asks why i believe ~uucp should be /usr/lib/uucp.  personal
preference.  your mileage may vary.  (that phrase is getting kind of
old, isn't it?)

he goes on to opine that the honey danber manual "talks and talks
without saying anything."  this may well be true -- someone somewhere
wrote quite a tome, which i have weighed but not read.  but i think
honey, dan, and ber are innocent.  (aren't we, dave?)  besides, some
people may \enjoy/ reading about uucp administrivia.

	peter

honey@down.FUN (code 101) (03/07/85)

steve claims certain benefits of having different logins for each
neighbor machine.  this is impractical.  i have published princeton's
uucp dope many times:  i want as many people as possible to call me,
even though i won't call them back if they're too far away.  (pathalias
solves the reply problem.)  i'm not about to add thousands of
/etc/passwd entries.

what \is/ practical is to break the universe into equivalence classes
of capabilities/permissions.  in my case, i use four uucp logins:

	login	write	read	commands
	-----	-----	----	--------
	uucp	PUBDIR	nil	rmail
	nuucp	PUBDIR	nil	rmail, rnews, unbatch, cunbatch
	tuucp	PUBDIR	PUBDIR	ditto + uusend, uucp
	luucp	all	all	all

i protect the passwds on all but the first (by giving them to people i
trust), and by using the VALIDATE option in the Permissions file.

instead of using who to see if a call is active, i ls /usr/spool/locks
(or i run uustat -p).  and since honey danber produces separate logs
for each host, it's easy to gauge the frequency and reliability of a
connection.  besides, the honey danber conn() is perfect, and doesn't
demand the TLC we are all used to providing.

	peter

ps:  here's my Systems (was L.sys) data.  call me anytime.

princeton Any ACU 1200	trenton4522906 "" "" in:--in: uucp word uuprince
princeton Any ACU 1200	trenton4528678 "" "" in:--in: uucp word uuprince
princeton Any ACU 1200	trenton6831286 "" "" in:--in: uucp word uuprince