[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:inetd:Den Internet-Superserver konfigurieren] [:Rechte:Rechte von Dateien und Ordnern ändern] }}} [[Inhaltsverzeichnis(1)]] Der DARPA-TFTP-Server ist ein einfacher Server für das [wikipedia:Trivial_File_Transfer_Protocol:TFTP-Protokoll], welches im [https://datatracker.ietf.org/doc/html/rfc1350 RFC1350] {en} standardisiert ist. TFTP nutzt standardmäßig UDP über den Port 69. [wikipedia:Trivial_File_Transfer_Protocol:TFTP] darf nicht mit [wikipedia:File_Transfer_Protocol:FTP] verwechselt werden. Auch wenn TFTP sehr alt ist, wird es noch immer häufig für [wikipedia:PXE:] und auch für das Übertragen von Firmware auf Netzwerk-Hardware genutzt. Es arbeitet unverschlüsselt und bietet keine Authentifizierung. = Installation = tftpd sowie ein Internet-Superserver können direkt aus den Quellen installiert werden [1]. Hat man bereits einen Internet-Superserver in Betrieb, so muss man diesen entsprechend konfigurieren. '''tftpd''' ist vom Metapaket '''inet-superserver''' abhängig, durch welches standardmäßig [:xinetd:] installiert wird, sofern kein anderer Internet-Superserver bereits installiert ist. Will man einen anderen, so sollte man diesen vor der Installation von tftpd installieren. {{{#!vorlage Paketinstallation tftpd, universe }}} = Konfiguration = Die Konfiguration ist maßgeblich davon abhängig, welcher Internet-Superserver installiert ist. Unter Ubuntu existieren mehrere Varianten: * [:inetd:inetutils-inetd] * [:inetd:openbsd-inetd] * [:rlinetd:] * [:xinetd:] == inetd == Für inetutils-inetd und openbsd-inetd wird in der Datei ''/etc/inetd.conf'' automatisch ein Eintrag erstellt. {{{tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp }}} Dieser sorgt dafür, dass tftpd nur auf IPv4 lauscht. Soll der TFTP-Server auch auf IPv6 lauschen, so muss eine weitere Zeile eingefügt werden. {{{ tftp dgram udp6 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp }}} == xinetd == Für xinetd muss die Datei '''/etc/xinetd.d/tftpd''' mit folgendem Inhalt erstellt werden: {{{service tftp { #für IPv4 flags = NAMEINARGS socket_type = dgram protocol = udp wait = yes user = nobody server = /usr/sbin/tcpd server_args = /usr/sbin/in.tftpd /srv/tftp } service tftp { #für IPv6 flags = NAMEINARGS socket_type = dgram protocol = udp6 wait = yes user = nobody server = /usr/sbin/tcpd server_args = /usr/sbin/in.tftpd /srv/tftp } }}} == Verzeichnis für Dateien == tftpd nutzt das Verzeichnis '''/srv/tftp''' für auszuliefernde Dateien. Dies kann in den Einträgen für den Internet-Superserver geändert werden. Standardmäßig ist das Verzeichnis '''/srv/tftpd''' nicht vorhanden und muss manuell erstellt werden. {{{#!vorlage Befehl sudo mkdir /srv/tftp }}} Legt man dort Dateien ab müssen diese entweder nobody (Eigentümer) bzw. nogroup (Gruppe) gehören oder für alle (others) lesbar sein, damit sie von tftpd ausgeliefert werden können. Damit Dateien auf den TFTP-Server hochgeladen werden können, müssen diese bereits auf dem Server existieren (z.B. vorher mit touch anlegen). Zudem muss der Nutzer nobody auf die Datei Schreibberechtigung haben. Alternativ kann tftpd auch unter einem anderen benutzer laufen, dazu muss die Konfiguration des Internet-Superserver angepasst werden. Hierzu ist ''nobody'' durch den entsprechenden Benutzernamen zu ersetzen. = Problembehebung = Ist der TFTP-Server nicht erreichbar, sollte man den syslog auf mögliche Fehlermeldung des inetd untersuchen, da zwar inetd starten kann, eventuell der tftp-Dienst aber nicht. Mit '''netstat''' kann zudem geprüft werden, ob der inetd auf dem UDP-Port 69 lauscht. Ist dies nicht so ist der Fehler im inetd zu suchen. = Links = * [:advanced_TFTP:atftpd - Alternativer TFTP-Server] * [man:in.tftpd:Manpage] #tag: Netzwerk, Ubuntu, Internet, System, Installation, Server