Linux系统中FTP的配置
一、修改配置文件获得永久IP地址:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
                DEVICE=eth0
                ONBOOT=yes
                BOOTPROTO=static
                IPADDR=192.168.10.100
                NETMASK=255.255.255.0
                GATEWAY=192.168.10.1
                   :wq
#/etc/init.d/network restart
二、    要用service iptables stop把系统防火墙关掉。
          把安全级别调低
          #vi /etc/selinux/config
          把其中SELINUX=disabled项设为该值
//注意:在RHEL4中这两、个设置都是默认禁止的,但是在RHEL5中是开启的。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

三、FTP服务器的安装配置:
1、安装vsftpd软件包
#mount /dev/cdrom  /mnt  //注意挂载光盘时也可以这样挂:#mount /media/cdrom

#cd /mnt/RedHat/RPMS
#ll vsftpd*
#rpm -q vsftpd
package vsftpd is not installed
# rpm -ivh vsftpd-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2.0.1-5.i386.rpm
#rpm -q vsftpd
vsftpd-2.0.1-5
//如果是RHEL4安装文件放在第一张光盘中,不要挂错盘了,刚开始挂了第一张盘很郁闷的!!!
2.添加本地用户
//注意:为了保证系统的安全性,添加的本地用户是不允许在本地登陆的

#useradd aaa –s /sbin/nologin   //参数为不允许在本地登陆
#passwd aaa
  123
#useradd bbb –s /sbin/nologin
#passwd bbb
  123
也可以这样添加用户:
#adduser qq –s /sbin/nologin
#adduser mm –s /sbin/nologin
#echo 123|passwd –stdin qq
#echo 123|passwd –stdin mm如图:
 
查看一下:
#tail -3 /etc/passwd
#tail -3 /etc/group
#tail -3 /etc/shadow
3.改变目录的属主属组
#chown aaa.aaa /home/aaa
#chown bbb.bbb /home/bbb
#ll /home
4、设置宿主目录权限
#chmod 770 /home/aaa
#chmod 770 /home/bbb
#ll /home

 

 

5、配置主配置文件vsftpd.conf
先备份一下
#cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
设置vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   设置为“YES”时FTP服务器允许匿名登录,用户名是ftpanonymous
local_enable=YES   设置为“YES”时允许本地用户登录 ,即系统用户(用户分为两大类系统用户和虚拟用户)
write_enable=YES   设置为“YES”时FTP服务器开放对本地用户的写权限
local_umask=022    设置项设置本地用户的文件生成掩码022,即反掩码 ,使用777权限减去022权限后剩余的权限
dirmessage_enable=YES   设置为“YES”时当切换到FTP服务器中的某个目录时,将显示该目录下的.message隐含文件的内容,.message文件名是message_file项的默认值。
xferlog_enable=YES   设置为“YES”时FTP服务器将启用上传和下载日志
connect_from_port_20=YES   设置为“YES”时FTP服务器将启用FTP数据端口的连接请求
xferlog_std_format=YES     设置为“YES”时FTP服务器将使用标准的ftpd xferlog日志格式
pam_service_name=vsftpd   设置PAM认证服务的配置文件名称,它保存在/etc/pam.d目录中
userlist_enable=YES    设置为“YES”时FTP服务器将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器,userlist_file的默认值是/etc/vsftpd.user_list文件。
userlist_deny=YES    userlist_enable=YES结合禁止vsftpd.user_list文件中的用户登录
listen=YES   设置为“YES”时FTP服务器将处于独立启动模式 ,相对于受xinetd管理的启动模式
tcp_wrappers=YES   设置为“YES”时FTP服务器将使用tcp_wrappers作为主机访问控制方式 tcp_wrappers是实现linux系统中基于主机地址的访问控制,它与/etc目录中的hosts.allowhosts.deny两个文件配合实现,hosts.allow允许访问,hosts.deny拒绝访问。要想使用hosts.allowhosts.deny需要在其中添加IP地址,用vi打开。
chroot_local_user=YES  本地用户登录时被禁锢在宿主目录中
max_clients=100    客户端最大连接数不超过100
max_per_ip=5       同一IP地址的最大连接数不超过5
local_max_rate=500000    本地用户最大传输速率为500KB
anon_max_rate=300000   虚拟用户最大传输速率为300KB

 

 

6、查看配置文件vsftpd.ftpusers  (默认)
#vi /etc/vsftpd.ftpusers  
7、查看配置文件vsftpd.user-list   (默认)
#vi /etc/vsftpd.user-list  
8、启动vsftpd服务
vsftpd服务需要设置在运行级别35自动启动
# chkconfig --level 35 vsftpd on
# chkconfig --list  vsftpd  查看
# service vsftpd restart
服务器状态查询
# service vsftpd status
vsftpd (pid 8844) is running....    正常
vsftpd is stopped       停止运行

 

三、设置允许匿名用户ftpanonymous上传文件(这个步骤可做可不做,只是为了使用方便)
1#mkdir /var/ftp/sybg
2#chown root.ftp /var/ftp/sybg  ///var/ftp/sybg文档的属主改为root属组改为ftp
3#chmod 730 /var/ftp/sybg ftp匿名用户只对该目录有写和执行(进入)权限,而不能看到该目录中已上传的文件。
4#vi /etc/vsftpd/vsftpd.conf
 去掉注释#anon_upload_enable=yes
 去掉注释#chown_uploads=yes改变匿名用户上传的文件的属主
 去掉注释#chown_username=whoever,whoever改为一个具体的用户(bbb),即匿名用户上传的文件的属主将会成为bbb
 添加一行 anon_umask=077 默认的644-077=600即只有bbb用户对上传的文件具有读写权限,也就是说只有bbb用户才有权限删除该文件,这样ftp匿名用户上传时就不能上传同名的文件,也就不会把别的匿名用户上传的文件覆盖掉。另一个作用ftp匿名用户将看不这个目录中的已上传的文件。
#grep –v “#” vsftpd/vsftpd.conf命令查看查看配置文件如下图:
 
 
 
四、配置FTP服务器的虚拟用户
1 vsftpd 虚拟用户帐号的设置步骤

A建立虚拟用户口令库文件
B生成vsftpd的认证文件
C建立虚拟用户所需的PAM配置文件
D建立虚拟用户所要访问的目录并设置相应权限
E设置vsftpd.conf配置文件
2 vsftpd 虚拟用户配置

A 建立虚拟用户口令库文件

口令库文件中奇数行设置用户名,偶数行设置口令
#vi logins.txt
zhangsan
san
lisi
si
# cat logins.txt
zhangsan
san
lisi
si
B 生成 vsftpd 的认证文件

使用db_load命令生成认证文件,-f命令选项设置值是虚拟用户的口令库文件logins.txt,命令的参数设置为生成的认证文件名vsftpd_login.dbvsftpd_login.db保存在/etc/vsftpd目录中。
先安装db4-utils-4.2.52-7.1.i386.rpm在第三张光盘中
#mount /dev/cdrom /mnt
#rpm -ivh /mnt/RedHat/RPMS/db4-utils-4.2.52-7.1.i386.rpm
#rpm -q db4
db4-4.2.52-7.1
# db_load -T -t hash -f logins.txt   /etc/vsftpd/vsftpd_login.db
设置认证文件只对用户可读可写 600
# chmod 600 /etc/vsftpd/vsftpd_login.db
#cd /etc/vsftpd
#ll 
C 建立虚拟用户所需的 PAM 配置文件

手工建立vsftpd.vu文件并添加一下内容
#vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
account required  /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
# cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
account required  /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:必须照上面的一字不漏写下来,要不会出错也没有提示
 
D 建立虚拟用户及要访问的目录并设置相应的权限

建立所有FTP虚拟用户帐号使用的系统用户帐号,并设置该帐号宿主目录的权限
# useradd -d /home/ftpsite virtual (帐户名为virtual
# chmod 700 /home/ftpsite  (设置该目录权限)
所有虚拟帐户登陆后都在/home/ftpsite目录中
E 设置 vsftpd.conf 配置文件

在配置文件中添加虚拟用户的配置内容
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
F 重新启动 vsftpd 服务程序
vsftpd.conf文件修改后需要重新启动vsftpd服务程序
# service vsftpd restart

 

创建完虚拟用户后,ftp的配置文件如下图:
 
 
测试一下会发现虚拟用户什么权限都没有:如下图
 
 
 
3 、对虚拟用户设置不同的权限

设置主配置文件
A vsftpd.conf 文件中添加用户配置文件目录设置

user_config_dir=/etc/vsftpd_user_conf
#service vsftpd restart
B 建立用户配置文件目录

使用mkdir命令建立用户配置文件目录
# mkdir /etc/vsftpd_user_conf
C 为虚拟用户建立单独的配置文件

用户配置文件名称与用户名相同
#vi /etc/vsftpd_user_conf/zhangsan
anon_world_readable_only=NO      表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES        表示用户可以上传文件
anon_mkdir_write_enable=YES     表示用户具有建立和删除目录的权利
anon_other_write_enable=YES     表示用户具有文件改名和删除文件的权限
#cat /etc/vsftpd_user_conf/zhangsan
#vi /etc/vsftpd_user_conf/lisi
anon_world_readable_only=NO      表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES        表示用户可以上传文件
#cat /etc/vsftpd_user_conf/lisi
通过以上配置可以为虚拟用户单独配置不同的权限,虚拟用户配置文件中没有的配置项将按vsftpd.conf中的内容设置。
用户zhangsan配置文件如图所示:
 
4 、配置 vsftpd 服务器中的资源限制  (在vsftpd.conf中添加,前面已添加过了)
max_clients=100    设置项用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制
max_per_ip=5       设置项用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制
local_max_rate=500000     设置项用于设置本地用户的最大传输速率,单位为bytes/sec,值为0时表示不限制
anon_max_rate=200000     设置项用于设置匿名用户的最大传输速率,单位为bytes/sec,值为0表示不限制
、测试用户帐号的 FTP 登录

匿名用户
/var/ftp/pub目录中随意添加测试文件
#vi /var/ftp/ceshi
登录
ftp 192.168.10.100 FTP地址
ftp   匿名用户名
随便  密码
ftp> pwd   看当前目录
ftp> cd  pub   切换目录
ftp> ls    查看其内容
上传ftp> put aaa   下载ftp> get aaa   (指的都是在两端当前目录中下载上传,如果要将当前目录的文件上传下载到其他目录或将其他目录中的文件上传下载到当前目录要加路径,如ftp> put /f: aaa)
本地用户
登录
用命令或IE都行,输入用户名和密码
虚拟用户
测试前先在/home/ftpsite目录中创建测试文件并该其属主和属组为virtual
#touch /home/ftpsite/aaa.txt
#chown virtual.virtual  /home/ftpsite/aaa.txt
使用ftp命令登录FTP服务器
使用已配置的虚拟用户名和口令登录FTP服务器,如能够正常登录说明虚拟帐号配置成功
为了系统的安全,缺省配置的虚拟用户只具有较低的用户权限
可以通过为每个虚拟用户建立独立的配置文件增加用户的权限