"cpio" frisst Rechte

05/01/2008 - 19:42 von helmut | Report spam
Hallo alle miteinander,

ich möchte gern *.rpm-Dateien in Tarballs verwandeln. Klar - geht mit
einigen fertigen Programmen, z.B. "rpm2tgz".
Aber ich möchte zwischendrin das Paket auswickeln, einige Dateien àndern
und erst dann den Tarball bauen.

rpm2cpio $Datei.rpm > $Datei.cpio

funktioniert brav.

mkdir Verz
cd $Verz
cpio -imd < ../$Datei.cpio

macht faktisch "chmod -R -go-rwx usr"
in diesem Verzeichnis, und damit ist das "/usr"-Verzeichnis faktisch
ruiniert.
Ich habe auch schon die weiteren Optionen "-B -n --no-absolute-
filenames" ausprobiert; die Rechte werden immer noch gefressen.

"rpm2targz" scheint das Problem zu kennen; dort wird

find . -type d -perm 700 -exec chmod 755 {} \;

nachgeschoben.

Benimmt sich "cpio" stets so schlecht?




Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".
 

Lesen sie die antworten

#1 Thomas Rachel
14/01/2008 - 19:28 | Warnen spam
Helmut Hullen schrieb:

ich möchte gern *.rpm-Dateien in Tarballs verwandeln. Klar - geht mit
einigen fertigen Programmen, z.B. "rpm2tgz".



Muß man das als root verwenden? Oder analysiert das das cpio-Format von
Hand? Ansonsten gehen nàmlich die User- und Gruppenzuordnungen der
Dateien flöten...


Aber ich möchte zwischendrin das Paket auswickeln, einige Dateien àndern
und erst dann den Tarball bauen.



Ok...


rpm2cpio $Datei.rpm > $Datei.cpio

funktioniert brav.

mkdir Verz
cd $Verz
cpio -imd < ../$Datei.cpio

macht faktisch "chmod -R -go-rwx usr"
in diesem Verzeichnis, und damit ist das "/usr"-Verzeichnis faktisch
ruiniert.



Hm, das kommt darauf an.

Ich habe es eben mal mit einem Testpaket versucht. Ergebnis ist wohl,
daß Verzeichnisse, die nicht explizit in dem Paket vorhanden sind, mit
700 angelegt werden, Verzeichnisse, die drin sind, hingegen mit den im
Paket verzeichneten Rechten.

Beispiel:

$ rpm -q newsfwd-0-0.tr.0.noarch.rpm -p -lv
drwxr-xr-x 2 root root 0 Aug 13 21:01 /etc/newsfwd
-rw- 1 root root 2455 Aug 13 21:01
/etc/newsfwd/id_rsa
-rw-r--r-- 1 root root 565 Aug 13 21:01
/etc/newsfwd/id_rsa.pub
-rw-r--r-- 1 root root 339 Aug 13 21:01
/etc/xinetd.d/newsfwd

$ rpm2cpio newsfwd-0-0.tr.0.noarch.rpm | cpio -tv
drwxr-xr-x 2 root root 0 Aug 13 21:01 ./etc/newsfwd
-rw- 1 root root 2455 Aug 13 21:01 ./etc/newsfwd/id_rsa
-rw-r--r-- 1 root root 565 Aug 13 21:01
./etc/newsfwd/id_rsa.pub
-rw-r--r-- 1 root root 339 Aug 13 21:01
./etc/xinetd.d/newsfwd

(sorry für die verhunzten Umbrüche)

$ mkdir y
$ rpm2cpio newsfwd-0-0.tr.0.noarch.rpm | (cd y; cpio -ivmd)
./etc/newsfwd
./etc/newsfwd/id_rsa
./etc/newsfwd/id_rsa.pub
./etc/xinetd.d/newsfwd
8 blocks
$ find y -ls
592831 0 drwxr-xr-x 3 glglgl glglgl 72 Jan 14 19:24 y
592832 0 drwx 4 glglgl glglgl 96 Jan 14 19:24 y/etc
592863 0 drwx 2 glglgl glglgl 72 Jan 14 19:24
y/etc/xinetd.d
592864 4 -rw-r--r-- 1 glglgl glglgl 339 Aug 13 21:01
y/etc/xinetd.d/newsfwd
592860 0 drwxr-xr-x 2 glglgl glglgl 104 Jan 14 19:24
y/etc/newsfwd
592862 4 -rw-r--r-- 1 glglgl glglgl 565 Aug 13 21:01
y/etc/newsfwd/id_rsa.pub
592861 4 -rw- 1 glglgl glglgl 2455 Aug 13 21:01
y/etc/newsfwd/id_rsa

etc und etc/xinetd.d waren nicht im rpm -> 700
etc/newsfwd war im rpm -> dortige Maske


Benimmt sich "cpio" stets so schlecht?



Fazit: Nein; nur bei nicht bekannten Verzeichnissen. Vielleicht wàre es
sinnvoll, nach dem Auspacken die Original-Datei-und-Verzeichnisliste zu
Hilfe zu nehmen, um den fertigen tarball zu bauen, so daß dort nur
Eintràge hineinkommen, die auch im rpm waren...


Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".



Da fehlen zwei Bindestriche und ein Leerzeichen vor Deiner Signatur...



Thomas

Ähnliche fragen