前提
ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通
查看ssh和防火墙的状态
service sshd status
service iptables status
开启ssh服务
service sshd start
关闭防火墙
chkconfig iptables off
测试主机和虚拟机的连通性
ping 192.168.2.129
安装并开启tftp和vsftpd
[root@localhost ~]# yum install tftp
[root@localhost ~]# yum install vsftpd
[root@localhost ~]# chkconfig vsftpd on
[root@localhost ~]# chkconfig tftp on
启动vsftpd 服务
service vsftpd start
查看vsftpd 的启动状态
service vsftpd status
打开21和20端口
[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost ~]# /etc/rc.d/init.d/iptables save
添加ftp用户
[root@localhost vsftpd]# useradd ftpuser
[root@localhost vsftpd]# passwd ftpuser
修改sftpd .conf配置文件
[root@localhost vsftpd]#vi /etc/vsftpd/vsftpd.conf
把第一行的 anonymous_enable=YES ,改为NO
注:
vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置。 vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。如下
[root@Mclass vsftpd]# cat ftpusers
# Users that are not allowed to login via ftp
root
…
[root@Mclass vsftpd]#
重启vstfpd 服务
[root@localhost upload]# service vsftpd restart
windows cmd测试链接
C:UsersAdministrator>ftp 192.168.1.112
连接到 192.168.1.112。
220 (vsFTPd 2.2.2)
用户(192.168.1.112:(none)): ftpuser
331 Please specify the password.
密码:
500 OOPS: cannot change directory:/home/ftpuser
登录失败。
ftp> bye
可以看到报了个错误:500 OOPS: cannot change directory:/home/ftpuser。原因是CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。查看如下:
[root@localhost vsftpd]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
[root@localhost vsftpd]#
只要把allow_ftpd_full_access --> off,ftp_home_dir --> off改为on就可以了。 #我这里直接用setenforce 0
[root@localhost vsftpd]# setsebool ftp_home_dir 1
[root@localhost vsftpd]# setsebool allow_ftpd_full_access 1
开启SELinux
如执行getsebool -a | grep ftp出现getsebool: SELinux is disabled的错误,需重新开启selinux
vi /etc/selinux/config
更改为:SELINUX=enabled
必须重启linux,不重启是没办法立刻开启selinux的
重启完以后,就可以使用getsebool -a | grep ftp命令了
再次查看
[root@localhost vsftpd]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
再次测试连接
C:UsersAdministrator>ftp 192.168.1.112
连接到 192.168.1.112。
220 (vsFTPd 2.2.2)
用户(192.168.1.112:(none)): ftpuser
331 Please specify the password.
密码:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> bye
221 Goodbye.
Ok,配置成功,可以用flashxftp来进行上传文件了。
Flashxftp上传文件
首先在/home的目录中创建一个目录,然后设置权限为777
[root@localhost home]# mkdir upload
[root@localhost upload]# chmod -R 777 /home/upload 然后修改vsftp的配置文件vsftpd.conf文件
[root@localhost upload]# vi /etc/vsftpd/vsftpd.conf 在最后添加上 local_root=/home/upload 保存,然后重启vsftpd服务器程序。
配置完成,就可以通过ftp上传文件到/home/upload目录下了。
设置权限
限制用户只能访问/home/test,不能访问其他路径
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd/chroot_list
编辑上面的内容
第一行:chroot_list_enable=YES //限制访问自身目录
第三行:编辑vsftpd.chroot_list。根据第三行说指定的目录,找到chroot_list文件。(因主机不同,文件名也许略有不同)
编辑chroot_list,将不受限制的用户添加进去,每个用户名一行
5、重启服务器
改完配置文件,不要忘记重启vsFTPd服务器
运行命令:/etc/init.d/vsftpd restart
6、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
运行命令:“usermod -s /usr/bin/passwd test” //用户telnet后将直接进入改密界面