[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Deleting owned files...



Michael Smith wrote about not being able to extract tar files and
Frank Bartels demonstrated this on an expample:

|> lancelot# uname -a
|> MiNT lancelot 1.10 4.4 atari
|> [Note: Running MiNT 1.10 with nox' and Kay's patches, MinixFS 0.60 PL9]
|> lancelot# whoami
|> root
|> lancelot# id
|> uid=0(root) gid=0(wheel)
|> lancelot# tar --version
|> GNU tar version 1.11.2
|> lancelot# tar tzvf uucp-1.03.tar.gz
|> drwxrwxr-x 269/15            0 Apr  7 05:31 1992 uucp-1.03/
|> -r--r--r-- 269/15        17976 Apr  7 05:05 1992 uucp-1.03/COPYING
|> [...]
|> [Note: The file COPYING is read-only]
|> lancelot# tar xzvf uucp-1.03.tar.gz uucp-1.03/COPYING
|> uucp-1.03/COPYING
|> tar: Could not create file uucp-1.03/COPYING : path not found.

This is the effect of a recent change in the path parser: MiNT returns
EPATHNF if a path component does not exist and is supposed to be a
directory.  Older versions returned EFILNF in this case, a.k.a. ENOENT
under Unix.  Recompile with the newest MiNTlib which tries to
translate the error code to be Unix compatible.

|> lancelot# mkdir uucp-1.03
|> lancelot# tar xzvf uucp-1.03.tar.gz uucp-1.03/COPYING
|> uucp-1.03/COPYING
|> tar: couldn't change access and modification times of uucp-1.03/COPYING:
|> 	access denied.

The function utime() opens the file for writing when trying to set the
modification time of the file.  This is wrong.  You don't need write
permission on the file if you own it (root can always touch, of
course, but see below).  Again, recompiling with the latest MiNTlib
helps, since it knows about Dcntl(FUTIME), which works without a file
handle.

|> lancelot# ll !$
|> -r--r--r--   1 269      15          17976 May 11 19:46 uucp-1.03/COPYING
|> lancelot# tar xzvf uucp-1.03.tar.gz uucp-1.03/COPYING
|> uucp-1.03/COPYING
|> tar: Could not create file uucp-1.03/COPYING : access denied.

MiNT does not allow root to open a readonly file for writing.  This
should really be changed, IMHO.

|> lancelot# ll !$
|> -r--r--r--   1 269      15          17976 May 11 19:46 uucp-1.03/COPYING

IMHO, the biggest problem of MiNT is its compatibility with TOS.  I
would rather have it as much POSIX compatible as possible, even if
some programs relying on TOS features fail (e.g. STZIP, i don't need
it :-).  Therefore i have removed these features from my version of
MiNT, and yes, that is the reason why i don't have problems with tar
or any other Unix utility.  That's the advantage of having the source
code. :-)

Andreas.

-- 
+------------------------------------------------------------------------+
Andreas Schwab                                      "And now for something
schwab@ls5.informatik.uni-dortmund.de                completely different"