2011年12月26日

Fedora15でTFTPサーバーを動かしてファイルをアップロードする

Fedora15にTFTPサーバーを立ち上げて、CISCO 1812JのIOSのバックアップを作成しようとしたら、結構手間取ったので、そのメモ

ます、TFTPサーバーをインストールします。
# yum install tftp-server


tftpはxinetdを介して起動しますが、インストールしたままだと、無効になっています。
そのため、設定を変更してtftpサーバーを有効にします。

/etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
cps = 100 2
flags = IPv4
}

disable の項目を yes -> no に変更し、xinted を再起動します。

# service xinetd restart
Restarting xinetd (via systemctl): [ OK ]


次にTFTPサーバーの動作確認のためにTFTPクライアントを、TFTPサーバーと同じマシンにインストールします。
# yum install tftp


インストールが完了するとtftpコマンドが使用できるはずです。
# which tftp
/usr/bin/tftp


次にアップロードのテストをするため、TFTPサーバーの適当なディレクトリにテスト用ファイルを作成します。
今回は「 tt.txt 」というファイル名で、適当に何か文字を書いたテキストファイルを作成しました。これをtftpサーバー( 192.168.1.x )にアップしてみます。

# tftp -v 192.168.1.x -c put tt.txt
Connected to 192.168.1.x (192.168.1.x), port 69
putting tt.txt to 192.168.1.x:tt.txt [netascii]
Error code 1: File not found

注 この例ではTFTPクライアントと同じマシンで動作しているTFTPサーバーにファイルのアップを試みています。

すると、「File not found」というエラーが発生します。このエラーは、アップロードしようとしたファイルが存在しないか、または新規ファイルのため作成に失敗した場合に発生します。LinuxではデフォルトでTFTPサーバーの新規ファイル作成が禁止されているそうです。


この解決には2つ方法があります。

1つ目. TFTPサーバーのディレクトリにアップロードするファイルと同じ名前のファイルを先に作成します。
# touch /var/lib/tftpboot/tt.txt
# chown o+w /var/lib/tftpboot/tt.txt


注. 権限の変更がないと失敗して以下のようになります。
# tftp -v 192.168.1.x -c put tt.txt
Connected to 192.168.1.x (192.168.1.x), port 69
putting tt.txt to 192.168.1.x:tt.txt [netascii]
Error code 0: Permission denied


2つ目. TFTPサーバーの起動オプションを変更して、新規ファイルのアップロードができるようにします。

そのため、/etc/xinted.d/tftp を変更します。
server_args = -s /var/lib/tftpboot

に オプションの -c を追加して
server_args = -c -s /var/lib/tftpboot

に変更します。そしてxinetdを再起動します。

# service xinted restart

注意. # service xinted reload では設定が反映されないので、restartします。


また、TFTPサーバーは nobody で動作するので、ディレクトリの所有者を変更します。
# chown nobody:nobody /var/lib/tftpboot


TFTPサーバーと同じマシンからファイルのアップして、以下のように成功すれば設定はOKです。
# tftp -v 192.168.1.x -c put tt.txt
Connected to 192.168.1.x (192.168.1.x), port 69
putting tt.txt to 192.168.1.x:tt.txt [netascii]
Sent 20 bytes in 0.0 seconds [35924 bit/s]



この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/52437941

この記事へのトラックバック