前幾篇介紹了基礎,這篇將具體實現幾個案例 實現基於文件驗證的vsftpd虛擬用戶,每個用戶獨立一個文件夾 1、創建用戶資料庫文件 備註:文件內容格式為奇數行為用戶名,偶數行為密碼 2、設置許可權與編譯此文件 備註:修改許可權是為了安全 3、創建linux用戶和ftp目錄(這個賬號將來虛擬賬號映射成它) ...
前幾篇介紹了基礎,這篇將具體實現幾個案例
實現基於文件驗證的vsftpd虛擬用戶,每個用戶獨立一個文件夾
1、創建用戶資料庫文件
vim /etc/vsftpd/vusers.txt qq centos momo centos
備註:文件內容格式為奇數行為用戶名,偶數行為密碼
2、設置許可權與編譯此文件
cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db ##編譯文件 chmod 600 vusers.db
備註:修改許可權是為了安全
3、創建linux用戶和ftp目錄(這個賬號將來虛擬賬號映射成它)
useradd -s /sbin/nologin vftpuser chmod 555 /home/vftpuser/ ###把用戶家目錄的寫許可權去掉
備註:映射賬號對根要沒有寫許可權
mkdir upload ##創建上傳用的文件夾 chown vftpuser upload/
備註:把這個文件夾的所屬人改為vftpuser用戶,次用戶雖然對 /home/vftpuser/ 就也是根,沒有寫許可權,但是對根下的目錄有寫許可權。
把匿名寫許可權打開
4、修改pam配置文件
vim /etc/pam.d/vusers.db #這個名字叫什麼都可
auth required pam_userdb.so db=/etc/vsftpd/vusers
註意:這個vusers名字一定要和第二步中創建的xxxx.db名字一樣
account required pam_userdb.so db=/etc/vsftpd/vusers
5、讓主配置文件知道你要用自己修改的pam模塊
備註:放在vusers.txt裡面的就是合法用戶,可以登陸
6、把所有系統賬號映射成我們創建的vftpuser賬號,並關閉linux系統賬號登陸
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES guest_username=vftpuser
7、虛擬用戶建立獨立的配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vftpuser.d/
創建上面這個文件夾創建出來
mkdir /etc/vsftpd/vftpuser.d/
在這個文件夾目錄下創建針對虛擬用戶的配置
[root@centos7_77 vftpuser.d]# cat > qq anon_upload_enable=YES anon_mkdir_write_enable=YES 備註:意思是說虛擬用戶qq有匿名寫許可權
8、讓兩個虛擬用戶進來時看到的文件夾不一樣
vim /etc/vsftpd/vftpuser.d/qq
local_root=/data/qq
備註:要是這個文件夾不存在就創建
mkdir /data/qq
備註:在qq目錄下創建個文件用於測試
touch /data/qq/qq.txt
重啟,測試
備註:想要增加用戶,在vusers.txt文件中寫入,再生成db文件
實現:基於MYSQL驗證的vsftpd虛擬用戶
說明:本實驗在兩台CentOS主機上實現,一臺做為FTP伺服器,一臺做資料庫伺服器
一、安裝所需要包和包組
在資料庫伺服器上安裝包:
Centos7:在資料庫伺服器上安裝
yum –y install mariadb-server systemctl start mariadb.service systemctl enable mariadb
Centos6:在資料庫伺服器上安裝
yum –y install mysql-server
在FTP伺服器上安裝vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
centos7:無對應rpm包,需手動編譯安裝
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd
下載pam_mysql-0.7RC1.tar.gz
https://sourceforge.net/projects/pam-mysql/
1、解壓縮pam模塊
[root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
2、編譯
[root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
備註:這樣需要註意指定的位置,mysql
現在還沒有pam_mysql.so
開始make
[root@centos7_77 pam_mysql-0.7RC1]# make && make install
3、創建資料庫和表
1)創建ftpdb資料庫
MariaDB [(none)]> create database ftpdb;
2)授權一個用戶可以連這個資料庫(有讀許可權就行)
MariaDB [(none)]> grant select on ftpdb.* to vsftpd@'localhost' identified by 'centos';
3)創建一個表
MariaDB [ftpdb]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );
4)往表裡增加虛擬用戶
MariaDB [ftpdb]> INSERT INTO users(name,password) values('gg',password('centos'));
MariaDB [ftpdb]> INSERT INTO users(name,password) values('mm',password('centos'));
3、準備一個pam配置文件(在FTP伺服器上建立pam認證所需文件)
cd /etc/pam.d/ vim vsftpd.mysql auth required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passw ord 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()函數加密
4、讓ftp伺服器知道調用我們配置的pam模塊配置文件
vim /etc/vsftpd/vsftpd.conf
5、映射為系統賬號vftpuser
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES guest_username=vftpuser
備註:意思說,啟動guest用戶,系統用戶映射為guest用戶,而guest用戶是vftpuser,
別忘了去掉此用戶的家目錄的讀W許可權
6、讓登陸的賬號許可權不一樣(針對每個用戶都有自己的配置文件)
指定用戶存放配置的文件夾
vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vftpuser.d cd /etc/vsftpd/vftpuser.d [root@centos7_77 vftpuser.d]# cat > mm local_root=/data/mm cat > gg local_root=/data/gg
備註:要想gg mm 充當虛擬用戶的根必須沒有寫許可權
[root@centos7_77 data]# chmod a=rx mm [root@centos7_77 data]# chmod a=rx gg 再gg、mm目錄下創建個文件好測試 [root@centos7_77 gg]# touch gg.txt [root@centos7_77 mm]# touch mm.txt
重啟
測試
備註:要想讓gg用戶有寫許可權,在/etc/vsftpd/vftpuser.d/gg文件中加入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
還要對/data/gg這個目錄要有寫許可權
setfacl -m u:vftpuser:rwx /data/gg