Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:rsshrpm

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
comp:rsshrpm [2008-11-23 1726]
werner neuer Patch für scp und sftp-server
comp:rsshrpm [2009-01-19 1756] (aktuell)
werner Link zum Buildservice
Zeile 1: Zeile 1:
 +====== RSSH als RPM ======
  
 +Es gibt das schöne Tool rssh (http://​www.pizzashack.org/​rssh/​index.shtml). Es wird als Shell für einen User eingetragen und erlaubt diesem User, Dateien per ''​scp'',​ ''​sftp'',​ ''​rsync'',​ ''​cvs''​ und/oder ''​rdist''​ zu übertragen,​ aber es erlaubt ihm nicht, sich am System anzumelden. Wer was darf, wird in ''/​etc/​rssh.conf''​ festgelegt. Saubere Sache, das! :-)
 +
 +Die Software wurde im Januar 2006 zuletzt aktualisiert und ist jetzt perfekt, sagt der Autor. Mag sein, aber die Installationsroutinen sind es leider nicht.
 +
 +===== Schwachpunkt 1: sftp-server =====
 +
 +Der erste Schwachpunkt bei der Installation ist, dass das Binary sftp-server auf 64 Bit-Systemen nicht gefunden wird, weil es in ''/​usr/​lib64''​ liegt und die Routine nur in ''/​usr/​lib''​ sucht. Habe mich gefragt, warum configure nicht da nachsieht, wo es konfiguriert ist (und dann feststellen müssen, dass die Datei nur von root gelesen werden kann :-(), und mir einen kleinen Patch ausgedacht:
 +
 +<code diff>
 +--- ./configure 2008-11-23 17:​17:​59.000000000 +0100
 ++++ ../​rssh-orig/​configure ​     2006-01-07 03:​24:​58.000000000 +0100
 +@@ -4984,10 +4984,6 @@
 + fi
 + ​scp_path=$ac_cv_path_scp_path
 +
 +-if test -z "​$scp_path";​ then
 +-  scp_path=`which scp`
 +-fi
 +-
 + if test -n "​$scp_path";​ then
 +   echo "​$as_me:​$LINENO:​ result: $scp_path"​ >&5
 + echo "​${ECHO_T}$scp_path"​ >&6
 +@@ -5032,10 +5028,6 @@
 +   *)
 +   ​as_save_IFS=$IFS;​ IFS=$PATH_SEPARATOR
 + ​as_dummy="/​usr/​libexec:/​usr/​libexec/​openssh:/​usr/​local/​libexec/​openssh:/​usr/​lib/​openssh:/​usr/​lib:/​usr/​local/​libexec:/​usr/​lib/​ssh"​
 +-as_arch_helper=`uname -m`
 +-if test "​a$as_arch_helper"​ = "​ax86_64";​ then
 +-  as_dummy="​$as_dummy:/​usr/​lib64/​openssh:/​usr/​lib64:/​usr/​lib64/​ssh"​
 +-fi
 + for as_dir in $as_dummy
 + do
 +   ​IFS=$as_save_IFS
 +@@ -5054,12 +5046,6 @@
 + fi
 + ​sftp_path=$ac_cv_path_sftp_path
 +
 +-if test -z "​$sftp_path";​ then
 +-    if test -r /​etc/​ssh/​sshd_config;​ then
 +-        sftp_path=`grep sftp-server /​etc/​ssh/​sshd_config | awk '​{print $3}'`
 +-    fi
 +-fi
 +-
 + if test -n "​$sftp_path";​ then
 +   echo "​$as_me:​$LINENO:​ result: $sftp_path"​ >&5
 + echo "​${ECHO_T}$sftp_path"​ >&6
 +</​code>​
 +
 +In diesem Patch ist außerdem der ''​scp''​-Teil enthalten -- weiß der Kuckuck, warum ''​scp''​ vom openSUSE Build System sonst nicht gefunden wird :-/
 +
 +Der Code lässt sich z. B. als ''​configure.patch''​ abspeichern. Wenn man dann ein ''​patch -p0 < configure.patch''​ ausführt, sollte der Flicken eingesetzt sein ;-). Oder man fügt die gekennzeichneten Zeilen ​ manuell ein, je nachdem, was schneller geht :-).
 +
 +===== Schwachpunkt 2: rpmbuild und rssh_chroot_helper =====
 +
 +So weit, so gut. Nun habe ich aus dem [[http://​www.pizzashack.org/​rssh/​download.shtml|zum Download angebotenen]] .src.rpm das Spec-File extrahiert und die gepatchten Sources dazu genommen. Der Build schlägt fehl. Und zwar wird ganz zum Schluss ein "​chmod"​ auf das Binary ''​rssh_chroot_helper''​ ausgeführt,​ aber leider wird dabei auf ''/​usr/​lib64/​rssh_chroot_helper''​ zugegriffen und nicht auf das Binary, das gerade gebaut wurde :-( Im Bugtracker auf sourceforge.net wird zwar in Bug 1384981 eine Lösung gegeben, aber sie hilft nicht. Stattdessen habe ich Zeile 731 in Makefile.in um das ''​$(DESTDIR)''​ erweitert, **das** hilft :-).
 +
 +===== Vorgehen: =====
 +
 +  - auf http://​www.pizzashack.org/​rssh/​download.shtml dem Link zum Download des .src.rpm folgen, Datei herunterladen
 +  - als root das .src.rpm installieren. Danach existieren ''/​usr/​src/​packages/​SPECS/​rssh.spec''​ und ''/​usr/​src/​packages/​SOURCES/​rssh-2.3.2.tar.gz''​
 +  - das Source-Archiv auspacken und die beiden oben beschriebenen Änderungen durchführen
 +  - das Source-Archiv löschen und neu erstellen (''​tar -cvzf rssh-2.3.2.tar.gz rssh-2.3.2''​)
 +  - sicherstellen,​ dass es sich bei ''/​usr/​src/​packages/​SOURCES/​rssh-2.3.2.tar.gz''​ jetzt um die modifizierten Quellen handelt (Zeitstempel beachten)
 +  - (fakultativ) ändern der Zeile ''​Release:​ 1''​ in (z. B.) ''​Release:​ 1m''​ (m für modified) in der Datei ''/​usr/​src/​packages/​SPECS/​rssh.spec''​
 +  - ''​cd /​usr/​src/​packages''​
 +  - ''​rpmbuild -ba SPECS/​rssh.spec''​
 +  - ''​rpm -ivh RPMS/​$(uname -m)/​rssh*.rpm''​ :-)
 +
 +Der ''​rpmbuild''​-Befehl hat sowohl ein .src.rpm als auch ein binäres RPM -- passend zur verwendeten Architektur -- gebaut. Der ''​rpm''​-Befehl zum Schluss installiert das dann auch :-)
 +
 +**Nachtrag 2009-01-19**:​ Das Gefreckel hat mich inspiriert, mir einen Account für den openSUSE-Buildservice zu holen. SUSE-Nutzer können das Paket deshalb jetzt auch aus dem Buildservice ziehen, die Basis-URL ist [[http://​download.opensuse.org/​repositories/​home:/​werfl]],​ darunter suche man seine Distri :-)
comp/rsshrpm.txt · Zuletzt geändert: 2009-01-19 1756 von werner