root@debian9:~# apt-get install atftpd atftp
Egyesek szerint nem haszontalan, ha az ember olvas. Megragadja figyelmünket a vastaggal kiemelt rész:
The following additional packages will be installed:
libevent-2.0-5 libfile-copy-recursive-perl openbsd-inetd update-inetd
Ezek szerint az atftpd inetd-t használ. Na, majd leszoktatjuk róla:)
A telepedés után nézzük csak meg a
root@debian9:~# netstat -tulpn
parancs kimenetét, látni fogjuk, hogy az inetd az udp 69-es porton lóg.Nézzük meg az /etc/inetd.conf fájl tartalmát, ebből kiderül például, hogy a szerverünk gyökérmappája az /srv/tftp, úgyhogy tegyünk ide egy fájlt, aztán próbáljuk megszerezni. Az alábbiak szerint valami nem oké...
root@debian9:~# touch /srv/tftp/egy.txt
root@debian9:~# atftp localhost
tftp> get egy.txt
timeout: retrying...
timeout: retrying...
timeout: retrying...
timeout: retrying...
timeout: retrying...
^Ctftp: unknown error.
tftp: aborting
tftp> quit
root@debian9:~#
Ha utánanézünk, hogy ez meg mi (javaslom a ping localhost parancsot), akkor látjuk, hogy a localhost nem 127.0.0.1, hanem ::1. Ugyanezt erősíti meg a következő parancs kimenete:
root@debian9:~# getent hosts localhost
::1 localhost ip6-localhost ip6-loopback
Azaz a gethostbyname() hívás az IPv6 címet adja vissza, ha van ilyen. Az aftpd jelen verziója pedig olyat nem tud, úgyhogy bukó, megyünk sírni. Ja nem, használjuk az atftp 127.0.0.1 parancsot :) Ha azt akarjuk, hogy az alábbi példák menjenek, kell még egy
root@debian9:~# chown nobody:nogroup /srv/tftp/egy.txt
parancs is. Nélküle megy majd a get, de a put nem.root@debian9:~# atftp 127.0.0.1
tftp> get egy.txt
tftp> put egy.txt
tftp> put .bashrc
tftp> quit
root@debian9:~# ls -A /srv/tftp/
.bashrc egy.txt
Akkor eddig megvagyunk, de legyen az atftpd önálló, ne szoruljon az inetd gyámkodására! Jó érzékkel megnézzük, mi van /usr/share/doc/atftpd -ben, és találunk README.Debian-t, amit mindig tiszta haszon elolvasni (majdnem). Felfedezzük, hogy van /etc/default/atftpd, és ebben az USE_INETD=false lesz, ami szent célunkhoz elvezet.
A
root@debian9:~# systemctl start atftpd
kevés az üdvösséghez, még aroot@debian9:~# systemctl status atftpd
sem hazudik, hiszen Active: active (exited) -et mond, és itt az exited a lényeg. A fenti netstat parancsot újra kiadva látjuk, hogy még mindig az ined fogja a 69-es udp-portot.Na akkor:
root@debian9:~# systemctl disable inetd
Removed /etc/systemd/system/multi-user.target.wants/inetd.service.
root@debian9:~# systemctl stop inetd
root@debian9:~# systemctl restart atftpd
root@debian9:~# systemctl status atftpd
<vágva>
Active: active (running)
<vágva>
root@debian9:~# systemctl enable atftpd
atftpd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable atftpd
- az első paranccsal leállítjuk az inetd-t (ha kellene még valami miatt, akkor alakítsuk megjegyzéssé az /etc/inetd.conf atftpd-vel foglalkozó sorát, és indítsuk újra az inetd-t).
- a másodikkal elértük, hogy rebootkor nem indul el újra.
- a harmadikkal elindítjuk az atftpd-t
- a negyedikkel meggyőződünk róla, hogy megy (running),
- az utolsóval meg elértük, hogy rebootkor újra elindul.
Jó:)
Irodalom:
https://unix.stackexchange.com/questions/50365/getent-hosts-prints-ipv6-getent-ahosts-prints-ipv4
Nincsenek megjegyzések:
Megjegyzés küldése