一、實現(xiàn)基于MYSQL驗證的vsftpd虛擬用戶訪問
1墨叛、編譯工具安裝
yum install -y cmake gcc-c++ gcc bison libmcrypt openssl openssl-devel ncurses ncurses-devel perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-GD
2止毕、安裝mariadb數(shù)據(jù)庫
yum –y install mariadb-server
systemctl start mariadb
3、創(chuàng)建ftp虛擬賬戶表
mysql -uroot -p (默認為空)
mysql> create database vsftpd; #創(chuàng)建vsftpd數(shù)據(jù)庫
mysql> grant all privileges on vsftpd.* to vsftpd@'%' identified by 'vsftpd'; #創(chuàng)建數(shù)據(jù)庫賬戶密碼
mysql> create table user #創(chuàng)建用戶表
(
id int unsigned auto_increment primary key,
name char(50) binary not null,
password char(50) binary not null
);
mysql> insert into user(name,password) values ('ftp1',password('ftp1')); #創(chuàng)建虛擬用戶
mysql> insert into user(name,password) values ('ftp2',password('ftp2'));
4漠趁、安裝pam_mysql-0.7RC1
yum -y install mariadb-devel pam-devel
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-pam-mods-dir=/lib64/security
make && make install
5扁凛、創(chuàng)建ftp賬戶
useradd -r -s /sbin/nologin -d /data/ftpdata vuser #創(chuàng)建vuser操作系統(tǒng)賬戶
mkdir -p /data/ftpdata/{public,upload}
chmod 555 /data/ftpdata/ #去掉vuser ftp根目錄寫權(quán)限
setfacl -m u:vuser:rwx /data/ftpdata/upload/ #單獨給予upload文件目錄寫的權(quán)限
6、創(chuàng)建pam vsftpd.mysql文件
vi /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=vsftpd host=172.16.31.7 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=vsftpd host=172.16.31.7 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2 #填寫數(shù)據(jù)庫連接信息
7闯传、修改vsftpd配置文件
vi /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql #(修改pam引用配置文件)
userlist_enable=YES #默認
tcp_wrappers=YES #默認
guest_enable=YES #開啟虛擬用戶
guest_username=vuser #所有虛擬用戶都映射成vuser賬戶
user_config_dir=/etc/vsftpd/vusers.d/ #每個虛擬用戶獨立配置文件
8谨朝、單獨配置虛擬用戶
mkdir -p /etc/vsftpd/vusers.d/
vi /etc/vsftpd/vusers.d/ftp1 #創(chuàng)建ftp1用戶配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES #允許上傳
9、驗證
ftp1用戶可以上傳
ftp2用戶無法上傳
二甥绿、通過NFS實現(xiàn)服務器/www共享訪問
1字币、創(chuàng)建共享目錄
mkdir -p /www
chmod 755 /www
2、安裝nfs服務
yum install -y nfs-utils rpcbind
3共缕、修改nfs配置文件
vi /etc/exports
/www 172.16.31.65(rw,sync,all_squash,anonuid=501,anongid=501)
#rw 可讀寫
#sync 同步至內(nèi)存
#all_squash 全部匿名方式登陸
#n匿名賬戶ID及組501
4洗出、創(chuàng)建匿名賬戶
groupadd -g 501 nfsuser
useradd -g nfsuser -u 501 nfsuser -s /sbin/nologin
chown -R nfsuser:nfsuser /www
5、啟動nfs并刷新配置
systemctl start rpcbind && systemctl start nfs-server
exportfs -r
6图谷、客戶端安裝
yum install -y nfs-utils
7共苛、掛載nfs盤
mkdir -p /data/www
mount -t nfs 172.16.31.7:/www /data/www
三判没、配置samba共享,實現(xiàn)/www目錄共享
1隅茎、創(chuàng)建共享目錄
mkdir -p /www
2澄峰、安裝samba服務
yum install samba –y
3、創(chuàng)建共享賬戶
groupadd sambauser
useradd sambauser -g sambauser -s /sbin/nologin
chown -R sambauser:sambauser /www
4辟犀、將用戶添加進samba用戶中并設置密碼
smbpasswd -a sambauser
5俏竞、修改samba配置文件
vi /etc/samba/smb.conf
最后添加
[www]
comment = www #描述
path = /www #共享目錄
public = no #隱藏共享目錄
browseable = no
printable = no
valid users = sambauser #添加sambauser權(quán)限
write list = sambauser #sambauser可寫權(quán)限
6、啟動samba服務
systemctl start smb nmb
7堂竟、測試
\172.16.31.7\www
四魂毁、使用rsync+inotify實現(xiàn)/www目錄實時同步
服務端:172.16.23.243
客戶端:172.16.31.7
需求:
客戶端 /data/www 目錄中的所有文件及目錄同步至服務端/data/backup目錄中
1、服務端和客戶端都安裝rsyncd
yum -y install rsync
2出嘹、服務端修改rsync配置文件
vi /etc/rsyncd.conf
uid=root #進程啟用的用戶
gid=root
use chroot = no #不切根
max connections = 0 #無連接數(shù)限制
ignore errors #忽略錯誤
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no #不反向解析
[backup] #創(chuàng)建backup實例
path = /data/backup/ #備份的目錄
comment = backup
read only = no
auth users = rsyncuser #同步rsync賬戶
secrets file = /etc/rsync.pass #密碼保存的文件
3席楚、創(chuàng)建rsync同步賬戶及密碼
vi /etc/rsync.pass
rsyncuser:123456 #用戶:密碼
4、客戶端添加rsyncuser的密碼
vi /etc/rsync.pass
123456
5税稼、測試rsync
服務端
啟動rsync進程
rsync --daemon
chmod 600 /etc/rsync.pass(客戶端和服務端都要執(zhí)行)
客戶端
[root@ftptest data]# rsync -avz --password-file=/etc/rsync.pass /data/www/ rsyncuser@172.16.23.243::backup
sending incremental file list
./
f1.txt
f4.txt
f5.txt
sent 221 bytes received 76 bytes 594.00 bytes/sec
total size is 0 speedup is 0.00
服務端
[root@mwh backup]# ll
總用量 0
-rw-r--r-- 1 root root 0 8月 30 12:05 f1.txt
-rw-r--r-- 1 root root 0 8月 30 14:02 f4.txt
-rw-r--r-- 1 root root 0 8月 30 14:05 f5.txt
成功同步
6烦秩、客戶端安裝inotify
yum install inotify-tools
7、定義同步腳本
vi /data/rsyncwww.sh
#!/bin/sh
SRC=/data/www/
DEST=rsyncuser@172.16.23.243::backup
inotifywait -mrq -e modify,create,move,delete,attrib $SRC |while read events #-m 持續(xù)監(jiān)控 -r 遞歸 -q 不記錄 -e 定義操作
do
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST #--delete 刪除backup中源文件不存在的文件
echo "[`date "+%Y-%m-%d %H:%M:%S"`] $events" >> /var/log/sync.log
done
8郎仆、執(zhí)行腳本測試
chmod +x /data/rsyncwww.sh
./rsyncwww.sh
客戶端
[root@ftptest www]# touch f{1..10}.txt
[root@ftptest www]# ll
總用量 0
-rw-r--r-- 1 root root 0 8月 30 14:20 f10.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f1.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f2.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f3.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f4.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f5.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f6.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f7.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f8.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f9.txt
服務端
[root@mwh backup]# ll
總用量 0
-rw-r--r-- 1 root root 0 8月 30 14:20 f10.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f1.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f2.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f3.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f4.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f5.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f6.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f7.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f8.txt
-rw-r--r-- 1 root root 0 8月 30 14:20 f9.txt
查看日志
[root@ftptest www]# tail -20 /var/log/sync.log
[2020-08-30 14:20:35] /data/www/ CREATE f1.txt
[2020-08-30 14:20:35] /data/www/ ATTRIB f1.txt
[2020-08-30 14:20:35] /data/www/ CREATE f2.txt
[2020-08-30 14:20:35] /data/www/ ATTRIB f2.txt
[2020-08-30 14:20:35] /data/www/ CREATE f3.txt
[2020-08-30 14:20:36] /data/www/ ATTRIB f3.txt
[2020-08-30 14:20:36] /data/www/ CREATE f4.txt
[2020-08-30 14:20:36] /data/www/ ATTRIB f4.txt
[2020-08-30 14:20:36] /data/www/ CREATE f5.txt
[2020-08-30 14:20:36] /data/www/ ATTRIB f5.txt
[2020-08-30 14:20:36] /data/www/ CREATE f6.txt
[2020-08-30 14:20:36] /data/www/ ATTRIB f6.txt
[2020-08-30 14:20:36] /data/www/ CREATE f7.txt
[2020-08-30 14:20:37] /data/www/ ATTRIB f7.txt
[2020-08-30 14:20:37] /data/www/ CREATE f8.txt
[2020-08-30 14:20:37] /data/www/ ATTRIB f8.txt
[2020-08-30 14:20:37] /data/www/ CREATE f9.txt
[2020-08-30 14:20:37] /data/www/ ATTRIB f9.txt
[2020-08-30 14:20:37] /data/www/ CREATE f10.txt
[2020-08-30 14:20:37] /data/www/ ATTRIB f10.txt
同步成功
五只祠、使用iptable實現(xiàn): 放行telnet, ftp, web服務,放行samba服務,其他端口服務全部拒絕
iptables -I INPUT -s 172.16.31.0/24 -p tcp -m multiport --dports 20,21,23,80,139,445 -j ACCEPT
iptables -A INPUT -j drop #其他入站都drop