Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:rsshrpm
Übersetzungen dieser Seite?:

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:

--- ./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

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 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:

  1. auf http://www.pizzashack.org/rssh/download.shtml dem Link zum Download des .src.rpm folgen, Datei herunterladen
  2. 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
  3. das Source-Archiv auspacken und die beiden oben beschriebenen Änderungen durchführen
  4. das Source-Archiv löschen und neu erstellen (tar -cvzf rssh-2.3.2.tar.gz rssh-2.3.2)
  5. sicherstellen, dass es sich bei /usr/src/packages/SOURCES/rssh-2.3.2.tar.gz jetzt um die modifizierten Quellen handelt (Zeitstempel beachten)
  6. (fakultativ) ändern der Zeile Release: 1 in (z. B.) Release: 1m (m für modified) in der Datei /usr/src/packages/SPECS/rssh.spec
  7. cd /usr/src/packages
  8. rpmbuild -ba SPECS/rssh.spec
  9. 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