光影工作室

ubuntu下vsftp+mysql的多用户配置

发布时间:5年前热度: 3596 ℃评论数:

一、安装所需软件包
sudo apt-get install vsftpd mysql-server mysql-client libpam- mysql

注:libpam-mysql 这个包可以让PAM读取MySQL数据来验证用户信息

二、设置FTP系统用户
1、完成第一个步骤后系统会自动创建vsftpd默认的匿名用户名ftp,
在/etc/passwd中删除它。
vim /etc/passwd
删除 ftp 行

2、创建VSFTP的FTP帐号和密码

useradd myftp -d /var/www -s /bin/false

(解:useradd myftp,新建一个叫myftp的系统账号)
(解:-d /var/www FTP的根目录)
(解:-d /bin/false 禁止myftp账号进行用户终端登陆)

设置系统账号myftp的密码
sudo passwd myftp
如设为:123abc

三、配置MySQL数据库连接数据库:

#mysql -u root -p/      使用root用户连入本机mysql服务器
Enter password:           输入mysql的root用户密码
mysql>                            连入成功的提示符
mysql>create databases vsftpd;                                建立库名。注:在mysql环境下命令的 结束必须有“;”,如果忘记了输入“;”也不怕的,忘记了输入“;”则是 换行,在mysql里面命令是可以分成几行执行的。你再输入“;”起同样的作用。
mysql>use vsftpd;                                                           打开库vsftpd,以下操作就会针对vsftpd库
mysql>create table ftpusers (name varchar(20) not null,password varchar(20) not null,primary key (name))
type=myisam;

创建名为users的表名,其中设置了两个键name和 password。注:varchar(20) not null设置键长度为20,且不能为空, primary key(name)设置表的主键(主键是不能赋相同的值,因为ftp用户 名不能相同)。type=myisam设置表的类型(MyISAM 全新二进制可移植的 表处理器),这个是默认的,可以省略

mysql>insert into ftpusers values(‘admin’,’admin’);    建立虚拟用户admin,密码为admin。

mysql>insert into ftpusers values(‘web1′,’1’); 建立虚拟用户web1,密码为1。

mysql>insert into ftpusers values(‘web2′,’2’); 建立虚拟用户web2,密码为2。

mysql>grant select on vsftpd.ftpusers to myftp@localhost identified by ‘123abc’;
grant 命令
select on vsftpd.users 所有权限,这里设置权限仅在vsftpd库的ftpusers表使用select。
to ftp@localhost 本机ftp用户(mysql按照用户名和所在IP区分用户, root和root@%不是同一个用户。)
identified by ‘123abc’ 设置myftp@localhost用户的口令为123abc。
mysql>quit; 退出mysql,mysql配置完成。

四、配置vsftpd的PAM验证
#vim /etc/pam.d/vsftpd
把以前的内容全部注释掉,然后添加如下肉容(下面只有两行,请注意):
auth required pam_mysql.so user=myftp passwd=123abc host=localhost db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=0
account required pam_mysql.so user=myftp passwd=123abc host=localhost db=vsftpd table=users sercolumn=name
passwdcolumn=password crypt=0
解释一下:
user=myftp            刚才添加的myftp用户名
passwd=123abc   刚才添加的用户名密码
host=localhost    mysql服务器名。
db=vsftpd     与这个对应create databases vsftpd,是存储用户名的mysql库名
table=ftpusers 存储ftp用户名的mysql库中的表名usercolumn=name 与mysql对应的键passwdcolumn=password 与mysql对应的键

crypt=0 加密方式:0表示明文,1表示unix方式加密,2表示mysql中的password函数加密,3表示md5加密的。

 五、配置vsftpd。

#vim /etc/vsftpd.conf

allow_writeable_chroot=YES
ftp_username=nobody
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#设定vsftpd的服务日志保存路径。注意,该文件默认不存在,必须要手动
touch出来
xferlog_std_format=YES

anonymous_enable=NO

local_enable=YES

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

chroot_local_user=YES
#使用户不能离开主目录

guest_enable=YES
#设定启用虚拟用户功能。

guest_username=myftp
#指定虚拟用户的宿主用户,就是上面建立的用户

user_config_dir=/etc/vsftpd_user_conf
#所有用户的配置目录
pam_service_name=/etc/pam.d/vsftpd
#PAM将根据/etc/pam.d/vsftpd进行认证

listen=YES
#开启监听
listen_port=21
#默认的端口
pasv_min_port=30000
pasv_max_port=30999

#ascii_upload_enable=YES
#ascii_download_enable=YES
#设定支持ASCII模式的上传和下载功能。
#cd mkdir /etc/vsftpd_user_conf/
#vim admin 建立用户配置文件,这个文件应与虚拟用户中
同名。
anon_world_readable_only=NO
#设置为YES时,只有全局可读(—r—r—r)文件才能下载
download_enable=YES
#允许下载
write_enable=YES
#允许修改
anon_upload_enable=YES
#允许上传
anon_mkdir_write_enable=YES
#允许建立目录
anon_other_write_enable=YES
#允许删除文件

#vim web1
local_root=/var/www/web1
#FTP虚拟用户的用户目录

anon_world_readable_only=NO
#取消任何形式的FTP写入命令。

download_enable=YES

write_enable=YES
#开放上传权限

anon_upload_enable=YES
#可创建目录的同时可以在此目录中上传文件

anon_mkdir_write_enable=YES
#FTP上本地的文件权限,默认是077,您可以改为022

anon_other_write_enable=YES
#可删除文件;

dirlist_enable=YES
#设置目录列表能力!

anon_max_rate=102400
#限速,单位kb/s

#vim web2
anon_world_readable_only=NO
download_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/var/www/web1
dirlist_enable=YES
#设置目录列表能力!
anon_max_rate=102400
#限速,单位kb/s

每一个用户要对立一个文件。如上,并且文件名要和数据库表里的用户为一样。

六、给虚拟用户分配权限

sudo chown ftp.admin /var/www/
sudo chmod a-x /var/www/
sudo chown ftp.web1 /var/www/web1
sudo chmod a-x /var/www/web1
sudo chown ftp.web2 /var/www/web2
sudo chmod a-x /var/www/web2
七、启动服务
#/etc/init.d/vsftpd stop
#etc/init.d/mysql stop
#etc/init.d/mysql start
#etc/init.d/vsftpd start

ubuntu,mysql,配置