Contribute  :  Advanced Search  :  Directory  :  Forum  :  FAQ's  :  My Downloads  :  Links  :  Polls  
AFP548 Changing the world one server at a time.
Welcome to AFP548
Thursday, July 29 2010 @ 09:32 am MDT
   

Setting Up the TFTP Server in Tiger

ArticlesAs the networking infrastructure guy, I occasionally have the need to update hardware or backup settings using the TFTP protocol. I've noticed that there are plenty of good instructions for how to make this work with Panther, but almost none for Tiger.

Tweaking TFTP in Panther required editing a file in /etc/xinetd.d/ that no longer exists in Tiger since xinetd has been deprecated in favor of launchd. No worries, however, because you can make TFTP work in Tiger, it's just that the steps to get there are a bit different. It requires use of the Terminal, but you're good enough, you're smart enough, and... we'll leave it at that.

Tiger starts the TFTP service based on settings specified in a file named /System/Library/LaunchDaemons/tftp.plist. That file contains the command to start the daemon and the optional switches associated with it. By default, the only switch in the plist file is "-i /private/tftpboot", which is separated out into two individual program arguments, but is logically a single option. According to the man page for tftpd, the -i option means "Enable insecure mode, no realpath". In all honesty, I'm not sure what that means precisely, but it sounds like no filesystem path is assigned to where TFTP can read and write files. We can fix that.

The first thing to do is make a backup copy of the original tftp.plist file because if bad things happen, we want the ability to start over clean. In the Terminal, copy it with this line:
sudo cp /System/Library/LaunchDaemons/tftp.plist ~/Desktop
Let the editing begin!
sudo nano /System/Library/LaunchDaemons/tftp.plist 
Find this line:
<string>-i</string>
and replace
-i
with
-s
Find this line:
<string>/private/tftpboot</string>
and replace it with
<string>/path/where/you/want/files/saved</string>
(/Users/yourname/Public might be a good choice.) Press control-x to exit and save the plist file.

Start up the TFTP server:
sudo service tftp start
If you're using Mac OS X's built-in firewall, be sure to open UDP port 69.

TFTP is a purposely dumb protocol. It requires no authentication, so it can't create files and can only write to files that are publicly writable. So before any data can be saved via TFTP to a file, that file has to be created and made publicly writable at the local machine by the user.

To create a file:
touch /path/to/file.name
And then to make it publicly writable:
chmod 777 /path/to/file.name
After a hard day of TFTPing, the service can be stopped with:
sudo service tftp stop

Story Options

Advertising

Setting Up the TFTP Server in Tiger | 11 comments | Create New Account
The following comments are owned by whomever posted them. This site is not responsible for what they say.
Setting Up the TFTP Server in Tiger
Authored by: Anonymous on Sunday, September 18 2005 @ 08:40 am MDT
Does changing the path affect NetBoot and NetInstall (or NetRestore)?
Setting Up the TFTP Server in Tiger
Authored by: woodgie on Monday, September 19 2005 @ 08:49 am MDT
"TFTP is a purposely dumb protocol. It requires no authentication, so it can't create files and can only write to files that are publicly writable. So before any data can be saved via TFTP to a file, that file has to be created and made publicly writable at the local machine by the user."

So, does that mean that I'd have to $touch file.name on the tftp server before saving a config from, for instance a Cisco switch/router or would saving directly from the Switch (i.e #copy run tftp) be possible?
Setting Up the TFTP Server in Tiger
Authored by: macshome on Monday, September 19 2005 @ 01:26 pm MDT
Rather than using the service command to fire up tftpd I would use launchctl to load the job into luanchd.

sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist

---
Breaking my server to save yours.

Josh Wisenbaker
www.afp548.com