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模块实现的身份认证

1
2
3
4
5
6
7
8
9
[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<br>#deny file=/etc/vsftpd/ftpusers   就是限制哪些用户不允许使用vsftpd,都在这个文件里

 /etc/vsftpd/ftpusers:如上,这些用户不允许用ftp,默认为系统用户

1
2
3
4
5
6
[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]

1
2
3
4
5
[root@localhost ~]# cat /etc/vsftpd/user_list
root
bin
....
nobody

 /etc/vsftpd/chroot_list:这个文件需要手动建立,意思是在这个文件内的用户可以浏览其他用户家目录下的内容

1
2
3
[root@localhost ~]# cat /etc/vsftpd/chroot_list
root<br>....
admin

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[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服务器,可以使用匿名用户登录,但是只能下载文件,一个本地管理员登录时不被限制,其他本地账号被限制在自己家目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[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列表

1
2
3
4
5
[root@localhost vsftpd]# cat user_list
anonymous   #假如这个列表对应的选项是NO,匿名用户就无法登录了,所以把匿名用户加在这里面
admin    #下面这两个用户都可以登录   
aaa
    

 chroot_list列表

1
2
[root@localhost vsftpd]# cat chroot_list
aaa            #根据上面的选项,这个文件代表哪个用户不限制在家目录

 经测试,其他人都不可以登录,匿名用户和admin用户都在限制在家目录,匿名用户无法上传文件。

 

 

 

posted @   ForLivetoLearn  阅读(145)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示