Linux:FTP服务器的搭建
程序员文章站
2022-05-09 14:40:32
FTP服务器的简介 系统用户 虚拟用户 匿名用户 FTP服务器的安装 使用yum安装vsftpd软件包 启动服务并设置开机自启 设置防火墙与selinux机制 配置访问 配置匿名用户访问FTP ftp的配置文件 设置匿名用户登录ftp时不输入密码 设置匿名用户上传、新建、删除文件 设置文件权限 设置 ......
ftp服务器的简介
系统用户
即系统本机的用户。linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件 系统进行工作。但通常不希望他们通过ftp方式远程访问系统。
虚拟用户
只能采用ftp方式使用系统的用户,不能直接使用shell登录系统,即虚拟用户,访问服务器 时需要验证。大多数ftp用户是这类用户。
匿名用户
对于公共性质的服务器可以提供匿名用户访问,用户名:anonymous。但在使用匿名用户时, 应对其进行尽可能多的限制,权限较低,如:同时连接的用户数量受限,访问的文件数目受限, 不能上传文件,允许操作的指令较少,设置匿用户同时登入的最大联机数量等。
ftp服务器的安装
使用yum安装vsftpd软件包
#yum install vsftpd ftp
启动服务并设置开机自启
#systemctl start vsftpd.service #systemctl enable vsftpd.service
设置防火墙与selinux机制
#firewall-cmd --permanent --zone=public --add-service=ftp #firewall-cmd --reload #setenforce 0
配置访问
配置匿名用户访问ftp
ftp的配置文件
ftp的配置文件是:/etc/vsftpd/vsftpd.conf 设置匿名用户访问ftp: anonymous_enable=yes
设置匿名用户登录ftp时不输入密码
设置匿名用户登录ftp时不输入密码: no_anon_password=yes ftpd_banner= welcome to our home! //设置提示内容
设置匿名用户上传、新建、删除文件
anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes
设置文件权限
chmod 777 pub 不推荐使用 setfacl -m u:ftp:rwx pub 推荐使用
设置匿名用户上传或新建文件的权限
如果使用vsftp的是本地用户,则要修改配置文件中的 local_umask 的值; 如果使用vsftp的是虚拟用户,则要修改配置文件中的 anon_umask 的值。 umask = 022 时,新建的目录 权限是755,文件的权限是 644; umask = 077 时,新建的目录 权限是700,文件的权限时 600。
设置不允许系统用户登录,只能匿名用户登录
anonymous_enable=yes local_enable=no
设置匿名用户访问ftp的默认目录
anon_root=/var/ftp anon_root=/var/public 注意:要修改vsftp服务器匿名用户默认目录时,不可以将anon_root设置为一个其他账号已有的家目录,否则不能实现匿名用户访问ftp服务器。
配置系统用户访问ftp
设置系统用户只能访问自己的主目录
设置系统用户只能访问自己的主目录并具有所有权限,不允许切换到系统的其他目录 chroot_local_user=yes 控制用户访问路径访问自己的主目录,不能切换到其他目录 allow_writeable_chroot=yes 允许写入 ftpd_banner= welcome to our home! max_clients=30 设置最大连接数 idle_session_timeout=600 设置超时时间
设置系统用户访问指定目录
设置系统用户访问指定目录,不允许切换到系统的其他目录,并具上传、下载、新建、删除的权限。 local_root=/mnt/public/ 设置系统用户访问ftp的默认目录 write_enable=yes 允许写入 chroot_local_user=yes 控制用户访问路径访问指定目录,不能切换到其他目录 allow_writeable_chroot=yes 允许写入 修改/mnt/public/目录下的文件权限
基于本地用户的访问控制
默认情况下
默认情况下,ftp服务器中所有系统用户都可以访问ftp,如何来限定只有指定的系统用户可以访问呢?vsftp中提供了两个与系统用户相关的配置文件: /etc/vsftpd/ftpusers 提供了一份用于禁止登录的ftp用户列表(黑名单)。 此文件中包含的用户将被禁止登录vsftpd服务器,不管该用户是否在 /etc/vfsftpd/user_list中出现。 /etc/vsftpd/user_list 提供了一份用于允许登录的ftp用户列表(白名单), 此文件中包含的用户可能被禁止登录,可能被允许登录。
具体配置
具体在主配置文件vsftpd.conf中决定: 当存在userlist_enable=yes时,user_list文件生效。 当存在userlist_deny=yes时,则仅禁止列表中的帐户登录。 当存在userlist_deny=no时,则允许列表中用户登录。 其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在 于两个文件中,则被拒绝访问ftp。 举例:只让ftpuser用户访问ftp,那么可以进行如下设置: #vim /etc/vsftpd/vsftpd.conf userlist_enable=yes 启用userlist用户列表(系统默认设置) userlist_deny=no 只允许列表中的用户登录 #vim/etc/vsftpd/user_list 将允许登录的用户添加在最后 将服务重启后,在客户端测试,此时只有ftpuser用户可以访问ftp
ftp日志管理
日志文件
vsftp软件搭建的ftp服务器的日志文件的配置,在/etc/vsftpd.conf中找到: xferlog_enable=yes 开启ftp服务器记录上传下载的情况 xferlog_std_format=yes 日志格式 xferlog_file=路径 指定日志文件 默认为:/var/log/xferlog
日志文件输出格式
(1)当前时间(为本地时间),格式为:ddd mmm dd hh:mm:ss yyyy (2)传输时间:传送文件所用时间,单位为秒 (3)远程主机名称/ip: (4)文件大小:传输文件的大小,单位为byte (5)文件名:传输文件名,包括路径 (6)传输类型:a--以ascii传输;b--以二进制文件传输 (7)特殊处理标志: _:不做任何特殊处理 c:文件是压缩格式 u:文件是非压缩格式 t:文件时tar格式 (8)传输方向:o 从ftp服务器想客户端传输;i 从客户端向ftp服务器传输 (9)访问模式:a 匿名用户;g 来宾用户;r 系统中的用户 (10)用户名 (11)服务名:一般为ftp (12)认证方式:0 无; 1 rfc931认证 (13)认证用户id:如果使用*,测表示无法获得该id (14)完成状态:i 传输未完成;c表示传输已完成。
配置虚拟用户访问
安装vsftpd虚拟用户需要用到的软件及认证模块
yum install pam* libdb-utils libdb* --skip-broken -y
创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式
xxxxxx 123456 …… ……
生成vsftpd虚拟用户数据库认证文件,设置权限为600
权限为600 表示只有所有者可以访问 #db_load -t -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db #chmod 600 /etc/vsftpd/vsftp_login.db
配置pam认证文件:vim /etc/pam.d/vsftpd.vu
配置pam认证文件:vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vsftp_login account required pam_userdb.so db=/etc/vsftpd/vsftp_login
创建一个系统用户,用于虚拟用户映射
#useradd -s /sbin/nologin ftpuser
修改配置文件
修改配置文件:#vim /etc/vsftpd/vsftpd.conf #pam_service_name=vsftpd pam_service_name=vsftpd.vu guest_enable=yes guest_username=ftpuser user_config_dir=/etc/vsftpd/vsftpd_user_conf virtual_use_local_privs=yes
分别为虚拟用户创建私有的虚拟目录与独立的配置文件
#mkdir /home/ftpuser/techftp #mkdir /etc/vsftpd/vsftpd_user_conf #vim techftp local_root=/home/ftpuser/techftp write_enable=yes anon_world_readable_only=yes anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes #mkdir /home/ftpuser/netftp #vim netftp local_root=/home/ftpuser/netftp write_enable=yes virtual_use_local_privs=no #不具有可登录用户的权限 anon_world_readable_only=yes #可浏览目录 anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes