#配置vsftpd服务 # 安装ftp服务器 vsftpd vs means very secure `sudo apt-get install vsftpd` # 配置文件说明 ## 启动脚本: /etc/init/vsftpd.conf > 这是一个upstart脚本, 指定了主配置文件的路径: /etc/vsftpd.conf 和可执行文件的路径为/usr/sbin/vsftpd 其中/etc/vsftpd.conf中指定了PAM service的名称位vsftpd PAM的配置文件的路径为: /etc/pam.d/ 所以vsftpd的PAM配置文件为: /etc/pam.d/vsftpd > ``` # Standard behaviour for ftpd(8). # auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed # # # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so. # # # Standard pam includes # @include common-account # @include common-session # @include common-auth # auth required pam_shells.so ``` 其中/etc/ftpusers中指定了阻止访问的用户 ## 主配置文件 /etc/vsftpd.conf 指定禁止或允许使用vsftpd的用户列表 由userlist_deny 和 userlist_enable 和 userlist_file指定 > * userlist_deny=NO * userlist_enable=YES * userlist_file=/etc/vsftpd/allowed_users 如果userlist_deny为NO, 表示userlist_file 指定的是允许访问ftp服务器的用户 如果userlist_deny为YES, 表示userlist_file 指定的是禁止访问ftp服务器的用户 * anonymous_enable 是否允许匿名登陆 如果设置为YES 用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。 匿名用户登陆后的根目录位于 ftp用户的根目录, 例如 ftp:x:121:130:ftp daemon,,,:/srv/ftp:/bin/false 那么匿名用户登陆之后的根目录为 /srv/ftp 还可以通过anon_root 指定匿名用户的根目录, 例如anon_root=/home/caodan/code * local_enable 是否允许本地用户登陆(即linux系统中的用户帐号) 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问FTP服务 为本地用户指定登陆目录: 添加配置项 user_config_dir=/etc/vsftpd/userconf 如果需要设置test用户的登陆目录, 则需要创建文件/etc/vsftpd/userconf/test, 该文件中的内容为: local_root=/var/ftp/test, 指定登陆目录为/var/ftp/test * write_enable 是否允许本地用户对FTP服务器文件具有写权限 * local_umask 本地用户文件掩码 本地用户默认掩码为077 * anon_upload_enable 是否允许匿名用户上传文件,须将全局的write_enable=YES * anon_mkdir_write_enable 否允许匿名用户创建新文件夹 * dirmessage_enable 是否激活目录欢迎信息功能 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息 默认情况下,欢迎信息是通过该目录下的.message文件获得的 也可以通过ftpd_banner指定 * xferlog_enable 是否让系统自动维护上传和下载的日志文件 默认情况该日志文件为/var/log/vsftpd.log,也可以通过xferlog_file选项对其进行设定 * connect_from_port_20 是否设定FTP服务器将启用FTP数据端口的连接请求 Make sure PORT transfer connections originate from port 20 (ftp-data). ftp-data数据传输,21为连接控制端口 * chown_uploads 设定是否允许改变上传文件的属主, 需要与chown_username配合使用 * chroot_list_enable 用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限 设置为YES时,用户被锁定在自己的home目录, 需要与chroot_list_file配合使用 * chroot_list_file=/etc/vsftpd/chroot_list 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录, 此文件需要自己建立 例: chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 其中chroot_list中为caodan, 那么如果使用用户名caodan登陆ftp, 将不能切换到caodan的家目录外的其他目录 但是重启登陆的时候提示 "500 OOPS: vsftpd: refusing to run with writable root inside chroot()" 这是由于用户的根目录 /home/caodan 可写,并且使用了chroot限制, 这在最近的更新里面是不允许的 解决办法: 去掉改目录的可写的权限或者 allow_writeable_chroot=YES * chroot_local_user 限制本地用户在自己的家目录 如果chroot_local_user被设置为YES, 并且没有设置chroot_list_enable 和 chroot_list_file 那么所有的本地用户都会被限制在自己的家目录里, (也需要设置allow_writeable_chroot) 如果设置了chrott_local_user位YES, 并还设置了chroot_list_enable 和 chroot_list_file 那么, chroot_list_file中设置的用户就是不会被chroot的账户, 而其他没有指定的账户都会被限制在自己的家目录内 * check_shell=NO 注意:这个地方如果不配置,就会出现只有root用户可以登陆,普通用户不可以 * seccomp_sandbox=NO 注意:该选项不配置可能导致莫名其妙的530问题 > firefox中需要安装插件 fireftp才可以从ftp站点下载或者上次数据 直接打开ftp服务器的地址,默认采用匿名用户登录, 如果想使用指定用户登录,地址格式为: ftp://username@hostname