python vsftp mysql_vsftp需求

真的真的好久没写博客啦~~!还好最近一个视频直播的项目上线了。恶心的调试,这个vsftp需求更恶心了我!

下面是产品的需求:

1、总部人员需要通过ftp上传课件到服务器上。权限只能是创建目录、上传文件、禁止下载文件、删除文件、重命名文件。分中心则通过ftp下载课件。权限只能是下载,禁止创建目录、上传文件、删除文件、重命名文件。

2、总部人员需要通过ftp将资料上传到服务器上。权限只能是创建目录、上传文件、下载文件、支持断点续传功能、删除文件、重命名文件。分中心则通过http下载课件,权限只能是下载。

3、分中心人员需要通过ftp将视频上传到服务器上。权限只能是创建目录、上传文件、禁止下载文件、删除文件、重命名文件。总部则通过ftp下载课件。权限只能是下载,禁止创建目录、上传文件、删除文件、重命名文件。

看到这三个需求我一片茫然,因为ftp了解不是很深,刚刚开始我准备依靠文件属性来控制,但是因为权限设置的太细,所以不得不要使用虚拟用户来配置。这里感谢一位QQ好友,他至少提供了一个关于vsftpd虚拟用户配置的链接,真的很感谢!综上所述,我决定3个需要需要使用5个虚拟用户。一个nginx下载用户。

环境:CentOS6.3(64位)

1、首先安装vaftpd需要的组件,pam、db4、vsftpd。

yum install -y pam* db4 vsftpd

2、建立虚拟用户。(用户和密码,一行一个)

vi /etc/vsftpd/account.txt

abc              =====>创建目录、上传文件、禁止下载、删除、重命名文件。

密码

bcd              =====>只能下载

密码

cde              =====>创建目录、上传文件、断点续传、删除文件、下载文件、重命名文件。

密码

def               =====>创建目录、上传文件、禁止下载、删除、重命名文件。

密码

efg               =====>只能下载

密码

3、生成虚拟用户密码口令文件

db_load -T -t hash -f /etc/vsftpd/account.txt /etc/vsftpd/account.db

为了安全生成完后可以把明文的账户文件account.txt删除。不过还是要自己记清楚哈!

4、编辑vsftpd的pam认证,32位系统的就别写/lib64了。

vi /etc/pam.d/vsftpd.vu

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/account

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/account

5、建立本地映射用户,不知道的参数上网自己查。

useradd -d /home/ftp virtual_user -s /sbin/nologin

6、下面是vsftpd.conf主配置文件

# Example config file /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd.vu

tcp_wrappers=YES

guest_enable=YES

user_config_dir=/etc/vsftpd/account

guest_username=virtual_user

7、下面是每个虚拟用户的权限,记得下面的虚拟用户的文件名必须和上述account.txt里面的文件名一样。

vi /etc/vsftpd/account/abc

write_enable=YES                             ====>允许在文件系统写入权限

anon_upload_enable=YES                   ====>允许上传文件

anon_mkdir_write_enable=YES            ====>允许创建文件夹

anon_world_readable_only=NO            ====>允许匿名用户浏览器整个服务器的文件系统

download_enable=NO                         ====>不允许下载文件

anon_umask=022                               ====>这个就不多说了,记得虚拟用户写anon_umask,本地账户写local_umask。我就为这个问题恶心过!

local_root=/home/ftp/courseware         ====>abc用户登录后的目录,不指定就登录到家目录了。

vi /etc/vsftpd/account/bcd

anon_world_readable_only=NO             ====>bcd用户只允许下载

local_root=/home/ftp/courseware         ====>bcd用户登录后的目录

创建这个指定后的目录

mkdir /home/ftp/courseware

chown virtual_user.virtual_user /home/ftp/courseware

vi /etc/vsftpd/account/cde

write_enable=YES                              ====>cde用户允许写入

anon_world_readable_only=NO            ====>cde用户允许下载

anon_upload_enable=YES                   ====>cde用户允许上传

anon_mkdir_write_enable=YES            ====>开放创建目录的权限

anon_other_write_enable=YES            ====>支持断点续传功能

anon_umask=022

local_root=/data

mkdir /data

chown virtual_user.virtual_user /data

nginx配置文件比较简单了,这里我就随便写一点

location / {

autoindex on;

autoindex_exact_size off;

autoindex_localtime on;

root /data;

}

vi /etc/vsftpd/account/def

write_enable=YES                             ====>允许在文件系统写入权限

anon_upload_enable=YES                   ====>允许上传文件

anon_mkdir_write_enable=YES            ====>允许创建文件夹

anon_world_readable_only=NO            ====>允许匿名用户浏览器整个服务器的文件系统

download_enable=NO                         ====>不允许下载文件

anon_umask=022                               ====>这个就不多说了,记得虚拟用户写anon_umask,本地账户写local_umask。

local_root=/home/ftp/video         ====>abc用户登录后的目录,不指定就登录到家目录了。

vi /etc/vsftpd/account/efg

anon_world_readable_only=NO             ====>efg用户只允许下载

local_root=/home/ftp/video                  ====>efg用户登录后的目录

创建这个指定后的目录

mkdir /home/ftp/video

chown virtual_user.virtual_user /home/ftp/video

8、增加ip_nat_ftp模块

在/etc/sysconfig/iptables-config文件最后面加入这两行

IPTABLES_MODULES="ip_nat_ftp"

IPTABLES_MODULES="ip_conntrack_ftp"

在/etc/sysconfig/iptables文件最后面加入这两行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

重启iptables服务

/etc/init.d/iptables restart

modprobe ip_nat_ftp    (记得以后写个脚本,开机自动运行加载这个模块,不然用ftp工具连接会报套接字什么错误)

10、下面可以尽情的测试了!有问题欢迎留言!

我遇到的三个问题:

1、操作系统字符集为zh_CN.UTF-8,用ftp工具上传带有中文名的文件,或者创建中文名的文件夹,在linux上查看显示为乱码。

解决办法:

修改系统字符集为LANG=zh_CN.GB18030,重启。然后重新上传即可!看到的正常。但是第二个需求通过浏览器去下载课件看到的是乱码,修改nginx住配置文件的字符集为GB2132,重启nginx即可看到网页的编码自动会选择GB2132!

2、ftp上传的文件权限为600,nginx下载报403无权访问,还好后来找到一篇帖子看到是写anon_umask解决!

3、需要增加上传文件的断点续传功能,这个是anon_other_write_enable=YES参数控制的,也就是说如果这个参数打开,那么就支持断点续传,但是这样就多了可以删除和重命名权限,所以这里只能取一个,我就没用断点续传功能。

阅读(3423) | 评论(5) | 转发(3) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值