简易 Linux Server部署教程系列之05 使用 vsftpd+虚拟用户实现企业内部FTP服务 (作者信息:阮晓龙投稿时间:2018年5月2日 需求描述 某研发型企业需要配置一台企业内部的FTP服务器,满足企业文件服务器 的需求。计划创建三类目录 (1)在公司内部创建一个临时目录,供全公司的人都可以进行上传、下载 修改、删除等操作; (2)公司用于公示的文件,对所有员工开放,但是该目录的权限为只有管 理员进行操作,其他的员工的权限为只读和下载权限; 3)公司部门的目录,其权限类似公司的共享目录,但是其权限只对部门 内部人员开放 方案设计 共享目录的规划及其命名如表1所示。 表1共享目录规划表 说明 名称 目录名称 对应的目录 /srv/ftp/pubic 对用用户的账号pu 对应用户的密码 publicpwd 权限 上传,下载,新建文件夹,删除、更改文件和文件夹名 公布消息目录的规划及其命名如表2所示 表2公布消息目录规划表 说明 名称 目录名称 announced 对应的目录 /srv/ftp/announced 对用用户的账号 announced 对应用户的密码| announcedpwd 权限 浏览、下载文件 部门目录的规划及其命名如表3所示
简易 Linux Server 部署教程系列之 05 使用 vsftpd+虚拟用户实现企业内部 FTP 服务 (作者信息:阮晓龙 投稿时间:2018 年 5 月 2 日) 一、需求描述 某研发型企业需要配置一台企业内部的 FTP 服务器,满足企业文件服务器 的需求。计划创建三类目录: (1)在公司内部创建一个临时目录,供全公司的人都可以进行上传、下载、 修改、删除等操作; (2)公司用于公示的文件,对所有员工开放,但是该目录的权限为只有管 理员进行操作,其他的员工的权限为只读和下载权限; (3)公司部门的目录,其权限类似公司的共享目录,但是其权限只对部门 内部人员开放。 二、方案设计 共享目录的规划及其命名如表 1 所示。 表 1 共享目录规划表 说明 名称 目录名称 public 对应的目录 /srv/ftp/pubic 对用用户的账号 public 对应用户的密码 publicpwd 权限 上传,下载,新建文件夹,删除、更改文件和文件夹名 公布消息目录的规划及其命名如表 2 所示。 表 2 公布消息目录规划表 说明 名称 目录名称 announced 对应的目录 /srv/ftp/announced 对用用户的账号 announced 对应用户的密码 announcedpwd 权限 浏览、下载文件 部门目录的规划及其命名如表 3 所示
表3部门目录规划表 说明 名称 目录名称 web 对应的目录 对用用户的账号web 对应用户的密码 上传,下载,新建文件夹,删除、更改文件和文件夹 其化 能够访问 public、 announced目录 配置脚本 1、删除上次安装的牢记信息 systemctI stop vsftpd userdel vsftpd rm -rf/var/mail/vsftpd yum -y remove vsftpd rm -rf /etc/vsftpd/* rm -rf /srv/ftp 2、安装 vsftpd, pam, db4 yum -y install vsftpd pam pam*k db4 db4-k #设置 vsftpd自启动 systemctl enable vsftpd #关闭防火墙和 seLinuX systemctl stop firewall setenforce 0 3、创建FTP服务的存储目录 mkdir -p/srv/ftpannounced mkdir -p/srv/ftp/public mkdir -p/srv/ftp/web/webl mkdir -p/ srv/ftp/web/web2 dir -p/srv/ftp/announced/annol dir -p/srv/ftp/announced/anno2 mkdir -p/ srv/ftp/public/pub mkdir -p/srv/ftp/public/pub2
表 3 部门目录规划表 说明 名称 目录名称 web 对应的目录 /srv/ftp/web 对用用户的账号 web 对应用户的密码 webpwd 权限 上传,下载,新建文件夹,删除、更改文件和文件夹 其他权限 能够访问 public、announced 目录 三、配置脚本 1、删除上次安装的牢记信息 systemctl stop vsftpd userdel vsftpd rm -rf /home/vsftpd rm -rf /var/mail/vsftpd yum -y remove vsftpd rm -rf /etc/vsftpd/* rm -rf /srv/ftp 2、安装 vsftpd,pam,db4 yum -y install vsftpd pam pam-* db4 db4-* #设置 vsftpd 自启动 systemctl enable vsftpd #关闭防火墙和 SELinux systemctl stop firewalld setenforce 0 3、创建 FTP 服务的存储目录 mkdir -p /srv/ftp/web mkdir -p /srv/ftp/announced mkdir -p /srv/ftp/public mkdir -p /srv/ftp/web/web1 mkdir -p /srv/ftp/web/web2 mkdir -p /srv/ftp/announced/anno1 mkdir -p /srv/ftp/announced/anno2 mkdir -p /srv/ftp/public/pub1 mkdir -p /srv/ftp/public/pub2
4、配置虚拟账号系统 cat >/etc/vsftpd/ vuser passwd. conf /etc/vsftpd/vsftpd. conf <<EOF #不允许匿名访问 anonymous enable=No #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有 虚拟用户将无法访问 local enable=YES #允许写操作 write enable=yeS #创建或上传后文件的权限掩码 local umask=022 #禁止匿名用户上传 anon upload enable=NO #禁止匿名用户创建目录
4、配置虚拟账号系统 cat > /etc/vsftpd/vuser_passwd.conf > /etc/pam.d/vsftpd #创建用于 FTP 虚拟账号服务的操作系统用户,并禁止该用户登陆操作系统 useradd -g ftp -d /home/vsftpd -s /sbin/nologin vsftpd 6、配置 vsftpd.conf mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak cat > /etc/vsftpd/vsftpd.conf <<EOF #不允许匿名访问 anonymous_enable=NO #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为 NO 那么所有 虚拟用户将无法访问 local_enable=YES #允许写操作 write_enable=YES #创建或上传后文件的权限掩码 local_umask=022 #禁止匿名用户上传 anon_upload_enable=NO #禁止匿名用户创建目录
anon mkdir write enable=No #进入目录时可以显示一些设定的信息,可以通过 message file=. message来设置 dirmessage enable=YES #开启日志 xferlog enable=YeS #主动连接的端口号 connect from port 20=YES #设定禁止上传文件更改宿主 chown u #日志路径,需要对日志文件授权 chown vsftpd. vsftpd/var/log/ vSftpd.log xferlog file=/var/log/xferlog #格式化日志 xferlog std format=YES #禁止 vsftpd账号登陆,因此写 vsftpd或系统内 nobod nopriv user=vsftpd #设定支持异步传输功能 async abor enable=yeS #设定支持 ASCII模式的上传 ascii upload enable=yeS #设定支持 ASCII模式的上传 ascii download enable=yeS #登陆欢迎语 ftpd banner=Welcome to Linux Teach FTP service. #限定用户在个人目录内访问。 chroot list enable=yeS #限定在个人目录内访问的用户信息列表 chroot list file=/etc/vsftpd/ chroot list #以 standalone方式启动 listen=yeS #/etc/pam.d/下的 vsftpd文件 pam_ service name=vsftpd #在/etc/ vsftpd/ user list中的用户将不能使用FTP userlist enable=YeS #支持 TCP Wrappers的防火墙机制 #启用虚拟用户功能 guest enable=YeS #虚拟用户权限所对应的宿主用户,宿主用户为 linux操作系统用户
anon_mkdir_write_enable=NO #进入目录时可以显示一些设定的信息,可以通过 message_file=.message 来设置 dirmessage_enable=YES #开启日志 xferlog_enable=YES #主动连接的端口号 connect_from_port_20=YES #设定禁止上传文件更改宿主 chown_uploads=NO #日志路径,需要对日志文件授权 chown vsftpd.vsftpd /var/log/vsftpd.log xferlog_file=/var/log/xferlog #格式化日志 xferlog_std_format=YES #禁止 vsftpd 账号登陆,因此写 vsftpd 或系统内 nobody nopriv_user=vsftpd #设定支持异步传输功能 async_abor_enable=YES #设定支持 ASCII 模式的上传 ascii_upload_enable=YES #设定支持 ASCII 模式的上传 ascii_download_enable=YES #登陆欢迎语 ftpd_banner=Welcome to Linux Teach FTP service. #限定用户在个人目录内访问。 chroot_list_enable=YES #限定在个人目录内访问的用户信息列表 chroot_list_file=/etc/vsftpd/chroot_list #以 standalone 方式启动 listen=YES #/etc/pam.d/下的 vsftpd 文件 pam_service_name=vsftpd #在/etc/vsftpd/user_list 中的用户将不能使用 FTP userlist_enable=YES #支持 TCP Wrappers 的防火墙机制 tcp_wrappers=YES #启用虚拟用户功能 guest_enable=YES #虚拟用户权限所对应的宿主用户,宿主用户为 linux 操作系统用户
guest username=vsftpd #虚拟用户的 vsftpd配置文件存放路径。 virtual use local privs=YES # vsftpd config是目录,里面存放的文件名和虚拟用户名必须完全一致 user config dir=/etc/vsftpd/vuser conf EOF 7、虚拟用户配置 #创建 chroot list文件并写入文件内容 touch /etc/vsftpd/chroot list echo vsftpd >/etc/vsftpd/chroot list #创建虚拟用户的配置文件存放的路经 mkdir /etc/vsftpd/vuser conf d /etc/vsftpd/vuser conf/ #为Web用户创建 vsftpd的配置文件 cat> web EOF local root=/srv/ftp write enable=yeS anon umask=022 anon world readable only=NO anon upload e=YES anon mkdir write enable=yes anon other write enable=yes #为 announced用户创建 vsftpd的配置文件 cat announced < EOF local root=/srv/ftp/announced write enable=yes anon umask=022 anon world readable only=NO anon upload enable=yES anon mkdir write enable=YeS anon other write enable=yes EOF #为 public用户创建 vsftpd的配置文件
guest_username=vsftpd #虚拟用户的 vsftpd 配置文件存放路径。 virtual_use_local_privs=YES #vsftpd_config 是目录,里面存放的文件名和虚拟用户名必须完全一致。 user_config_dir=/etc/vsftpd/vuser_conf EOF 7、虚拟用户配置 #创建 chroot_list 文件并写入文件内容 touch /etc/vsftpd/chroot_list echo vsftpd > /etc/vsftpd/chroot_list #创建虚拟用户的配置文件存放的路经 mkdir /etc/vsftpd/vuser_conf cd /etc/vsftpd/vuser_conf/ #为 Web 用户创建 vsftpd 的配置文件 cat > web announced << EOF local_root=/srv/ftp/announced write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES EOF #为 public 用户创建 vsftpd 的配置文件
cat public < EOF local root=/srv/ftp/public write enable=yes anon umask=022 anon world readable only=NO anon upload enable=yeS anon mkdir wr anon other write enable=yes 8、配置完成并测试 #重新启动 vsftpd服务 systemc restart vsftpd echo FTP Service is OK 点此下载配置的she脚本:使用 vsftpd+pam实现企业内部FTP服务的配 置脚本zip 查看原文:简易 Linux server部署教程系列之05-使用 vsftpd+虚拟用户实 现企业内部FTP服务pdf
cat > public << EOF local_root=/srv/ftp/public write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES EOF 8、配置完成并测试 #重新启动 vsftpd 服务 systemctl restart vsftpd echo "FTP Service is OK." 点此下载配置的 shell 脚本:使用 vsftpd+pam 实现企业内部 FTP 服务的配 置脚本.zip 查看原文:简易 Linux Server 部署教程系列之 05-使用 vsftpd+虚拟用户实 现企业内部 FTP 服务.pdf