Centos7安装vsftpd、pam_mysql、mariadb

环境

10.0.2.107  centos7.9  安装mariadb
10.0.2.108  centos7.9 安装vsftpd和pam_mysql

关闭selinux,关闭防火墙

两台服务器都要做

永久关闭selinux 重启电脑生效
sed -i '/^SELINUX/s/=.*/=disabled/' /etc/selinux/config

禁止防火墙开机启动
systemctl disable firewalld
systemctl stop firewalld

 安装配置mariadb

yum install -y mariadb-server

启动
systemctl start mariadb

设置开机自动启动
systemctl enable mariadb

安全初始化数据库
[root@localhost ~]# mysql_secure_installation 

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Set root password? [Y/n] y      设置root密码
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y    移除匿名用户
 ... Success!

Disallow root login remotely? [Y/n] n   不禁用root远程登录
 ... skipping.

Remove test database and access to it? [Y/n] n  不删除test库
 ... skipping.

Reload privilege tables now? [Y/n] y   刷新权限
 ... Success!
Thanks for using MariaDB!
[root@localhost ~]# 

登录并创建数据
mysql -uroot -h127.0.0.1 -ppassword
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
CREATE DATABASE vsftpdb;
GRANT SELECT ON vsftpdb.* TO 'ftpuser'@'10.0.2.108' IDENTIFIED BY 'ftpuserpwd';
use vsftpdb;
CREATE TABLE users (id int AUTO_INCREMENT NOT NULL PRIMARY KEY,name char(20) BINARY NOT NULL,password char(48) BINARY NOT NULL);
INSERT INTO users(name,password) VALUES ('tom',password('abc123'));
INSERT INTO users(name,password) VALUES ('jerry',password('abc123'));
INSERT INTO users(name,password) VALUES ('spike',password('abc123'));

下载pam_mysql源码

PAM-MySQL (sourceforge.net)

编译安装pam_mysql

由于centos7 epel源不提供pam_mysql,所以我们要自己编译安装
安装依赖程序
yum install -y mariadb-devel pam-devel
tar -zxvf pam_mysql-0.7RC1.tar.gz
./configure --with-pam-mods-dir=/usr/lib64/security/
make && make install

安装配置vsftpd

yum install -y vsftpd
创建pam认证文件
vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=ftpuser passwd=ftpuserpwd host=10.0.2.107 db=vsftpdb table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftpuser passwd=ftpuserpwd host=10.0.2.107 db=vsftpdb table=users usercolumn=name passwdcolumn=password crypt=2

创建虚拟用户映射系统用户对应的目录
useradd -s /sbin/nologin -d /var/ftpdir vuser
chmod -R 755 /var/ftpdir

配置/etc/vsftpd/vsftpd.conf
anonymous_enable=NO            #禁止匿名用户登录

#匿名用户上传,写入,其他权限,保持注释,因为这些权限在/etc/vsftpd/vuser.d/这个目录下每个用户单独提供
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES

anon_umask=073        用户上传文件权限为604,文件夹为704
chroot_local_user=YES        禁锢用户家目录
allow_writeable_chroot=YES    禁锢用户家目录后如果家目录有写入权限就禁止等陆,所以加上这个选项在家目录有写入权限的时候允许登录
reverse_lookup_enable=NO    #ftp客户端登录的时候很慢,添加这个参数解决
user_config_dir=/etc/vsftpd/vuser.d   #为每一用户提供上传下载删除权限配置的文件夹
pam_service_name=vsftpd.mysql        #pam认证的配置文件
guest_enable=YES        #开启虚拟用户模式
guest_username=vuser    #指定虚拟用户对应的系统用户

配置虚拟用户拥有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

mkdir /etc/vsftpd/vuser.d
touch tom
touch jerry
tom 可读可写可删除
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

jerry 可读可写不可删
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO

spike 只读权限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
启动FTP
systemctl start vsftpd

开机自动启动
systemctl enable vsftpd

测试

tom用户
lftp tom@10.0.2.108:/> put ifcfg-eth0    上传ok
137 bytes transferred                             
lftp tom@10.0.2.108:/> mv ifcfg-eth0 ifcfg-eth0.bak    重命名ok
rename successful
lftp tom@10.0.2.108:/> rm ifcfg-eth0.bak         删除ok
rm ok, `ifcfg-eth0.bak' removed
lftp tom@10.0.2.108:/> get 子网掩码计算器.exe   下载OK
54272 bytes transferred                        

jerry用户
lftp jerry@10.0.2.108:/> put install.log   删除ok
8901 bytes transferred
lftp jerry@10.0.2.108:/> get 丢包测试.exe    下载ok
209920 bytes transferred                                            
lftp jerry@10.0.2.108:/> mv install.log install.log.bak   重命名拒绝
Access failed: 550 Permission denied. (install.log)
lftp jerry@10.0.2.108:/> rm install.log 
rm: Access failed: 550 Permission denied. (install.log)   删除拒绝

spike用户
lftp spike@10.0.2.108:/> put fstab 
put: Access failed: 550 Permission denied. (fstab)   上传拒绝
lftp spike@10.0.2.108:/> rm user.csv 
rm: Access failed: 550 Permission denied. (user.csv)   删除拒绝
lftp spike@10.0.2.108:/> get readme.txt               下载OK
233 bytes transferred                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值