FTP:file transfer protocol,监听于tcp21号端口;工做与应用层web
ftp拥有两个tcp链接
命令链接:一直打开,监听tcp21号端口
数据链接:按需打开,主动模式监听于tcp20号端口,被动模式端口随机
数据传输模式:基于源文件的格式传输
shell
vsftpd
配置文件目录:/etc/vsftpd
服务脚本:/etc/init.d/vsftpd
主程序:/usr/sbin/vsftpd
文件目录:/var/ftp
ftp用户:
匿名用户
系统用户
虚拟用户vim
/etc/pam.d/vsftpd:经过PAM模块实现的身份认证安全
[root@localhost ~]# cat /etc/pam.d/vsftpd #%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
#deny file=/etc/vsftpd/ftpusers 就是限制哪些用户不容许使用vsftpd,都在这个文件里
/etc/vsftpd/ftpusers:如上,这些用户不容许用ftp,默认为系统用户bash
[root@localhost ~]# cat /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin .... nobody
/etc/vsftpd/user_list:一样是限制哪些用户能够使用ftp,须要配置主文件中的userlist_deny=[yes|no]服务器
[root@localhost ~]# cat /etc/vsftpd/user_list root bin .... nobody
/etc/vsftpd/chroot_list:这个文件须要手动创建,意思是在这个文件内的用户能够浏览其余用户家目录下的内容session
[root@localhost ~]# cat /etc/vsftpd/chroot_list root
.... admin
/etc/vsftpd/vsftpd.conf:主配置文件app
[root@localhost pub]# cat /etc/vsftpd/vsftpd.conf #与服务器环境相关的设置 connect_from_port_20=YES #数据链接的端口号 listen_port=21 #命令链接的端口号 dirmessage_enable=YES #进入某个目录时是否显示欢迎消息,消息文件为每一个目录下.message的文件 message_file=.message #上面一个YES才设置 listen=YES #能够用自带的脚本启动 pasv_enable=YES #支持数据链接的被动链接模式,必定要YES use_localtime=YES #使用本地时间 write_enable=YES #开启上传权限 connect_timeout=60 #数据链接的主动模式下,发出消息60秒后无答复,主动断开 accept_timeout=60 #数据链接的被动模式下,发出消息60秒后无答复,主动断开 data_connection_timeout=300 #链接创建完成后,因为线路问题,300秒内数据没法完成传输,断开 idle_session_timeout=600 #用户无操做超时时间 max_clients=0 #客户端最大的链接数,0不限制 max_per_ip=0 #单个ip的最大链接数 pasv_min_port=0 #被动模式的端口,能够有个区间,主要是为了防火墙放行 pasv_max_port=0 #0表明不限制 ftpd_banner=Welcome to blah FTP service. #欢迎信息 banner_file=文件路径 #欢迎信息为文件中的内容 #与本地用户相关的设置,就是/etc/passwd里的用户 guest_enable=YES #开放这个选项,任何本地帐号都会被假设称guest guest_username=ftp #指定访客的身份 local_enable=YES #启用本地用户 local_max_rate=0 #本地用户限速byte/second,0不限速 *chroot_local_user=YES #是否限制本地用户在本身家目录下 *chroot_list_enable=YES #是否将列表内用户限制在家目录,例外用户 *chroot_list_file=/etc/vsftpd/chroot_list #列表位置 #这两个选项是互补的,list_enable的值表明是否对local_user的范围取反。 #local_user=YES list=YES表明限制本地,不限制列表 #local_user=NO list-YES表明不限制本地,限制列表 #local=YES list=NO表明都限制 #lical=NO list=NO表明都不限制 userlist_enable=YES #是否限制列表内用户登录 userlist_deny=YES #对此列表是拒绝仍是容许 #这个deny,假如为YES表明这个文件内的用户都被限制,假如为NO表明只有这个文件内的用户不被限制 userlist_file=/etc/vsftpd/user_list #列表位置 local_umask=022 #本地用户建立完文件的umask #匿名用户相关设置 anonymous_enable=YES #启用匿名用户 anon_world_readable_only=YES #仅语序匿名用户具备下载可读文件的权限,默认YES anon_other_write_enable=NO #是否容许匿名用户删除文件 anon_mkdir_write_enable=YES 是否容许匿名用户建立目录 anon_upload_enable=NO #是否容许匿名用户上传文件,容许的话上面是YES deny_email_enable=YES #阻挡特殊的邮件地址 banned_email_file=/etc/vsftpd/banned_emails #拒绝邮件地址文件,一行一个邮件地址 no_anon_password=NO #是否不检查匿名用户密码,不检查的话上面过滤邮件就没用了 anon_max_rate=0 #匿名用户限速,bytes/秒 anon_umask=077 #匿名用户的umask #系统安全设置 ascii_upload_enable=YES #使用ASCII格式上传文件 ascii_download_enable=YES #使用ASCII格式下载文件 one_process_model=NO #每创建一个链接都使用一个进程,耗资源 tcp_wrappers=YES #支持tcp_wrappers xferlog_enable=YES #记录用户的操做记录,记录到下面的文件 xferlog_file=/var/log/vsftpd.log #日志文件记录于哪里 xferlog_std_format=YES #日志文件的格式 chown_uploads=YES #用户上传完文件,全部者更改 chown_username=用户名 #更改成谁
/etc/vsftpd/user_list和/etc/vsftpd/ftpusers并不冲突,ftpusers是pam模块决定的不能登陆的用户,user_list能够决定哪些用户能够登陆,靠的就是主配置文件中的userlist_deny这个选项,若是是YES就是拒绝表里的用户NO就是容许表里的用户tcp
新建个ftp服务器,能够使用匿名用户登陆,可是只能下载文件,一个本地管理员登陆时不被限制,其余本地帐号被限制在本身家目录测试
[root@localhost vsftpd]# vim vsftpd.conf anonymous_enable=YES #启用匿名 anon_world_readable_only=YES #匿名只能下载可读的文件 local_enable=YES #启用本地 write_enable=YES #本地用户能够上传 xferlog_enable=YES #能够用软件分析的log xferlog_file=/var/log/vsftpd.log #存放路径 dual_log_enable=YES #同时生成ftp本身的log vsftpd_log_file=/var/log/vsftpd.log #存放路径 connect_from_port_20=YES #端口 xferlog_std_format=YES #xferlog格式 pam_service_name=vsftpd #pam tcp_wrappers=YES #tcpwapper allow_writeable_chroot=YES #锁定家目录以后在登陆老是出错,加上这个 chroot_local_user=YES #锁定家目录 chroot_list_enable=YES #不锁定家目录的名单 chroot_list_file=/etc/vsftpd/chroot_list #名单位置 userlist_enable=YES #用户列表 userlist_deny=NO #只有这个列表的用户才能够登陆 userlist_file=/etc/vsftpd/user_list #列表位置
user_list列表
[root@localhost vsftpd]# cat user_list anonymous #假如这个列表对应的选项是NO,匿名用户就没法登陆了,因此把匿名用户加在这里面 admin #下面这两个用户均可以登陆 aaa
chroot_list列表
[root@localhost vsftpd]# cat chroot_list aaa #根据上面的选项,这个文件表明哪一个用户不限制在家目录
经测试,其余人都不能够登陆,匿名用户和admin用户都在限制在家目录,匿名用户没法上传文件。