Re: 4.1-R: CD-Rom-Unterverzeichnis als non-root kopieren.

From: Oliver Fromme <olli(at)secnetix.de>
Date: Tue, 16 Oct 2001 10:06:30 +0200 (CEST)

Gregor Bittel <Gregor.Bittel(at)gmx.de> wrote:
> Der Mount-Punkt sieht im ungemounteten Zustand so aus
> (im $home des Users "gregor"):
> drwxr-xr-x 2 gregor user 512 29 Mai 21:17 +cdrom
>
> Wenn ich nun das CD-Laufwerk mounte, ändern sich die
> Rechte auf dies hier:
> dr-xr-xr-x 1 root wheel 2048 5 Okt 01:03 +cdrom

Normal.

> Ok, und wenn ich nun ein Verzeichnis (nehmen wir mal das "doc"-
> Verzeichnis) unterhalb von +cdrom kopieren möchte, kommt das hier:
> gregor(at)2xp200mmx=>cp -R +cdrom/doc $home/temp
> cp: /home/gregor/temp/doc/data: Permission denied

Ist klar -- das kopierte Verzeichnis hat dann ja auch Mode
dr-xr-xr-x, ergo darfst Du nicht reinschreiben. Ob die Da-
teien und Verzeichnisse auf der CD-ROM nun root gehören
oder nicht, spielt keine Rolle. Die Kopie gehört natür-
lich Dir, und das entscheidende ist, daß das entsprechende
"w"-Bit fehlt.

Aus cp(1):

   -R [...] Created directories have the same mode as the
        corresponding source directory, unmodified by the
        process' umask.

> Irgendwie blicke ich das nicht mehr:
> Es ist alles readable, aber kopieren geht irgendwie
> nicht...

Du brauchst Schreibrecht auf dem kopierten Verzeichnis.

> Nehme ich eine Diskette mit Unterverzeichnissen, oder
> eine HDD oder eine Zip-Disk und binde sie ein, funktioniert
> alles bestens...

Klar, da sind die Verzeichnisse nicht read-only, also auch
nicht in der Kopie, also gibt's kein Problem, dort Dateien
hineinzukopieren. Eine CD-ROM dagegen ist naturgemäß read-
only.

Generell würde ich davon abraten, cp zum Kopieren ganzer
Verzeichnisbäume zu verwenden. Je nachdem, auf welcher
Plattform man sich befindet, kann man dabei mehr oder we-
niger üble Überraschungen erleben.

Unter BSD empfehle ich cpdup (ist in den Ports). Das legt
(fast) eine exakte 1:1-Kopie an und läßt sich dabei auch
von den Permissions nicht aus den Tritt bringen. Du tippst
also einfach »cpdup +cdrom/doc $home/temp« und gut is'.

Die portablere Variante ist natürlich die Kombination find/
cpio: »cd +cdrom/doc; find . | cpdup -dump $home/temp«.
Hat den Nachteil, daß man erst in das Quell-Verzeichnis
wechseln muß (oder noch ein sed einschieben, um den Prefix
wieder wegzuschnippeln). Außerdem muß man beachten, daß
cpio die Permissions bei Verzeichnissen nicht korrekt ko-
poiert, sondern hier einfach die umask nimmt.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 16 Oct 2001 - 10:06:32 CEST

search this site