哪個 tftp 伺服器正在執行
我需要找出
tftp
正在執行的伺服器/守護程序,以便編輯它的配置並查看錯誤日誌。我發現有一個 tftpd 服務正在執行:
# netstat -tupln | grep ftp udp 0 0 0.0.0.0:69 0.0.0.0:* 7915/in.tftpd # ps aux | grep ftp root 7915 0.0 0.0 2704 296 ? Ss 22:10 0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot
我試圖編輯它的配置(注意使用者名
nobody
):# nano /etc/xinetd.d/tftp # cat /etc/xinetd.d/tftp service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = -v -s /tftpboot disable = no }
但是重新啟動 tftpd 時,沒有任何變化:
# kill 7915 # ps aux | grep ftp root 16815 0.0 0.0 2704 124 ? Ss 22:31 0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot
所以我嘗試編輯另一個配置文件:
# nano /etc/inetd.conf # cat /etc/inetd.conf # /etc/inetd.conf: see inetd(8) for further informations. # # Internet superserver configuration database # # # Lines starting with "#:LABEL:" or "#<off>#" should not # be changed unless you know what you are doing! # # If you want to disable an entry so it isn't touched during # package updates just comment it out with a single '#' character. # # Packages should modify this file by using update-inetd(8) # # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> # #:INTERNAL: Internal services #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #time stream tcp nowait root internal #:STANDARD: These are standard services. #:BSD: Shell, login, exec and talk are BSD protocols. #:MAIL: Mail, news and uucp services. #:INFO: Info services #:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot #:RPC: RPC based services #:HAM-RADIO: amateur-radio services #:OTHER: Other services
然後嘗試重新啟動:
# kill 16815 # ps aux | grep ftp root 18287 0.0 0.0 2704 120 ? Ss 22:34 0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot
但正如你所見,一切都沒有改變。
我已經修剪了上面的輸出以獲得更好的可讀性。
那麼我如何知道正在執行哪個 tftp 守護程序以及配置文件和錯誤日誌是什麼?
編輯#1(2014 年 1 月 21 日,07:33 UTC):
回複評論員 @“Mark Plotnick”
# ps -efl|grep tftp 1 S root 18287 1 0 80 0 - 676 poll_s Jan20 ? 00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /tftpboot 0 S root 19271 10638 0 80 0 - 1097 pipe_w 11:36 pts/1 00:00:00 grep --color=auto tftp # ps -p 1 PID TTY TIME CMD 1 ? 00:00:03 init
回復回复者@“slm”
在將它們導入 Ubuntu 12.04 後,我已經執行了您編寫的命令:
# dpkg --list | grep tftp ii atftp 0.7.dfsg-11 advanced TFTP client ii tftp 0.17-18ubuntu2 Trivial file transfer protocol client rc tftpd 0.17-18ubuntu2 Trivial file transfer protocol server ii tftpd-hpa 5.2-1ubuntu1 HPA's tftp server # dpkg --listfiles tftpd-hpa /. /usr /usr/sbin /usr/sbin/in.tftpd /usr/share /usr/share/man /usr/share/man/man8 /usr/share/man/man8/in.tftpd.8.gz /usr/share/doc /usr/share/doc/tftpd-hpa /usr/share/doc/tftpd-hpa/README /usr/share/doc/tftpd-hpa/README.security /usr/share/doc/tftpd-hpa/README.Debian /usr/share/doc/tftpd-hpa/copyright /usr/share/doc/tftpd-hpa/examples /usr/share/doc/tftpd-hpa/examples/sample.rules /usr/share/doc/tftpd-hpa/examples/tftpd-hpa.preseed /usr/share/doc/tftpd-hpa/changelog.Debian.gz /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/tftpd-hpa /etc /etc/init /etc/init/tftpd-hpa.conf /etc/init.d /usr/share/man/man8/tftpd.8.gz /etc/init.d/tftpd-hpa # dpkg --status tftpd-hpa Package: tftpd-hpa Status: install ok installed Priority: extra Section: net Installed-Size: 137 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Architecture: i386 Source: tftp-hpa Version: 5.2-1ubuntu1 Depends: debconf (>= 0.5) | debconf-2.0, upstart-job, libc6 (>= 2.11), libwrap0 (>= 7.6-4~), adduser Suggests: syslinux-common Conflicts: atftpd, tftpd Conffiles: /etc/init/tftpd-hpa.conf 3647737c313ad1968b8463388ded2d26 Description: HPA's tftp server Trivial File Transfer Protocol (TFTP) is a file transfer protocol, mainly to serve boot images over the network to other machines (PXE). . tftp-hpa is an enhanced version of the BSD TFTP client and server. It possesses a number of bugfixes and enhancements over the original. . This package contains the server. Homepage: http://www.kernel.org/pub/software/network/tftp/ Original-Maintainer: Daniel Baumann <daniel.baumann@progress-technologies.net> # /usr/sbin/in.tftpd --version tftp-hpa 5.2, with remap, with tcpwrappers # sudo lsof -p $(pgrep -n "in.tftpd") lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/tlvlab/.gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME in.tftpd 18287 root cwd DIR 0,20 0 9575553 / in.tftpd 18287 root rtd DIR 8,1 4096 2 / in.tftpd 18287 root txt REG 8,1 35008 270805 /usr/sbin/in.tftpd in.tftpd 18287 root mem REG 8,1 47040 28836074 /lib/i386-linux-gnu/libnss_files-2.15.so in.tftpd 18287 root mem REG 8,1 42652 28836073 /lib/i386-linux-gnu/libnss_nis-2.15.so in.tftpd 18287 root mem REG 8,1 30520 28836075 /lib/i386-linux-gnu/libnss_compat-2.15.so in.tftpd 18287 root mem REG 8,1 92016 28836060 /lib/i386-linux-gnu/libnsl-2.15.so in.tftpd 18287 root mem REG 8,1 1734120 28836077 /lib/i386-linux-gnu/libc-2.15.so in.tftpd 18287 root mem REG 8,1 35032 28836781 /lib/i386-linux-gnu/libwrap.so.0.7.6 in.tftpd 18287 root mem REG 8,1 134344 28836067 /lib/i386-linux-gnu/ld-2.15.so in.tftpd 18287 root 0u CHR 1,3 0t0 1029 /dev/null in.tftpd 18287 root 1u CHR 1,3 0t0 1029 /dev/null in.tftpd 18287 root 2u CHR 1,3 0t0 1029 /dev/null in.tftpd 18287 root 3u unix 0xf0030d80 0t0 2154638 socket in.tftpd 18287 root 4u IPv4 2154641 0t0 UDP *:tftp
日誌文件的路徑可能是
/var/log/syslog
(文件/etc/syslog.conf
不存在)。
此設置
tftpd
由超級伺服器管理xinetd
。因此,您列出的配置文件是tftpd
由xinetd
.我正在使用 Fedora 19,但可以使用與其他發行版的包管理器類似的方法來執行類似的結果。
tftpd 的包叫什麼名字?
使用 RPM 很容易找到。
$ rpm -qa | grep tftp tftp-server-0.49-2.el5.centos
所以在 CentOS 5.x 上,這個包叫做 `tftp-server。它還顯示了版本,但我們稍後會介紹。
安裝中包含哪些文件?
在包管理器的幫助下,另一個簡單的方法。
$ rpm -ql tftp-server /etc/xinetd.d/tftp /tftpboot /usr/sbin/in.tftpd /usr/share/man/man8/in.tftpd.8.gz /usr/share/man/man8/tftpd.8.gz
**注意:**沒有其他配置文件,所以這個版本的所有配置
tftpd
都是通過命令行完成的。注意這一點很重要,因為這告訴我們必須更改服務文件tftpd
,. 另請注意,它有一個手冊頁,如果我們也不確定要設置/取消設置什麼切換,這將很有幫助。xinetd``/etc/xinetd.d/tftp``tftpd
什麼版本?
您可以通過多種方式獲取此資訊。最簡單的方法是從包管理器中獲取它。
$ rpm -qi tftp-server Name : tftp-server Relocations: (not relocatable) Version : 0.49 Vendor: CentOS Release : 2.el5.centos Build Date: Sat 26 Sep 2009 12:28:27 PM EDT ...
我們通常也可以從工具本身獲得它。
$ /usr/sbin/in.tftpd --version tftp-hpa 0.49, with remap, with tcpwrappers
手冊頁
值得注意的一個開關是詳細程度開關。
--verbose, -v Increase the logging verbosity of tftpd. This flag can be specified multiple times for even higher verbosity.
因此,您可以添加更多
-v
開關以在日誌中獲得更詳細的輸出,特別是這些行:server = /usr/sbin/in.tftpd server_args = -s /tftpboot -vv
記錄?
查看手冊頁,除了詳細程度開關之外,似乎沒有任何其他開關。因此,鑑於此,以及這是一項服務的事實,日誌記錄可能在CentOS 上
xinetd
的預設 syslog 日誌中。/var/log/messages
在其他發行版 (Debian/Ubuntu) 上,此文件通常稱為/var/log/syslog
.您可以
syslog
在其配置文件中查看我的日誌記錄在哪裡,more /etc/syslog.conf
.還有什麼?
您還可以在緊要關頭
lsof
找出特定程序正在使用哪些文件。因此,您也許可以通過此方法找出給定程序正在使用的配置文件。雖然守護程序通常會打開配置,讀取它,然後關閉它,但您也可能會獲得好運。同樣對於按需啟動的服務,就像
xinetd
基於服務的情況一樣,這些服務通常不會執行,直到有人嘗試訪問它們,所以甚至可能沒有程序可以詢問。這是一個
httpd
(即 Apache)的範例,只是為了效果。$ sudo lsof -p $(pgrep -n http) | head -7 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 3832 apache cwd DIR 252,0 4096 2 / httpd 3832 apache rtd DIR 252,0 4096 2 / httpd 3832 apache txt REG 252,0 332264 1355575 /usr/sbin/httpd httpd 3832 apache mem REG 252,0 144776 2031805 /lib64/ld-2.5.so httpd 3832 apache mem REG 252,0 614992 3473627 /lib64/libm-2.5.so httpd 3832 apache mem REG 252,0 129984 2031683 /lib64/libpcre.so.0.0.1