http://vastars.info/linux/ftp-server.html
昨天在实验室内网的一台机器上搭建了一个ftp服务器,方便大家共享文件。这个ftp-server要满足的要求是:
- 有多个用户,使用一个共用目录,每个人都能上传文件,但是只能对属于自己的文件进行修改(删除)。
- 服务器虽然在内网的机器上,但是要求在整个校园内都可以方便的访问。
首先,在这台内网机器上建立一个文件夹作为ftp服务的根目录,如/home/ftp_root,然后执行如下命令
chmod 1777 /home/ftp_root
或者
chmod 777 /home/ftp_root
chmod +t /home/ftp_root
则所有的用户都可以对这个文件夹进行读写。但是由于”sticky”粘滞位(t)的添加保证了该目录中的文件或子目录无论是什么权限只有文件或子目录所有者和root用户能够删除。
然后安装vfftpd,打开配置文件/etc/vsftpd,如下几个地方要修改:
# 允许本地用户登录ftp
local_enable=YES
# 允许写操作
write_enable=YES
#指定ftp服务根目录
local_root=/home/ftp_root
#限定用户在根目录下
chroot_local_user=YES
#允许文件能被其它用户读取(下载)
local_umask=022
最后重启ftp服务
service vsftpd restart
这样第一个目标就实现了,内网里已经可以访问ftp服务。
对于第二个目标,则需要借助网关的端口转发了。设置iptable将网关的21端口(ftp服务的默认端口)转发到内网的ftp服务器上(假设其内网ip是192.168.2.8)。
iptables -F
iptables -F -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -d 192.168.2.8 -p tcp –dport 21 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp –dport 21 -j DNAT –to-dest 192.168.2.8:21