帳戶資訊存儲在文字檔不是很方便,那就把帳戶資訊存儲在mysql中:

這種情況pam認證模組需要依賴與pam-mysql

Yum  install -y pam_mysql(需要epel-release)

或下載pam_mysql編譯安裝:

wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz

 yum install -y openssl openssl-devel pam-devel gcc-c++

tar xvf pam_mysql-0.7RC1.tar.gz

cd    pam_mysql-0.7RC1

 ./configure –with-openssl –with-pam-mods-dir=/lib64/security/

 make  && make install完成編譯安裝

安裝vsftpd:yum install -y vsftpd

安裝mariadb(mysql):yum install -y mariadb  mariadb-server

啟動mariadb:systemctl start mariadb s

創建users:

create table if not exists `users` (

     `id` int(100) primary key auto_increment not null,

     `username` char(20) not null,

     `password` char(48) not null,

     key(`id`,`user`,`password`)

)engine=innodb default charset utf8 collate utf8_general_ci;

圖示如下:

也可以在char後面跟上   binary 表示區分大小寫。

插入資料使用password()函數將密碼加密

insert into users(`username`,`password`) values(‘admin’,password(‘190036’));

創建vsftpd資料庫帳戶並授權:grant select on vsftpd.* to vsftpd@% identified by 190036 with grant option;

刷新許可權:flush privileges

退出資料庫:exit

/etc/pam.d/下添加vsftpd.mysql檔,存儲資料庫帳戶資訊

auth required  /lib64/security/pam_mysql.so  user(資料庫帳戶名)=vsftpd   passwd=’190036′  host=localhost  db=vsftpd  table=users   usercolumn=username   passwdcolumn=password  crypt=2

account   required  /lib64/security/pam_mysql.so  user(資料庫帳戶名)=vsftpd   passwd=’190036′  host=localhost  db=vsftpd  table=users   usercolumn(哪個欄位是用戶名)=username   passwdcolumn(哪個欄位是密碼)=password  crypt(加密方式)=2

圖示如下:

建立系統帳戶使用者映射虛擬帳戶:

useradd    -s  /sbin/nologin   -d    /ftp(自訂家目錄)    vuser    

注意事項:vsftpd.conf設定檔必須允許匿名使用者存取。本地系統是否訪問不重要。

即anonymous_enable=YES

開啟來賓帳戶訪問:guest_enable=YES

所有來賓帳號都映射在vsftpd系統帳戶上
guest_username=vsftpd

確保pam_service_name=vsftpd.mysql(該選項只能確保虛擬帳戶可以登錄。系統帳戶只能使用pam_service_name=vsftpd)

先備份vsftpd.conf設定檔   :cp /etc/vsftpd/vsftpd.conf{,.back}

過濾掉以#開頭的內容並覆蓋掉vsftpd.conf裡的內容。

grep -v “^#” /etc/vsftpd/vsftpd.conf.back>/etc/vsftpd/vsftpd.conf

現在vim /etc/vsftpd/vsftpd.conf看到內容很簡潔

最後配置如下:

分別給與虛擬帳戶許可權:

Vsftpd.conf寫入:

user_config_dir=/etc/vsftpd/users_conf

先建立使用者配置目錄:

mkdir /etc/vsftpd/users_conf

cd  /etc/vsftpd/users_conf

touch  tom

 啟動vsftpd:systemctl start vsftpd

在users_conf目錄創建多個文字檔,一個帳戶對應一個文字檔。每個文字檔設置不同的許可權。許可權按照匿名帳戶的幾個許可權進行設置。

安裝ftp用戶端:yum  install -y  ftp

ftp   ip地址

輸入帳戶和密碼

注意事項:centos7如果開啟防火牆

則執行

firewall-cmd –zone=public  –add-port=80/tcp –permanent

firewall-cmd –zone=public  –add-port=3306/tcp –permanent

firewall-cmd –zone=public  –add-port=21/tcp –permanent

firewall-cmd  –zone=public –add-port=20/tcp –permanent

重新載入配置生效:

Firewall-cmd –reload

打赏