vsftp服务上传、下载、创建、删除、重命名大纲:一、匿名用户二、系统用户三、虚拟用户------------------------ftp> ?Commands may be abbreviated. Commands are:! debug mdir sendport site$ dir mget put sizeaccount disconnect mkdir pwd statusappend exit mls quit structascii form mode quote systembell get modtime recv suniquebinary glob mput reget tenexbye hash newer rstatus tickcase help nmap rhelp tracecd idle nlist rename typecdup p_w_picpath ntrans reset userchmod lcd open restart umaskclose ls prompt rmdir verbosecr macdef passive runique ?delete mdelete proxy send常用的命令!: 退出quit: 退出exit: 退出cd: 在登陆vsftpd后,切换目录lcd: 切换系统上目录delete:删除文件,文件rmdir: 删除目录,目录put: 上传;一次上传一个文件mput: 上传;一次上传多个文件get: 下载;一次下载一个文件mget: 下载:一次下载多个文件rename:重命名mkdir: 创建目录 dir: 查看目录列表ls: 查看目录列表#参数禁用匿名用户和系统用户访问anonymous_enable=NOlocal_enable=NO#访问结果如下[root@localhost vsftpd]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).500 OOPS: vsftpd: both local and anonymous access disabled!ftp> =================================================================================================================================================匿===============名====================用======================户================================================================================================================================================================================================创建目录权限==========================================================首先来看匿名用户1、在匿名用户的根目录下创建一个子目录[root@vsftpd ~]# mkdir /var/ftp/upload[root@vsftpd ~]# ll -d /var/ftp/upload/drwxr-xr-x 2 root root 4096 7月 19 19:11 /var/ftp/upload/2、匿名用户在upload目录中第一次创建test目录[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> dir227 Entering Passive Mode (127,0,0,1,134,99).150 Here comes the directory listing.drwxr-xr-x 2 0 0 4096 Mar 01 2013 pubdrwxr-xr-x 2 0 0 4096 Jul 19 11:11 upload226 Directory send OK.ftp> cd upload250 Directory successfully changed.ftp> mkdir test #权限被拒绝,错误代码550550 Permission denied.3、修改vsftpd的配置文件,增加创建目录的权限[root@vsftpd vsftpd]# vim vsftpd.conf anon_mkdir_write_enable=YES4、修改配置文件后,每次都要重新载入配置文件[root@vsftpd vsftpd]# service vsftpd restart关闭 vsftpd: [确定]为 vsftpd 启动 vsftpd: [确定]5、匿名用户第二次登录并在upload目录中创建test目录[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> mkdir test #提示创建目录操作失败,错误代码依旧是550550 Create directory operation failed.注释:同样是错误代码550,但是代表的意义是不一样的。第一个500:提示权限被拒绝,应该属于配置文件层的第二个500:提示创建目录操作失败,应该属于文件层的结论:应该属于upload目录的权限问题,查看upload目录的权限,宿主宿组都是root并且其它用户没有写入的权限[root@vsftpd ~]# ll -d /var/ftp/upload/drwxr-xr-x 2 root root 4096 7月 19 19:11 /var/ftp/upload/赋予其它用户对upload目录有写入的权限[root@vsftpd ~]# chmod o+w /var/ftp/upload/[root@vsftpd ~]# ll -d /var/ftp/upload/drwxr-xrwx 2 root root 4096 7月 19 19:11 /var/ftp/upload/6、匿名用户第三次登陆并在upload目录中创建test目录ftp> mkdir test257 "/upload/test" createdftp> pwd257 "/upload"ftp> dir227 Entering Passive Mode (127,0,0,1,171,81).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 11:23 test226 Directory send OK.总结:针对vsftpd服务来说;权限=vsftpd配置文件的权限+根目录的是否有写入权限-------------小小的发现----------------在登陆状态下,级联创建目录后,虽然目录也能创建成功,但是打开却失败,如下[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> dir227 Entering Passive Mode (127,0,0,1,178,230).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 16:49 Ins.log226 Directory send OK.ftp> mkdir ftproot257 "/upload/ftproot" createdftp> dir227 Entering Passive Mode (127,0,0,1,191,8).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 16:49 Ins.logdrwx------ 2 14 50 4096 Jul 19 17:00 ftproot226 Directory send OK.ftp> cd ftproot250 Directory successfully changed.ftp> pwd257 "/upload/ftproot"ftp> mkdir test257 "/upload/ftproot/test" createdftp> dir 227 Entering Passive Mode (127,0,0,1,233,207).150 Here comes the directory listing.226 Transfer done (but failed to open directory). #传输成功,但是打开目录失败解决办法:首先修改配置文件,然后重启vsftpd服务,最后再次查看修改配置文件,如下[root@vsftpd ~# vim /etc/vsftpd/vsftpd.conf anon_world_readable_only=NO# service vsftpd restart#ftp> dir ftproot #查看成功227 Entering Passive Mode (127,0,0,1,102,170).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 17:00 test226 Directory send OK.================================================上传权限==========================================================1、上传本地文件;测试[root@vsftpd ~]# ll总用量 36-rw-------. 1 root root 981 6月 30 21:13 anaconda-ks.cfg-rw-r--r--. 1 root root 16558 6月 30 21:13 install.log-rw-r--r--. 1 root root 3482 6月 30 21:10 install.log.syslogdrwxr-xr-x 2 root root 4096 7月 19 18:53 vsftpd[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> put install.log #上传本地install.log文件,权限被拒绝local: install.log remote: install.log227 Entering Passive Mode (127,0,0,1,95,49).550 Permission denied.权限被拒绝,很多都是因为配置文件的问题2、修改配置文件并重启vsftpd服务[root@vsftpd ~]# vi /etc/vsftpd/vsftpd.conf anon_upload_enable=YES[root@vsftpd ~]# service vsftpd restart关闭 vsftpd: [确定]为 vsftpd 启动 vsftpd: [确定]3、再次登录,上传测试文件[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> put install.loglocal: install.log remote: install.log227 Entering Passive Mode (127,0,0,1,26,235).150 Ok to send data.226 Transfer complete.16558 bytes sent in 0.0755 secs (219.29 Kbytes/sec)ftp> dir227 Entering Passive Mode (127,0,0,1,169,5).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 11:33 install.logdrwx------ 2 14 50 4096 Jul 19 11:23 test================================================删除|重命名权限==========================================================[root@vsftpd vsftpd]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> dir227 Entering Passive Mode (127,0,0,1,221,162).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 11:33 install.logdrwx------ 2 14 50 4096 Jul 19 11:23 test226 Directory send OK.ftp> rename install.log Ins.log #将文件install.log重命名为Ins.log 成功350 Ready for RNTO.250 Rename successful.ftp> dir227 Entering Passive Mode (127,0,0,1,203,30).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 11:33 Ins.logdrwx------ 2 14 50 4096 Jul 19 11:23 test226 Directory send OK.ftp> rename test FileTest #将目录test重命名为FileTest 成功350 Ready for RNTO.250 Rename successful.ftp> dir227 Entering Passive Mode (127,0,0,1,237,149).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 11:23 FileTest-rw------- 1 14 50 16558 Jul 19 11:33 Ins.log226 Directory send OK.ftp> delete Ins.log #删除文件Ins.log 使用delete 成功250 Delete operation successful.ftp> dir227 Entering Passive Mode (127,0,0,1,41,156).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 11:23 FileTestftp> delete FileTest #delete无法针对目录删除,只能针对文件550 Delete operation failed.ftp> rmdir FileTest #rmdir是针对目录删除的 250 Remove directory operation successful.ftp> dir227 Entering Passive Mode (127,0,0,1,197,212).150 Here comes the directory listing.-rw------- 1 14 50 16558 Jul 19 16:49 Ins.log226 Directory send OK.ftp> ================================================下载权限==========================================================1、登录并下载文件[root@vsftpd mnt]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> dir227 Entering Passive Mode (127,0,0,1,103,89).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 11:23 FileTest-rw------- 1 14 50 805 Jul 19 11:48 fstabftp> get FileTest #文件打开失败,还是权限问题local: FileTest remote: FileTest227 Entering Passive Mode (127,0,0,1,61,141).550 Failed to open file.2、修改配置文件,添加下载权限并重启服务[root@vsftpd mnt]# vim /etc/vsftpd/vsftpd.conf anon_world_readable_only=NO[root@vsftpd mnt]# service vsftpd restart关闭 vsftpd: [确定]为 vsftpd 启动 vsftpd: [确定]3、再次登录,下载 成功[root@vsftpd mnt]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload250 Directory successfully changed.ftp> dir227 Entering Passive Mode (127,0,0,1,139,108).150 Here comes the directory listing.drwx------ 2 14 50 4096 Jul 19 11:23 FileTest-rw------- 1 14 50 805 Jul 19 11:48 fstab226 Directory send OK.ftp> mget FileTest fstabmget fstab? yes227 Entering Passive Mode (127,0,0,1,157,240).150 Opening BINARY mode data connection for fstab (805 bytes).226 Transfer complete.805 bytes received in 2.8e-05 secs (28750.00 Kbytes/sec)ftp> ![root@vsftpd mnt]# ll #下载成功总用量 4-rw-r--r-- 1 root root 805 7月 19 19:56 fstab==========================================vsftpd.conf配置文件概述=======================================================anonymous_enable=YES #允许匿名用户访问(yes,为允许,no为不允许)local_enable=NO #是否禁用本地用户(设置为no是表示禁用,yes表示不禁用)write_enable=YES #允许开放写的权限anon_umask=022 #设置匿名用户上传建立文件时的权限掩码anon_upload_enable=YES #允许匿名上传文件anon_mkdir_write_enable=YES #允许匿名用户创建目录dirmessage_enable=YES #用户切换进入目录时显示.message(如果存在)文件的内容xferlog_enable=YES #开启xferlog日志,默认记录到/var/log/xferlog)connect_from_port_20=YES #连接控制端口为20xferlog_std_format=YES #启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式listen=YES #是否以独立运行的方式监听服务pam_service_name=vsftpd #设root置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)userlist_enable=NO #未启用本地用户时,可以将用户列表功能禁用tcp_wrappers=YES #是否开启tcp_wrappers主机访问控制chroot_local_user=YES #是否将FTP本地 用户禁锢在宿主目录中no_anon_password=YES #允许匿名访问不需要密码(加也可以,不加也可以)可新添加的你们用户的设置值anon_world_readable_only=YES #仅允许匿名用户具有下载可读文件的权限)anon_other_write_enable=YES #是否允许匿名用户有其它写入权限,如对文件改名,覆盖以及删除(此选项慎用)anon_world_readable_only=NOanon_upload_enable=YESdownload_enable=NOanon_mkdir_write_enable=YESanon_other_write_enable=YESlocel_root=/home/ftpsite/mike=================================================================================================================================================本===============地====================用======================户================================================================================================================================================本地用户需要结合ftpusers和user_list这两个文件ftpusers:该文件中包含的用户帐户将被禁止登入vsftpd服务器,不管用户是不是在user_list文件出现user_list:该文件中包含的用户帐户可能被禁止登入vsftpd服务器,也可能被允许登入,具体要看userlist_enable(是否启用user_list用户列表文件)的配置(配置成YES,则启用,NO则不启用),当userlist_enable=YES,之后看userlist_deny的配置(为YES则仅禁止用户列表文件的用户账号登入,为NO则仅用户列表文件的用户账号登入)[root@vsftpd vsftpd]# ll总用量 20-rw------- 1 root root 125 3月 1 2013 ftpusers -rw------- 1 root root 361 3月 1 2013 user_list-rw------- 1 root root 4990 7月 20 01:06 vsftpd.conf-rwxr--r-- 1 root root 338 3月 1 2013 vsftpd_conf_migrate.sh[root@vsftpd ~]# useradd scott[root@vsftpd ~]# echo "123" |passwd --stdin "scott"更改用户 scott 的密码 。passwd: 所有的身份验证令牌已经成功更新。================================================创建目录权限==========================================================1、创建系统账户[root@vsftpd ~]# useradd scott[root@vsftpd ~]# echo "123" |passwd --stdin "scott"更改用户 scott 的密码 。passwd: 所有的身份验证令牌已经成功更新。2、系统账户登录测试[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): scott331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/home/scott"ftp> cd /mnt/250 Directory successfully changed.ftp> pwd257 "/mnt"ftp> cd /usr/local/250 Directory successfully changed.ftp> dir227 Entering Passive Mode (127,0,0,1,217,163).150 Here comes the directory listing.drwxr-xr-x 2 0 0 4096 Sep 23 2011 bindrwxr-xr-x 2 0 0 4096 Sep 23 2011 etcdrwxr-xr-x 2 0 0 4096 Sep 23 2011 gamesdrwxr-xr-x 2 0 0 4096 Sep 23 2011 includedrwxr-xr-x 2 0 0 4096 Sep 23 2011 libdrwxr-xr-x 2 0 0 4096 Sep 23 2011 lib64drwxr-xr-x 2 0 0 4096 Sep 23 2011 libexecdrwxr-xr-x 2 0 0 4096 Sep 23 2011 sbindrwxr-xr-x 5 0 0 4096 Jun 30 13:06 sharedrwxr-xr-x 2 0 0 4096 Sep 23 2011 src226 Directory send OK.注释:想必大家也看到了,系统账户scott登录后,可以任意切换到系统的任意目录,显然这样是十分不安全的,应该做到系统用户登录后锁定到自已的家目录中,禁止任意切换目录路径3、修改配置文件[root@vsftpd ~]# vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES4、系统账户再次登录,测试切换目录路径[root@vsftpd ~]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): scott331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/"ftp> cd /mnt/550 Failed to change directory. #失败的切换目录ftp> pwd257 "/"ftp> dir227 Entering Passive Mode (127,0,0,1,152,129).150 Here comes the directory listing.226 Directory send OK.==========================================vsftpd.conf配置文件概述=======================================================anonymous_enable=NO #允许匿名用户访问(yes,为允许,no为不允许)local_enable=YES #是否禁用本地用户 (设置为no是表示禁用,yes表示不禁用)write_enable=YES #允许开放写的权限local_umask=022 #设置用户上传建立文件时的权限掩码dirmessage_enable=YES #用户切换进入目录时显示.message(如果存在)文件的内容xferlog_enable=YES #(开启xferlog日志,默认记录到/var/log/xferlog)connect_from_port_20=YES #连接控制端口为20xferlog_std_format=YES #启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式ascii_upload_enable=YES #允许用户使用Ascii码格式上传文件ascii_download_enable=YES #允许用户使用Ascii码格式下载文件listen=YES #是否以独立运行的方式监听服务pam_service_name=vsftpd #设root置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)userlist_enable=NO #是否启用user_list用户列表文件tcp_wrappers=YES #是否开启tcp_wrappers主机访问控制chroot_local_user=YES #是否将FTP本地 用户禁锢在宿主目录中max_clients=20 #限制并发客户连接数最多为20个max_per_ip=2 #限制来自同一个IP的客户连接数为最多2个local_max_rate=102400 #本地下载、上传限速为100KB/spasv_enable=YES #允许被动模式连接pasv_min_port=24500 #设置用于被动连接的服务器最小端口号pasv_max_port=24600 #设置用于被动连接的服务器最大端口号connect_from_port_20=YES #允许服务器主动模式(从20端口建立数据连接)download_enable=YES #是否允许下载文件(建立仅限于浏览和上传的设置为NO)=================================================================================================================================================虚===============拟====================用======================户================================================================================================================================================1、安装vsftpd和db4-utils[root@vsftpd ~]# yum -y install vsftpd db4-utils注释:vsftpd是ftp服务的主程序包;db4-utils的客户端命令db_load可以用来生成用户的数据库文件2、建立文本格式的用户名和密码列表文件注释:奇数行为用户,偶数行为密码[root@vsftpd ~]# cd /etc/vsftpd/[root@vsftpd vsftpd]# cat >> vusers.list << EOF> tom> 123> jerry> 123> Allentuns> 123> EOF3、db_load工具将列表文件转化为DB数据库文件[root@vsftpd vsftpd]# db_load -T -t hash -f vusers.list vusers.db注释:命令的用法db_load -T(转换) -t hash(指定读取数据文件的基本方法) -f vusers.list(刚才的列表文件)vusers.db(转化为数据库文件)注释:检查是否转换成功[root@vsftpd vsftpd]# file vusers.db vusers.db: Berkeley DB (Hash, version 9, native byte-order)[root@vsftpd vsftpd]# file vusers.list vusers.list: ASCII text4、建立ftp访问的根目录及虚拟用户对应的系统账号[root@vsftpd vsftpd]# mkdir /var/ftproot[root@vsftpd vsftpd]# useradd -d /var/ftproot/ -s /sbin/nologin virtualuseradd:警告:此主目录已经存在。不从 skel 目录里向其中复制任何文件。5、更改根目录的权限[root@vsftpd vsftpd]# chown virtual:virtual /var/ftproot[root@vsftpd vsftpd]# chmod 755 /var/ftproot6、建立pam认证文件[root@vsftpd vsftpd]# cat >> /etc/pam.d/vsftpd.vu << EOF> #%PAM-1.0> auth required pam_userdb.so db=/etc/vsftpd/vusers> account required pam_userdb.so db=/etc/vsftpd/vusers> EOF7、修改配置文件[root@vsftpd vsftpd]# cp vsftpd.conf vsftpd.conf.bak[root@vsftpd vsftpd]# vim vsftpd.confanonymous_enable=NO #允许匿名用户访问(yes,为允许,no为不允许)local_enable=YES #是否禁用本地用户(设置为no是表示禁用,yes表示不禁用)write_enable=YES #允许开放写的权限anon_umask=022 #设置匿名用户上传建立文件时的权限掩码dirmessage_enable=YES #用户切换进入目录时显示.message(如果存在)文件的内容xferlog_enable=YES #开启xferlog日志,默认记录到/var/log/xferlog)connect_from_port_20=YES #连接控制端口为20xferlog_std_format=YES #启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式listen=YES #是否以独立运行的方式监听服务userlist_enable=YES #未启用本地用户时,可以将用户列表功能禁用tcp_wrappers=YES #是否开启tcp_wrappers主机访问控制guest_enable=YES #启用用户映射功能guest_username=virtual #将映射用户指定为virtual(我们之前创建的虚拟用户)pam_service_name=vsftpd.vu #设root置用于用户认证的PAM文件位置(/etc/pam.d/vsftpd.vu 目录中对应的文件名)local_root=/var/ftproot #指定ftp的路径(可以自己写目录路径,要注意权限和宿主)8、重新启动vsftpd服务[root@vsftpd vsftpd]# service vsftpd restart关闭 vsftpd: [确定]为 vsftpd 启动 vsftpd: [确定]9、为不同的虚拟用户建立独立的配置文件(分配不同的权限)[root@vsftpd ~]# cd /etc/vsftpd/[root@vsftpd vsftpd]# mkdir chroot_list[root@vsftpd vsftpd]# vim chroot_list/tom#上传、创建文件anon_upload_enable=YESanon_mkdir_write_enable=YESanon_world_readable_only=NOanon_other_write_enable=YES10、然后再修改配置文件,在里面添加一句[root@vsftpd vsftpd]# vim vsftpd.conf#指定给用户配置权限目录的位置user_config_dir=/etc/vsftpd/chroot_list11、登录、用户权限|测试创建目录,上传文件,删除、重命名,下载[root@vsftpd mnt]# ftp localhostTrying ::1...ftp: connect to address ::1拒绝连接Trying 127.0.0.1...Connected to localhost (127.0.0.1).220 (vsFTPd 2.2.2)Name (localhost:root): tom331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/"ftp> mkdir upload257 "/upload" createdftp> dir227 Entering Passive Mode (127,0,0,1,139,65).150 Here comes the directory listing.drwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> lcd /etcLocal directory now /etcftp> put fstablocal: fstab remote: fstab227 Entering Passive Mode (127,0,0,1,249,106).150 Ok to send data.226 Transfer complete.805 bytes sent in 3.8e-05 secs (21184.21 Kbytes/sec)ftp> dir227 Entering Passive Mode (127,0,0,1,206,240).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstabdrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> mput inittab passwdmput inittab? yes227 Entering Passive Mode (127,0,0,1,223,114).150 Ok to send data.226 Transfer complete.884 bytes sent in 4.1e-05 secs (21560.98 Kbytes/sec)mput passwd? yes227 Entering Passive Mode (127,0,0,1,254,126).150 Ok to send data.226 Transfer complete.951 bytes sent in 3e-05 secs (31700.00 Kbytes/sec)ftp> dir227 Entering Passive Mode (127,0,0,1,170,44).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstab-rw------- 1 500 500 884 Jul 20 19:54 inittab-rw------- 1 500 500 951 Jul 20 19:54 passwddrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> rename passwd password350 Ready for RNTO.250 Rename successful.ftp> dir227 Entering Passive Mode (127,0,0,1,249,227).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstab-rw------- 1 500 500 884 Jul 20 19:54 inittab-rw------- 1 500 500 951 Jul 20 19:54 passworddrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> delete inittab250 Delete operation successful.ftp> dir227 Entering Passive Mode (127,0,0,1,142,175).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstab-rw------- 1 500 500 951 Jul 20 19:54 passworddrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> mkdir test257 "/test" createdftp> dir227 Entering Passive Mode (127,0,0,1,54,117).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstab-rw------- 1 500 500 951 Jul 20 19:54 passworddrwx------ 2 500 500 4096 Jul 20 19:55 testdrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> rmdir test250 Remove directory operation successful.ftp> dir227 Entering Passive Mode (127,0,0,1,99,71).150 Here comes the directory listing.-rw------- 1 500 500 805 Jul 20 19:53 fstab-rw------- 1 500 500 951 Jul 20 19:54 passworddrwx------ 2 500 500 4096 Jul 20 19:53 upload226 Directory send OK.ftp> lcd /mnt/Local directory now /mntftp> mget fstab password uploadmget fstab? yes227 Entering Passive Mode (127,0,0,1,230,153).150 Opening BINARY mode data connection for fstab (805 bytes).226 Transfer complete.805 bytes received in 9.8e-05 secs (8214.29 Kbytes/sec)mget password? yes227 Entering Passive Mode (127,0,0,1,141,146).150 Opening BINARY mode data connection for password (951 bytes).226 Transfer complete.951 bytes received in 5.1e-05 secs (18647.06 Kbytes/sec)ftp> ![root@vsftpd mnt]# ll总用量 8-rw-r--r-- 1 root root 805 7月 21 03:55 fstab-rw-r--r-- 1 root root 951 7月 21 03:55 password建议公司用虚拟用户做vsftpd,因为虚拟用户是在Linux系统中不存在的,这样增强系统的安全性vsftpd配置文件的更多参数,大家感兴趣可以自己去配置,我写的都是一些基本的配置参数==========================================vsftpd.conf配置文件概述=======================================================主配置文件:/etc/vsftpd/vsftpd.conf匿名权限anon_root 指定匿名用户访问目录anonymous_enable 是否启用匿名访问anon_mkdir_write_enable 是否允许匿名用户创建目录的权限anon_other_write_enalbe 是否允许匿名用户其他的写入权限anon_max_rate 允许匿名用户最大的传输速率anon_upload_enable 是否允许匿名用户上传anon_umask=022 匿名用户上传文件的默认权限 本地用户权限local_root 指定本地用户登陆后的宿主目录chroot_local_user 是否将用户禁锢在宿主目录中local_max_rate 允许本地用户的传输速率local_mkdir_write_enable 是否允许本地用户创建目录的权限local_other_write_enable 是否允许本地用户其他的写入权限local_enable 是否启用本地用户访问local_umask 本地用户上传文件的默认权限 全局配置listen=yes 是否以独立的方式监听服务listen_port=21 设置FTP的侦听端口write_enable 是否允许写入download_enable 是否允许下载dirmessage_enable 用户切换目录时显示.message文件xferlog_enable 启用xferlog日志xferlog_std_format 启用标准的xferlog日志connect_from_port_20 允许服务器从20号端口建立主动连接pasv_enable 允许服务器被动连接pasv_max_port 设置用于被动连接的最大端口号pasv_min_port 设置用于被动连接的最小端口号pam_service_name 设置用于用户认证的pam文件的位置userlist_enable 是否启用user_list列表文件userlist_deny 是否禁user_list列表中用户帐号max_clients 最多允许多少个客户端同时连接max_per_ip 对来自同一IP的客户端,最多允许多少个并发连接tcp_wrappers 是否启用TCP_wrappers主机访问控制chroot_list_enable=yeschroot_list_file=/etc/vsftpd/chroot_list 虚拟用户配置guest_enable 是否启用用户映射功能guest_username 将映射用户指定为某个系统用户user_config_dir 指定虚拟用户配置目录位置=====================================================================================================================================================================================================================================================================================================================================================================================================================#!/bin/bash# Allentuns-郑彦生# time 2014-07-20#反复安装后,再次安装删除路径文件yum -y remove vsftpdrm -rf /etc/init.d/vsftpdrm -rf /etc/vsftpdrm -rf /etc/pam.d/vsftpd.vurm -rf /var/ftprootuserdel -r virtual#关闭防火墙和selinuxservice iptables stopchkconfig iptables offsetenforce 0#安装vsftpd和db4包yum -y install vsftpd db4-utilsyum -y install ftp#每次安装前对原文件进行一个打包#tar -cPf /root/vsftpd_bak.tar.gz /etc/vsftpd#创建用户列表文件#奇数行为账户,偶数行为密码cd /etc/vsftpdcat > vusers.list << EOFtom123456jerry123456Allentuns123456EOF#生成db数据库文件db_load -T -t hash -f vusers.list vusers.db#创建虚拟用户根目录mkdir /var/ftproot#创建虚拟用户 不允许登录系统useradd -d /var/ftproot/ -s /sbin/nologin virtual &> /dev/null#更改文件属性、权限chown virtual:virtual /var/ftprootchmod 755 /var/ftproot#创建pam文件cat > /etc/pam.d/vsftpd.vu << EOF#%PAM-1.0auth required pam_userdb.so db=/etc/vsftpd/vusersaccount required pam_userdb.so db=/etc/vsftpd/vusersEOF#创建虚拟用户权限文件cp vsftpd.conf vsftpd.conf.bakmkdir chroot_listcat > chroot_list/tom << EOFanon_upload_enable=YESanon_mkdir_write_enable=YESanon_world_readable_only=NOanon_other_write_enable=YESEOF#指明用户列表文件sed -i 's/pam_service_name=vsftpd/pam_service_name=vsftpd.vu/' vsftpd.confcat >> vsftpd.conf << EOFguest_enable=YESguest_username=virtuallocal_root=/var/ftprootuser_config_dir=/etc/vsftpd/chroot_listEOFsed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf#启动服务/etc/init.d/vsftpd restartecho "iptables is stop and selinux is disabled"echo "vsftpd Successfully installed and service startup"
工作中遇到的一些问题,尤其是被动模式,在调试防火墙的时候格外的麻烦,借此借用朋友博客的截图用以分析主动模式和被动模式的区别
ftp同步脚本
#!/bin/bashsrc=/www/newtmpFTP_SERVER="192.168.1.107"FTP_USER="jerry"FTP_PASS="12345"while truedocd $srcfind $src -mmin +1 -type f -exec mv '{}' /www/mnttmp ';'cd /www/mnttmpwccc=`ls -l|wc -l`if [ $wccc != "1" ];thenftp -v -n $FTP_SERVER << EOFuser $FTP_USER $FTP_PASSprompt offmput *.*byeEOFrm -rf /www/mnttmp/*fiecho `date` 请等待文件传输过程中。。。sleep 1done