ftp

FTP:file transfer protocol,监听于tcp21号端口;工作与应用层

ftp拥有两个tcp连接
  命令连接:一直打开,监听tcp21号端口
  数据连接:按需打开,主动模式监听于tcp20号端口,被动模式端口随机
数据传输模式:基于源文件的格式传输

   

vsftpd
  配置文件目录:/etc/vsftpd
  服务脚本:/etc/init.d/vsftpd
  主程序:/usr/sbin/vsftpd
  文件目录:/var/ftp
ftp用户:
  匿名用户
  系统用户
  虚拟用户

/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,默认为系统用户

[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:这个文件需要手动建立,意思是在这个文件内的用户可以浏览其他用户家目录下的内容

[root@localhost ~]# cat /etc/vsftpd/chroot_list
root
.... admin

 /etc/vsftpd/vsftpd.conf:主配置文件

[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就是允许表里的用户

新建个ftp服务器,可以使用匿名用户登录,但是只能下载文件,一个本地管理员登录时不被限制,其他本地账号被限制在自己家目录

[root@localhost vsftpd]# vim vsftpd.conf
#启用匿名
anonymous_enable=YES

#匿名只能下载可读的文件
anon_world_readable_only=YES

#启用本地
local_enable=YES

#本地用户可以上传
write_enable=YES

#可以用软件分析的log
xferlog_enable=YES

#存放路径
xferlog_file=/var/log/vsftpd.log

#同时生成ftp自己的log
dual_log_enable=YES

#存放路径
vsftpd_log_file=/var/log/vsftpd.log

#端口
connect_from_port_20=YES

#xferlog格式
xferlog_std_format=YES

#pam
pam_service_name=vsftpd

#tcpwapper
tcp_wrappers=YES

#锁定家目录之后在登录总是出错,加上这个
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用户都在限制在家目录,匿名用户无法上传文件。

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/9005261.html