部署
要求
为了解决公司员工文件存储和下载的需求。要求部署内部FTP服务器,员工可以通过自己的账号的权限对FTP进行操作
- 公司公共文件可以通过匿名下载
- 公司财务部、商务部、行政部、技术部分别拥有自己的部门文件夹,彼此之间相互隔离
- 部门之间只有主管才能拥有上传权限,普通员工只能下载
- 禁止用户查看家目录以外的数据
- 确保FTP账号安全
需求分析
- FTP需要开启匿名下载 ——> 默认FTP支持匿名下载
- 分析针对不同部分实现目录隔离 ——> 有两种方法 1.同部门共用本地账号 2.虚拟账号
- 部门内部员工权限不同 ——> 实现方法 虚拟账号
- 禁止用户切出 ——> chroot
- 防止本地账号泄露 ——>虚拟账号
部署流程
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
| # 创建虚拟用户映射的本地账号,非登录式,家目录在 /var/tmp/vuser_ftp,账号名为dengpangpang useradd -s /sbin/nologin -d /var/tmp/vuser_ftp dengpangpang
# 新版vsftpd不允许用户主目录有w权限,因此,用户主目录设置500权限,各部门子目录设置700权限,所有上传下载都在子目录中进行 chmod 500 /var/tmp/vuser_ftp
# 创建不同部门的根文件夹,给予700权限 mkdir /var/tmp/vuser_ftp/finance # 财务部根文件夹 mkdir /var/tmp/vuser_ftp/commerce # 商务部根文件夹 ......
# 给各部门的根目录700权限 chmod 700 /var/tmp/vuser_ftp/*
# 修改部门共享文件夹的所有者和属组为dengpangpang chown dengpangpang.dengpangpang /var/tmp/vuser_ftp -R
# 修改配置文件 /etc/vsftpd/vsftpd.conf,添加以下内容 guest_enable=YES # 开启虚拟用户 guest_username=dengpangpang # 指定虚拟用户映射的本地用户 virtual_use_local_privs=NO # 虚拟用户权限是否和本地用户相同,此处为否,因为要设置不同部门的权限 user_config_dir=/etc/vsftpd/vconf.d/ # 虚拟用户的配置文件
# 建立虚拟用户的账号密码文件,添加各部门的账号和密码 vim /etc/vsftpd/vuser
finance_admin # 财务部主管账号名 123 # 财务部主管密码 finance_member # 财务部成员账号 123 # 财务部成员密码 ......
# 生成账号密码数据库文件 db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
# 更改账号密码数据库文件的权限为600 chmod 600 /etc/vsftpd/vuser.db
# 设置pam验证,将以下内容添加到开头 vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
# 定义上述虚拟用户不允许切出家目录 vim /etc/vsftpd/chroot_list
finance_admin finance_member ......
# 编辑虚拟用户的配置文件,分为主管和成员两种
vim /etc/vsftpd/vconf.d/a=finance_admin # 财务部主管的配置文件
local_root=/var/tmp/vuser_ftp/finance # 指定根目录 anon_umask=077 # 设置文件和目录权限 anon_world_readable_only=NO # 开放下载权限 anon_upload_enable=YES # 开放上传权限 anon_mkdir_write_enable=YES # 开放创建目录的权限 anon_other_write_enable=YES # 开放删除和重命名目录的权限
vim /etc/vsftpd/vconf.d/a=finance_member # 财务部成员的配置文件
local_root=/var/tmp/vuser_ftp/finance # 指定根目录 anon_world_readable_only=NO # 开放下载权限
|
Windows访问
现今浏览器如edge,chrome等逐渐停止对FTP访问的支持,只能使用其他客户端或者命令行工具来访问FTP。
就命令行而言,还需要对Windows系统进行设置,打开FTP服务。
- 打开控制面板,找到程序,找到启用或关闭Windows功能,点击 Internet Infomation Services 选项,勾选**<FTP服务器>、<FTP服务>、<FTP扩展性>,<Web管理工具>、<IIS管理控制台>**,然后点击确定。

- 重启计算机后,打开控制面板中的系统和安全,然后点击管理工具(Windows工具),可以看到 Internet Infomation Services (IIS)管理器。右键左侧栏(你的系统名),添加FTP站点。

- 添加FTP站点名和物理路径,FTP站点名称自己起个就行,物理路径(用于存放共享文件),可以在D盘或者E盘(不建议C盘)新建文件夹,把这个文件夹路径作为FTP站点的物理路径,下一步。

- 选择无SSL,其他保持默认,然后下一步

- 身份验证选择匿名,授权选择所有用户,勾选读取和写入权限,然后完成

然后就可以在命令行中使用FTP访问。