安装vsftpd
yum install -y vsftpd配置文件说明
/etc/vsftpd/vsftpd.conf #核心配置文件。 /etc/vsftpd/ftpusers #黑名单文件,此文件里的用户不允许访问 FTP 服务器。 /etc/vsftpd/user_list #白名单文件,是允许访问 FTP 服务器的用户列表。 /etc/vsftpd/vsftpd_conf_migrate.sh #vsftpd操作的一些变量和设置 备注:使用命令 rpm -ql vsftpd 可列出vsftpd中包含的文件配置本地用户登录
本地用户登录就是指用户使用 Linux 操作系统中的用户账号和密码登录 FTP 服务器。
vsftpd 安装后默认只支持匿名 FTP 登录,用户如果试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 拒绝,但可以在 vsftpd 里配置用户账号和密码登录。命令如下:
useradd -s /sbin/nologin -d /home/data/hs1 hs1 passwd hs1 #输入两次密码 #用户和工作组管理 nologin命令可以实现礼貌地拒绝用户登录系统,同时给出信息。如果尝试以这类用户登录,就在log里添加记录,然后在终端输出This account is currently not available信息,就是这样。一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。配置vsftpd配置文件,这里是关键点
[root@FTPAP /]# ls /etc/vsftpd/ chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh #首先了解vsftpd主配置文件vsftpd.conf,更全面的功能和选项介绍参见vsftpd.conf.5的man page页面,使用命令行man vsftpd.conf vim /etc/vsftpd/vsftpd.conf 修改对应的值如下: anonymous_enable=NO #禁止匿名用户登录,默认允许 local_enable=YES #允许本地实体用户登录 write_enable=YES #允许用户上传数据,开启写权限 local_umask=022 #对本地用户建立新目录(755)与文件(644)的权限,上传文件的权限掩码 dirmessage_enable=YES #若登录目录下有.message则会显示该文件内容 可以自己在登录目录下创建.message文件并写入信息 xferlog_enable=YES #启动日志文件记录,默认记录于/var/log/vsftpd.log,可用使用vsftpd_log_file改写 xferlog_file=/var/log/xferlog connect_from_port_20=YES #支持主动式连接功能,默认20,可用使用ftp_data_port指定为其他端口号 xferlog_std_format=YES #支持WuFTP的日志文件格式 local_root=/home/test #限制登录用户只能在/home/test目录下操作,该用户一登录就切换到该目录下面 chroot_local_user=YES #(全局性)将所有用户访问范围限制在主目录,YES为限制 NO表示不限制。默认为不限制 chroot_list_enable=YES #是否启用list 列表里的用户作为例外 listen=YES #使用stand alone方式启动vsftpd pam_service_name=vsftpd #支持PAM模块的管理 userlist_enable=YES #支持/etc/vsftpd/user_list文件内的账号登录控制,禁止其登陆 tcp_wrappers=YES #支持TCP Wrappers的防火墙机制 这里为了安全,我们可以编辑 user_list这个文件,把禁止通过FTP登录系统的账号添加进去。这样的话,这些账户尝试远程登录的时候。会被拒绝登录。 实际修改配置项如下 anonymous_enable=NO chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 新建一个文件/etc/vsftpd/chroot_list,因为上面的配置文件,在其中增加hs1chroot_local_user 和 chroot_list_enable 两个小冤家
默认新建ftp用户是可以访问除主目录以外其他路径,如果要设置访问权限,在/etc/vsftpd/vsftpd.conf 里面修改参数,让chroot_list_enable=YES 规则生效
chroot_local_user=YES 表示,(全局性)将所有用户访问范围限制在主目录,YES为限制 NO表示不限制。默认为不限制
chroot_list_enable=YES 表示,是否启用list 列表里的用户作为例外。默认为不限制
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user YES 时,chroot_list_enable=YES时, 所有用户都可以ftp连接,限制在主目录下面。 启用chroot_list_file里面的用户名单,作为例外,不限制访问范围
chroot_local_user=NO 时,chroot_list_enable=YES 时,所有用户都可以ftp连接,不限制范围。启用chroot_list_file里面的用户名单,作为例外,限制访问范围在主目录
chroot_local_user=NO 时,chroot_list_enable=NO 时,所有用户可以ftp连接,不限制范围。不启用 chroot_list_file里面的用户名单,没有例外
chroot_local_user =YES 时,chroot_list_enable=NO 时,所有用户可以ftp连接,限制在主目录下。不启用chroot_list_file里面的用户名单,没有例外
开机启动
chkconfig vsftpd on chkconfig vsftpd --list #查看vsftpd启动项开始服务
service vsftpd start停止服务
service vsftpd stop查看FTP端口
netstat -yulnp | grep vsftpd安装ftp客户端组件
yum -y install ftp ftp localhost #localhost 也可以是ftp服务器ip地址 #输入用户和密码,如果登陆成功,说明ftp服务可用了。FTP常用命令介绍
如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。 如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。 一旦用户使用ftp在远程站点上登录成功,将得到“ftp>”提示符。现在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清单,也可以在 help命令后面指定具体的命令名称,获得这条命令的说明。
最常用的命令有: ls 列出远程机的当前目录 cd 在远程机上改变工作目录 lcd 在本地机上改变工作目录 ascii 设置文件传输方式为ASCII模式 binary 设置文件传输方式为二进制模式 close 终止当前的ftp会话 hash 每次传输完数据缓冲区中的数据后就显示一个#号 get(mget) 从远程机传送指定文件到本地机 put(mput) 从本地机传送指定文件到远程机 open 连接远程ftp站点 exit 断开与远程机的连接并退出ftp ? 显示本地帮助信息 ! 转到Shell中
常用命令说明 ◆启动ftp会话 open命令用于打开一个与远程主机的会话。该命令的一般格式是: open 主机名/IP 如果在ftp 会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。 ◆终止ftp会话 close、disconnect、和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp 程序。 ◆改变目录 “cd [目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。 ◆远程目录列表 ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是: ls [目录] [本地文件] 如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。 ◆从远程系统获取文件 get和mget命令用于从远程机上获取文件。get命令的一般格式为: get 文件名 您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。 mget命令一次获取多个远程文件。mget命令的一般格式为: mget 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。 ◆向远程系统发送文件 put和mput命令用于向远程机发送文件。Put命令的一般格式为: put 文件名 mput命令一次发送多个本地文件,mput命令的一般格式为: mput 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。 ◆改变文件传输模式 默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。 ◆检查传输状态 传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。 ◆ftp中的本地命令 当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdir new_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir 的目录。