標籤:搭建ftp基於mysql
實驗環境:需要兩台主機
1、一台mariadb server
2、一台ftp server
一、mariadb伺服器
1、安裝mariadb包
yum install mariadb-devel
2、跑下安全指令碼
mysql_secure_installation
3、建立資料庫
mysql -uroot -p
>create database vsftpd;
>use vsftpd
>create table ftpusers(name char(30),pass char(50));(建立表)
>insert ftpusers values(‘ftp1‘,password(‘centos‘)),(‘ftp2‘,password(‘magedu‘));(添加表內容)
>grant select on vsftpd.ftpusers to ‘ftp‘@‘172.17.166.166‘ identified by ‘centos‘;(給[email protected]授權)
二、ftp伺服器
1、安裝包組以及所需要的包
yum groupinstall "development tools"
yum install mysql-devel pam-devel
2、編譯安裝 pam_mysql-0.7RC1.tar.gz
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-pam-mods-dir=/lib64/security --with-pam=/usr
make && make install
3、建立使用者
useradd -d /app/ftpdir -r -m ftpuser (建立系統使用者,使所有使用者訪問都指向ftpuser)
4、編寫模組設定檔
vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=ftp passwd=centos host=172.17.177.177 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
account required pam_mysql.so user=ftp passwd=centos host=172.17.177.177 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
其中選項為:
auth 表示認證
account 驗證帳號密碼正常使用
required 表示認證要通過
pam_mysql.so模組是預設的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕對路徑;後面為給此模組傳遞的參數
user=vsftpd為登入mysql的使用者
passwd=magedu 登入mysql的的密碼
host=mysqlserver mysql伺服器的主機名稱或ip地址
db=vsftpd 指定串連msyql的資料庫名稱
table=users 指定串連資料庫中的表名
usercolumn=name 當做使用者名稱的欄位
passwdcolumn=password 當做使用者名稱欄位的密碼
crypt=2 密碼的加密方式為mysql password()函數加密
5、更改ftp設定檔
vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql 修改
再加下面行
guest_enable=yes(開啟指定使用者選項)
guest_username=ftpuser(指定使用者)
user_config_dir=/etc/vsftpd/conf.d/(指定目錄,使其每個虛擬使用者的許可權不同)
6、建立目錄
mkdir /etc/vsftpd/conf.d/
cd /etc/vsftpd/conf.d/
vim /etc/vsftpd/conf.d/ftp1
anon_upload_enable=yes(允許ftp1上傳檔案)
vim /etc/vsftpd/conf.d/ftp2
local_root=/app/ftpdir2(指定ftp2的根檔案為/app/ftpdir2)
7、設定許可權
cd /app
chmod 555 /app/ftpdir/(根目錄不能有寫入權限)
mkdir /app/ftpdir/upload
chown ftpuser /app/ftpdir/upload
mkdir /app/ftpdir2
chmod 555 /app/ftpdir2
三、測試是否成功
用ftp1登入測試
650) this.width=650;" src="https://s2.51cto.com/oss/201710/28/736dbfe54a41881947ecdaec0a918e29.jpg" title="1.jpg" alt="736dbfe54a41881947ecdaec0a918e29.jpg" />當看到這個狀態時候,證明ftp1測試成功
用ftp2登入測試
650) this.width=650;" src="https://s1.51cto.com/oss/201710/28/acb22997ee58577bf1ded638925c3e80.jpg" title="2.jpg" alt="acb22997ee58577bf1ded638925c3e80.jpg" />
當看到這個狀態時,證明ftp2也沒問題。那麼恭喜你,已經成功搭建好基於mysql的ftp!!!!
建立基於mysql的ftp虛擬使用者