1、vsftpd服务器
安装:yum -y install vsftpd
启动:/usr/sbin/vsftpd
查看进程和监听端口:ps -eaf | grep vsftpd //查看进程
netstat -an | grep :21 //查看端口
匿名用户配置:vi /etc/vsftpd.conf
测试:windows下使用WinSCP连接到Linux服务器。只需要在Linux系统中设置对应文件或者目录的权限,即可进行文件的上传、下载、修改、删除、目录的创建等所有的操作。
2、Linux登录到Windows下Xlight FTP服务器
Xlight FTP服务器配置:
新建虚拟服务器:选择ip地址和端口号
启动服务器
在虚拟服务器操作里面选择用户列表增加用户:设置用户名、密码、主目录。然后对其进行编辑,在用户目录设置中编辑权限
Linux下:ftp 192.168.100.117
输入用户名和密码
ls查看服务器根目录下面的文件
使用get 1.txt下载1.txt到Linux执行该命令的当前路径
使用put 1.c上传1.c到服务器根目录(服务器端需要设置相对应的上传权限)
3、vsftp服务器匿名用户配置
修改/etc/vsftpd.conf和/etc/vsftpd/vsftpd.conf:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
chown_uploads=YES
anon_root=/var/ftp/pub
登录过程可能会出现”500 OOPS: vsftpd: refusing to run with writable anonymous root“,解决方法是,chown 755 /var/ftp。
测试:ftp 127.0.0.1(不能修改和覆盖已经存在的目录或者文件)
下载文件:初始时/home/cl/test1/test目录为空,通过lcd切换到该目录执行get ftp_get_test语句,可以看到成功下载文件ftp_get_test,并且保存到/home/cl/test1/test目录下。见下图:
上传文件:初始时/var/ftp/upload目录为空,通过lcd切换到/home/cl/test1目录,cd切换到upload目录,执行put 1.c,可以看到成功上传1.c文件到/var/ftp/upload目录中。见下图:
4、本地用户配置
修改/etc/vsftpd.conf:local_enable=YES
修改本地用户文件夹权限:chmod 755 /home/cl(发现只有用户目录及其子目录才能够提供文件上传或者下载,更深层级别的目录不支持文件上传和下载)
使用本地账号登陆出现如下问题:“500 OOPS: cannot change directory:/home/*******”,解决方法是:/usr/sbin/setsebool -P ftp_home_dir 1,然后重启vsftpd(service vsftpd restart)
测试:首先登陆到本地服务器,然后可以使用put指令上传、get指令下载文件。
下载文件:初始时,/var/ftp目录下只有一个名叫upload的目录,成功下载testjoin.sh文件之后,发现存放在/var/ftp目录下。见下图:
上传文件:初始时,/home/cl目录下是不存在ftp_put_test文件的,文件上传之后,发现该目录下多了该文件。如下图:
5、虚拟主机配置
如果主机有两个网卡,则在两块网卡上分别运行vsftpd服务。
如果主机只有一块网卡,则可以在原有网卡基础上配置子接口,得到逻辑网卡,不同的逻辑网卡设置不同的ip地址。
假设主机有一块网卡,ip地址为192.168.100.119,并且主机上已经配置运行了vsftpd服务。
现在配置以下参数,以实现虚拟主机:
1 增加逻辑网卡,我现在的IP地址为192.168.1.100,增加逻辑网卡IP为192.168.1.101
ifconfig eth0:1 192.168.1.221 netmask 255.255.255.0 up
2 停止vsftpd服务
killall vsftpd
3 修改vsftpd.conf配置,增加以下一栏
listen_address=192.168.100.119
4 重新启动vsftpd服务 & 表示后台运行
/usr/sbin/vsftpd /etc/vsftpd.conf &
5 为第二个vsftpd服务器建立匿名用户对应的本地帐号以及个人目录,参数-d指定个人目录,需自己建立,-s指定登录shell,/sbin/nologin是一种不登录shell
useradd -d /var/ftp/myftp -s /sbin/nologin myftp
6 创建/var/ftp/myftp目录,改变/var/ftp/myftp的所有者(默认就是root),目的是使myftp用户对其没有写权限
mkdir /var/ftp/myftp
chown root /var/ftp/myftp
7 复制vsftpd.conf,命名为myvsftpd.conf放在/etc目录下
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/my_vsftpd.conf
8 修改myvsftp.conf
ftp_username=myftp
listen_address=192.168.100.221
9 启动第二个vsftpd
/usr/sbin/vsftpd /etc/vsftpd/my_vsftpd.conf
测试虚拟主机:
登陆192.168.100.119,ls查看根目录下面有两个文件和一个目录,如下图:
登陆192.168.100.221,ls查看根目录下面没有任何文件,如下图:
6、虚拟用户配置
示例:设置三个虚拟用户usr1、usr2和usr3,其中usr1主目录是dir1,只有读权限;usr2主目录为dir2,只有读权限;usr3主目录为dir2,具有读写权限。
1、创建保存账号密码的文件
vi /etc/vsftpd/ftpusr.txt
usr1
123456
usr2
123456
usr3
123456
2、生成虚拟账户数据库
安装db4、db4-utils、db4-devel
db_load -T -t hash -f /etc/vsftpd/ftpusr.txt /etc/vsftpd/ftpusr.db
chmod 600 /etc/vsftpd/ftpusr.db
3、生成与PAM对应的文件
vi /etc/pam.d/vsftp_login
auth required /lib/security/pam_useradd.so db=/etc/vsftpd/ftpusr
account required /lib/security/pam_useradd.so db=/etc/vsftpd/ftpusr
4、建立所有虚拟账户使用的操作系统账号
useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
chmod 700 /home/ftpsite
5、在/etc/vsftpd/vsftpd.conf中添加修改如下
guest_enable=YES
guest_username=ftp_virt
修改pam_service_name=vsftpd_login
6、设置每个虚拟账户的权限
在/etc/vsftpd/vsftpd.conf中添加user_config_dir=/etc/vsftpd
创建两个目录,并且让ftp_virt对其有完全的权限:
mkdir /var/frp/dir1
mkdir /var/ftp/dir2
chown ftp_virt /var/ftp/dir1
chown ftp_virt /var/ftp/dir2
在/etc/vsftpd目录中建立三个文件,文件名称分别为三个账户的名称:
vi /etc/vsftpd/usr1
local_root=/var/ftp/dir1
vi /etc/vsftpd/usr2
local_root=/var/ftp/dir2
vi /etc/vsftpd/usr3
local_root=/var/ftp/dir2
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=YES
write_enable=YES
测试:发现usr1和usr2用户只有读权限,usr3拥有读写权限,并且usr2和usr3工作目录是同一个目录。
7、总结
1、服务器的安装
2、配置文件的修改
3、ftp基本指令操作
4、先通过lcd进入客户端目录,cd进入服务器目录,然后在进行上传、下载操作。
5、修改/etc/vsftpd/vsftpd.conf配置文件之后,一定要执行service vsftpd restart重启vsftpd服务。
6、上述实验过程中出现了很多问题,不过百度、google还是很给力的,多学习总结吧。