Hiding files on a CD
=====================
This document attempts to show how to hide files from being seen by an
operating system accessing a CD as an ISO9660/Rock Ridge, Joliet or HFS
CD. It also highlights some of the limitations ...
Note: this document is about the various -hide options - not be confused with
the -hidden options.
The -hidden options set the 'EXISTENCE' bit in the directory entry which
means the file or directory will be invisible - unless some special option
is used to mount or view the CD - Linux has the 'unhide' mount option to
make these files visible. i.e. the directory entry exists on the CD.
With hindsight, to avoid confusion with the -hidden option, it would have
been better to chose an option name like '-omit' instead of '-hide'...
The various -hide options actually exclude the relevant directory entry
from the directory tree. Therefore, it is not possible to access a file
or directory that has be hidden with the -hide option when the ISO9600/Rock
Ridge directory is mounted - because the directory entry does not exist on the
CD (but the file data does). You would probably be able to access this file
or directory when mounted as a Joliet or HFS CD (depending on other options
used). Similarly, a directory entry hidden with the -hide-joliet option
will not be accessible when mounted as an Joliet CD. Similarly for -hide-hfs
etc.
If you don't want a file or directory to appear on the CD at all, then use the
-exclude options, not the -hide options (mkisofs completely ignores any
file/directory excluded with the -exclude options).
========================================
Some thoughts on Joliet
- why it is a
dumb idea to have a CD
with Joliet enhancements but without Rock Ridge.
It also helps you to understand why it it not possible to append
a new session to a multi-session Joliet CD when Rock Ridge is
missing.
- Joliet is not an accepted independant international standard
like ISO-9660 or Rock Ridge (IEEE-P1282).
Joliet has been created in 1995 - Rock Ridge in 1990.
Rock Ridge became a IEEE standard around 1992.
Joliet is an unjustified addition to ISO-9660.
- The Joliet tree has no relation to the
ISO-9660 tree. Files from the ISO-9660 tree and from the
Joliet tree only share content. In general, it is not
possible to find the ISO-9660 name from a Joliet name
and vice versa if you check both trees on a CD.
Rock Ridge extensions are located at the end of each
ISO-9660 directory record. This makes the Rock Ridge
tree closely coupled to the ISO-9660 tree.
- Joliet does not allow all characters too, so the
Joliet filenames are not identical to the filenames
on disk.
As the ISO-9660 tree is the standard reference tree
on a CD and the ISO-9660 filenames don't allow all
characters and there is a length limitation, the
ISO-9660 names cannot be mapped to the filenames on the
OS reference tree on disk for doing multi-session.
Due to different limitations, the short ISO-9660 name
is in most cases not equal to the Joliet name or the
Rock Ridge name.
- Joliet has a filename length limitation of 64 chars (independent
from the character coding and type e.g. European vs. Japanese)
This is annoying as modern filesystems all allow 255 chars
per path name component.
Joliet uses UTF-16 coding while Rock Ridge uses ISO-8859 or
UTF-16 based chars and allows 255 octets. Using UTF-8,
Rock Ridge allows 85 Japanese characers or 255 US-ASCII chars.
Other than slightly longer filenames, Joliet offers no new properties
over plain ISO 9660. Rock Ridge is an open extendable standard and
there is no filesystem property on Win32 that could not be implemented
using Rock Ridge.
Except Linux and FreeBSD, there is no POSIX-like like OS that supports
Joliet. Never create Joliet only CD's for that reason.
|