ubuntu 配置NFS tftp

来源:互联网 发布:美团外卖消费数据分析 编辑:程序博客网 时间:2024/05/16 18:59

NFS


sudo apt-get install nfs-kernel-server

sudo vim /etc/exports文件,在末尾加入:

/home/nfs/ *(rw,sync,no_root_squash)

nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:

/home/nfs:要共享的目录

* :允许所有的网段访问

rw :读写权限

sync:资料同步写入内在和硬盘

no_root_squash:nfs客户端共享目录使用者权限

nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定

命令执行情况如下:

sudo /etc/init.d/portmap restart

测试:

mount -t nfs -o nolock 192.168.1.x:/home/nfs /xxxdir


TFTP


sudo apt-get install tftp tftpd xinetd 

sudo vim /etc/xinetd.d/tftp


service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/nfs/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
~       

Error code 2: Access violation-tftp-put错误

配置eth0的 IP地址, 同时激活该设备。

#ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up


1. Install tftpd and related packages.

$ sudo apt-get install xinetd tftpd tftp

2. Create /etc/xinetd.d/tftp and put this entry:

service tftp
{
disable =no
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /tftpboot
per_source = 11
cps = 1002
flags = IPv4
}

3. Make /tftpboot directory

$ sudo mkdir /tftpboot
$ sudo chmod 777 /tftpboot

把/etc/init.d/atfpd
文件中的if["$USE_INETD"="true"]中的true改为false

4. Start tftpd through xinetd

$ sudo /etc/init.d/xinetd restart

5. Testing. Tranfering file hda.txt from 192.168.1.100 (Client using tftp) to 192.168.1.100 (Server 192.168.1.100). Get an example file to transfer (eg. hda.txt)

$ touch /tftpboot/hda.txt

$ chmod 777 /tftpboot/hda.txt

$ ls -l /tftpboot/
total 0

-rwxrwxrwx 1 davids davids 0 2006-03-27 23:04 hda.txt


$ tftp 192.168.1.100

tftp> put hda.txt
Sent 722 bytes in 0.0 seconds
tftp> quit
$ ls -l /tftpboot/
total 4
-rwxrwxrwx 1 davids davids 707 2006-03-27 23:07 hda.txt

http://hi.baidu.com/wwwkljoel/blog/item/af42f612ade9905bf919b856.html


[注意事项]

如果从tftp服务器下载失败,

要确保服务器的根目录有可执行的权限。

$ chmod -R 777 tftp


使用中发现能正常下载文件,

$ tftp 192.168.1.222
tftp> get zImage
Received 1692890 bytes in 0.2 seconds

可是上传文件不成功,

提示错误:

tftp> put dic.txt
Error code 2: Access violation

求助于google, 得下面一段说明,问题解决。

The tftp man page says:

Because there is no user-login or validation within the TFTP
protocol, the remote site will probably have some sort of
file-access restrictions in place. The exact methods are
specific to each site and therefore dif ficult to document here.

So apparently the site you're trying to get the file from has some
kind of access restrictions in place. Take a look at the tftpd man
page on the remote host. The linux tftpd manual says, in part, "Due to
the lack of authentication information, tftpd will allow only publicly
readable files to be accessed. Files may be written only if they
already exist and are publicly writable."

上面主要意思就是: tftp服务器缺少必要的身份验证,

所以默认只允许下载文件,要上传文件,必须是服务器中已存在同名的文件,

且该文件权限允许被覆盖。


所以首先在服务中创建一个与要上传的文件同名的文件,并更改权限。

$ touch dic.txt

$ chmod 777 dic.txt

重新上传,成功。
tftp> put dic.txt
Sent 13770 bytes in 0.0 seconds



0 0