咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

Ubuntu 16.04.4 LTS搭建FTP服务

安装/删除

1
2
3
4
5
$ apt-get update
$ apt-get install vsftpd
$ vsftpd -v
vsftpd: version 3.0.3
$ apt-get purge vsftpd

创建ftp用户

创建一个不能登录到系统的用户,用于vsftpd文件读写

1
2
3
4
5
6
7
$ mkdir /home/ftpsam
$ chown ftpsam:ftpsam /home/ftpsam
$ useradd -d /home/ftpsam -s /sbin/nologin ftpsam
$ passwd ftpsam
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

新建文件,存放允许访问ftp的用户

1
2
3
4
$ vim /etc/vsftpd.users

#将刚创建的用户名输进去,一行一个用户
ftpsam

修改配置

注意每行后面不能有空格,否则启动服务失败

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vim /etc/vsftpd.conf

#允许写
write_enable=YES
local_umask=022

#此版本PAM服务的名称改为ftp才行,否则一直报500登录错误
pam_service_name=ftp

#指定登录用户
local_enable=YES
local_root=/home/ftpsam
userlist_file=/etc/vsftpd.users
userlist_enable=YES
userlist_deny=NO

权限

1
2
chroot_local_user=YES
allow_writeable_chroot=YES

注意: allow_writeable_chroot 会有安全问题,此处没有做深入验证。

连接

用ftpclient工具连接的话,用户密码就是我们系统中的ftpsam了,端口是21。

最终运行的完整配置/etc/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
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to FTPSam service.
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
#add
local_root=/home/ftpsam
userlist_enable=YES
userlist_file=/etc/vsftpd.users
userlist_deny=NO
allow_writeable_chroot=YES
#add

初始完整的配置文件(未修改的)

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
  1 # Example config file /etc/vsftpd.conf
2 #
3 # The default compiled in settings are fairly paranoid. This sample file
4 # loosens things up a bit, to make the ftp daemon more usable.
5 # Please see vsftpd.conf.5 for all compiled in defaults.
6 #
7 # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
8 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
9 # capabilities.
10 #
11 #
12 # Run standalone? vsftpd can run either from an inetd or as a standalone
13 # daemon started from an initscript.
14 listen=NO
15 #
16 # This directive enables listening on IPv6 sockets. By default, listening
17 # on the IPv6 "any" address (::) will accept connections from both IPv6
18 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
19 # sockets. If you want that (perhaps because you want to listen on specific
20 # addresses) then you must run two copies of vsftpd with two configuration
21 # files.
22 listen_ipv6=YES
23 #
24 # Allow anonymous FTP? (Disabled by default).
25 anonymous_enable=NO
26 #
27 # Uncomment this to allow local users to log in.
28 local_enable=YES
29 #
30 # Uncomment this to enable any form of FTP write command.
31 #write_enable=YES
32 #
33 # Default umask for local users is 077. You may wish to change this to 022,
34 # if your users expect that (022 is used by most other ftpd's)
35 #local_umask=022
36 #
37 # Uncomment this to allow the anonymous FTP user to upload files. This only
38 # has an effect if the above global write enable is activated. Also, you will
39 # obviously need to create a directory writable by the FTP user.
40 #anon_upload_enable=YES
41 #
42 # Uncomment this if you want the anonymous FTP user to be able to create
43 # new directories.
44 #anon_mkdir_write_enable=YES
45 #
46 # Activate directory messages - messages given to remote users when they
47 # go into a certain directory.
48 dirmessage_enable=YES
49 #
50 # If enabled, vsftpd will display directory listings with the time
51 # in your local time zone. The default is to display GMT. The
52 # times returned by the MDTM FTP command are also affected by this
53 # option.
54 use_localtime=YES
55 #
56 # Activate logging of uploads/downloads.
57 xferlog_enable=YES
58 #
59 # Make sure PORT transfer connections originate from port 20 (ftp-data).
60 connect_from_port_20=YES
61 #
62 # If you want, you can arrange for uploaded anonymous files to be owned by
63 # a different user. Note! Using "root" for uploaded files is not
64 # recommended!
65 #chown_uploads=YES
66 #chown_username=whoever
67 #
68 # You may override where the log file goes if you like. The default is shown
69 # below.
70 #xferlog_file=/var/log/vsftpd.log
71 #
72 # If you want, you can have your log file in standard ftpd xferlog format.
73 # Note that the default log file location is /var/log/xferlog in this case.
74 #xferlog_std_format=YES
75 #
76 # You may change the default value for timing out an idle session.
77 #idle_session_timeout=600
78 #
79 # You may change the default value for timing out a data connection.
80 #data_connection_timeout=120
81 #
82 # It is recommended that you define on your system a unique user which the
83 # ftp server can use as a totally isolated and unprivileged user.
84 #nopriv_user=ftpsecure
85 #
86 # Enable this and the server will recognise asynchronous ABOR requests. Not
87 # recommended for security (the code is non-trivial). Not enabling it,
88 # however, may confuse older FTP clients.
89 #async_abor_enable=YES
90 #
91 # By default the server will pretend to allow ASCII mode but in fact ignore
92 # the request. Turn on the below options to have the server actually do ASCII
93 # mangling on files when in ASCII mode.
94 # Beware that on some FTP servers, ASCII support allows a denial of service
95 # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
96 # predicted this attack and has always been safe, reporting the size of the
97 # raw file.
98 # ASCII mangling is a horrible feature of the protocol.
99 #ascii_upload_enable=YES
100 #ascii_download_enable=YES
101 #
102 # You may fully customise the login banner string:
103 #ftpd_banner=Welcome to blah FTP service.
104 #
105 # You may specify a file of disallowed anonymous e-mail addresses. Apparently
106 # useful for combatting certain DoS attacks.
107 #deny_email_enable=YES
108 # (default follows)
109 #banned_email_file=/etc/vsftpd.banned_emails
110 #
111 # You may restrict local users to their home directories. See the FAQ for
112 # the possible risks in this before using chroot_local_user or
113 # chroot_list_enable below.
114 #chroot_local_user=YES
115 #
116 # You may specify an explicit list of local users to chroot() to their home
117 # directory. If chroot_local_user is YES, then this list becomes a list of
118 # users to NOT chroot().
119 # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
120 # the user does not have write access to the top level directory within the
121 # chroot)
122 #chroot_local_user=YES
123 #chroot_list_enable=YES
124 # (default follows)
125 #chroot_list_file=/etc/vsftpd.chroot_list
126 #
127 # You may activate the "-R" option to the builtin ls. This is disabled by
128 # default to avoid remote users being able to cause excessive I/O on large
129 # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
130 # the presence of the "-R" option, so there is a strong case for enabling it.
131 #ls_recurse_enable=YES
132 #
133 # Customization
134 #
135 # Some of vsftpd's settings don't fit the filesystem layout by
136 # default.
137 #
138 # This option should be the name of a directory which is empty. Also, the
139 # directory should not be writable by the ftp user. This directory is used
140 # as a secure chroot() jail at times vsftpd does not require filesystem
141 # access.
142 secure_chroot_dir=/var/run/vsftpd/empty
143 #
144 # This string is the name of the PAM service vsftpd will use.
145 pam_service_name=vsftpd
146 #
147 # This option specifies the location of the RSA certificate to use for SSL
148 # encrypted connections.
149 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
150 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
151 ssl_enable=NO
152
153 #
154 # Uncomment this to indicate that vsftpd use a utf8 filesystem.
155 #utf8_filesystem=YES

注释的详细描述

扩展阅读:《Redhat使用Vsftpd服务传输文件》