您好,登錄后才能下訂單哦!
實驗準備:本實驗在兩臺CentOS主機上實現,一臺做為FTP服務 器,一臺做數據庫服務器
yum –y install mariadb-server
systemctl start mariadb
# 設為開機自動啟動
systemctl enable mariadb
"mysql_secure_installation"
第一項問你:輸入root密碼 回車即可,因為沒有
第二項問你:需要設置root密碼么,當然要 敲Y
第三項問你:需要刪除空賬號用戶么,當然要 敲Y
第四項問你:禁止root用戶遠程登入么,根據你們公司的需要
第五項問你:需要刪除test測試數據哭么,我不需要
第六項問你:現在重新加載權限表嗎 ,當然
1,創建存儲虛擬用戶數據庫和連接的數據庫用戶(帶有mysql>的就表示需要連接到數據庫執行操作)
#創建數據庫
mysql> CREATE DATABASE vsftpd;
#查看數據庫是否創建成功
mysql> SHOW DATABASES;
2,創建管理vsftpd數據庫的用戶。
mysql> GRANT all ON vsftpd.* TO vsftpd@'192.168.136.6' IDENTIFIED BY 'centos';
命令解析:
GRANT: 創建授權用戶關鍵字
all : 表示擁有對vsftpd這個數據庫的所有權限
vsftpd.*: 表示指定vsftpd的所有表
vsftpd@'192.168.136.6': @ 前的vsftpd表示用戶名,@ 后面的表示該用戶只能在192.168.136.6這個主機登入,如果想表示一個網段可以加百分號:192.168.136.%
IDENTIFIED BY 'centos': 作用設置密碼,centos就是該用戶的密碼。
準備存放用戶的相關表
#切表
mysql> USE vsftpd;
#查看表
Mysql> SHOW TABLES;
#創建users表
mysql>create table users (id int auto_increment not null primary key,name varchar(30) binary not null, password varchar(50) binary not null);
命令解析:
create table users:創建表名為users子句
口號里的就表結構,用逗號分開的表示字段例如:第一個字段為id,第二個字段為name,第三個字段為password
修飾符:
int: 表示該字段為數字,
auto_increment:表示該字段是整數自動增長
not null: 表示該字段不能為空
primary key: 表示該字段為主鍵
varchar(30): 表示該字段可以是任意字符長度為30個
binary: 作用是讓字段能夠用于登入驗證
在user表中添加虛擬用戶
根據需要添加所需要的用戶,為了安全應該使用PASSWORD 函數加密其密碼后存儲
#查看表結構
mysql>DESC users;
#插入內容
mysql> INSERT INTO users(name,password) values('wang',password('wang'));
#插入內容
mysql> INSERT INTO users(name,password) values('li',password('li'));
#查看表內容
mysql> SELECT * FROM users;
centos6:pam_mysql由epel6的源中提供
配置epel源:
[epel]
name=centos-epel
baseurl=http://mirrors.aliyun.com/epel/6/x86_64/
gpgcheck=0
enable=1
#安裝模塊,以及FTP服務器端包
yum install vsftpd pam_mysql
因為需要連接數據庫所以之前的PAM塊已經不能用了,需要自己配置
在/etc/pam.d/目錄下創建一個名為vsftpd.mysql存放PAM模塊的配置文件
cd /etc/pam.d/
touch vsftpd.mysql
vim vsftpd.mysql
添加如下幾行:
auth required pam_mysql.so user=vsftpd passwd=centos host=數據庫IP地址 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=數據庫IP地址 db=vsftpd table=users usercolumn=name passwdcolumn=password 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()函數加密
注意 :crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函數加密,3表示md5加密,4表示sha1 加密
一,創建用戶,共享目錄
#創建虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
#修改對應的目錄權限,因為FTP共享根目錄不能有寫權限
chmod 555 /var/ftproot
#創建可以上傳下載的共享目錄
mkdir /var/ftproot/{upload,pub}
#并給vuser用戶ACL權限
setfacl –m u:vuser:rwx /var/ftproot/upload
修改主配置文件
確認/etc/vsftpd.conf中是否已經啟用了以下選項
#支持匿名用戶登入
anonymous_enable=YES
#添加下面兩項 ,作用是支持虛擬用戶映射為某一個系統用戶
guest_enable=YES
guest_username=vuser
#修改下面一項,原系統用戶無法登錄
pam_service_name=vsftpd.mysql
#啟動服務
service vsftpd start
#開機自動啟動
chkconfig vsftpd on
#查看端口打開情況
ss -ntlp|grep :21
1,restorecon -R /lib64/security
2,setsebool -P ftpd_connect_db 1
3,setsebool -P ftp_home_dir 1
4,chcon -R -t public_content_rw_t /var/ftproot/
1,li用戶登入測試:成功
[root@ansible-7 ~]# ftp 192.168.136.6
Connected to 192.168.136.6 (192.168.136.6).
220 (vsFTPd 2.2.2)
Name (192.168.136.6:root): li
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
2,wang用戶登入測試:成功
[root@ansible-7 ~]# ftp 192.168.136.6
Connected to 192.168.136.6 (192.168.136.6).
220 (vsFTPd 2.2.2)
Name (192.168.136.6:root): wang
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
1,修改主配置文件
vim /etc/vsftpd/vsftpd.conf
添加如下選項,作用是讓虛擬用戶支持獨立權限配置文件,可以自定義存放目錄。
user_config_dir=/etc/vsftpd/vusers_config/
2,在/etc/vsftpd/vusers_config/目錄下創建每個虛擬用戶的權限配置文件,文件名對應用戶名
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch wang
touch li
"注意:虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關 指令進行的。 "
下面的權限都可以添加至文件中,需要什么權限添加什么權限
#是否支持上傳功能
anon_upload_enable={YES|NO}
#是否支持創建文件功能
anon_mkdir_write_enable={YES|NO}
#是否支持刪除文件功能
anon_other_write_enable={YES|NO}
#指定虛擬賬戶登入的共享目錄
local_root=/ftproot
例如:讓wang用戶支持上傳,下載,刪除文件的權限那么只需要在wang的權限配置文件中添加如下幾行
"注意:需確保對應的映射用戶對于文件系統有寫權限"
vim wang
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
步驟:
# 安裝開發包組
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/
# 解壓縮包
tar xvf pam_mysql-0.7RC1.tar.gz
# 進入pam_mysql-0.7RC1/目錄開始編譯
cd pam_mysql-0.7RC1/
# 運行configure腳本
./configure \
--with-mysql=/usr \
--with-pam=/usr \
--with-pam-mods-dir=/lib64/security
# 編譯開始
make -j 4
# 安裝程序
make install
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。