大綱mysql
1、安裝所須要的軟件包linux
2、建立虛擬用戶帳號sql
3、配置vsftpdshell
4、啓動vsftpd服務並查看 數據庫
5、關閉防火牆與SElinuxvim
6、配置虛擬用戶有不一樣的訪問權限 bash
1、安裝所須要的軟件包
ssh
1. 安裝開發環境tcp
[root@ftp ~]# yum -y groupinstall "Development Tools" "Development Libraries"
2. 安裝mysql數據庫ide
[root@ftp ~]# yum -y install mysql-server mysql-devel [root@ftp pam.d]# chkconfig mysqld on #開機自啓動 [root@ftp pam.d]# chkconfig mysqld --list mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@ftp pam.d]#
3. 安裝 pam_mysql
[root@ftp ~]# wget http://sourceforge.net/projects/pam-mysql/files/latest/download/pam_mysql-0.7RC1.tar [root@ftp ~]# tar xf pam_mysql-0.7RC1.tar.gz [root@ftp ~]# cd pam_mysql-0.7RC1 [root@ftp pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-openssl [root@ftp pam_mysql-0.7RC1]# make && make install
編譯過程當中出錯:
configure: error: Cannot find pam headers. Please check if your system is ready for pam module development.
解決方法:
[root@ftp pam_mysql-0.7RC1]# yum install -y pam-devel
說明:安裝完以後,相應的庫文件被安裝在/lib/security目錄中,
[root@ftp ~]# cd /lib/security/ [root@ftp security]# ls pam_mysql.la pam_mysql.so [root@ftp security]#
4. 安裝 vsftpd
[root@ftp pam_mysql-0.7RC1]# yum -y install vsftpd [root@ftp pam.d]# chkconfig vsftpd on #開機自啓動 [root@ftp pam.d]# chkconfig vsftpd --list vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@ftp pam.d]#
2、建立虛擬用戶帳號
首先請確保mysql服務已經正常啓動。然後,按須要創建存儲虛擬用戶的數據庫便可,這裏將其建立爲vsftpd數據庫。
1. 啓動mysql數據庫
[root@ftp ~]# service mysqld start Starting mysqld: [ OK ] [root@ftp ~]#
2. 登陸並建立數據庫及相關表
[root@ftp ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.69 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
(1). 建立數據庫vsftpd
mysql> create database vsftpd; Query OK, 1 row affected (0.00 sec)
(2). 建立受權
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456'; #給vsftpd受權 Query OK, 0 rows affected (0.01 sec) mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456'; #給vsftpd受權 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
(3). 建立users表
mysql> use vsftpd; Database changed mysql> create table users ( -> id int AUTO_INCREMENT NOT NULL, -> name char(20) binary NOT NULL, -> password char(48) binary NOT NULL, -> primary key(id) -> ); Query OK, 0 rows affected (0.02 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | vsftpd | +--------------------+ 4 rows in set (0.00 sec)
(4). 測試vsftpd是否能夠正常查詢數據庫信息
3. 添加測試的虛擬用戶
說明:根據須要添加所須要的用戶,須要說明的是,這裏將其密碼採用明文格式存儲,緣由是pam_mysql的password()函數與MySQL的password()函數可能會有所不一樣。
mysql> insert into users(name,password) values('tom','123456'); Query OK, 1 row affected (0.01 sec) mysql> insert into users(name,password) values('jerry','654321'); Query OK, 1 row affected (0.00 sec) mysql> select * from users; +----+-------+----------+ | id | name | password | +----+-------+----------+ | 1 | tom | 123456 | | 2 | jerry | 654321 | +----+-------+----------+ 2 rows in set (0.00 sec) mysql>
注:在vsftpd數據庫中建立表users,包含name和password兩個字段,在表中插入tom和jerry兩條用戶的記錄,其中123456和654321爲密碼,查詢用戶信息。
3、配置vsftpd
1. 創建pam認證所需文件
[root@ftp ~]# cd /etc/pam.d/ [root@ftp pam.d]# ls chfn fingerprint-auth passwd run_init smtp sudo vsftpd chsh fingerprint-auth-ac password-auth runuser smtp.postfix sudo-i config-util login password-auth-ac runuser-l sshd su-l crond newrole polkit-1 smartcard-auth ssh-keycat system-auth cvs other remote smartcard-auth-ac su system-auth-ac [root@ftp pam.d]# vim vsftpd.mysql auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn =name passwdcolumn=password crypt=0 account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercol umn=name passwdcolumn=password crypt=0
說明:
其中user 是讀取mysql數據庫時使用的用戶名,passwd 爲其對應的密碼,host指定mysql數據庫所在的主機,db指定存放虛擬用戶的數據庫,table指定存放虛擬用戶的表,usercolumn、passwdcolumn是指定表中存放用戶名和密碼的字段。
crypt指定密碼字段是以什麼方式存儲到數據庫中
(1)crypt=0表示以明文保存密碼
(2)crypt=1表示使用crypt( )函數加密保存密碼
(3)crypt=2表示使用mysql中的password( )函數加密保存密碼
(4)crypt=3表示使用md5的方式保存密碼
2. 創建虛擬用戶映射的系統用戶及對應的目錄
[root@ftp pam.d]# useradd -s /sbin/nologin -d /var/ftproot vuser #-d 指定家目錄的位置 -s 指定用戶登陸的shell,若是爲用戶分配的shell是/sbin/nologin,則該用戶是不能登陸到系統的。 [root@ftp pam.d]# chmod go+rx /var/ftproot #修改家目錄權限
3. 修改/etc/vsftpd/vsftpd.conf 中的選項
anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES
4. 添加如下選項(增長guest訪問)
guest_enable=YES guest_username=vuser
5. 修改pam_service_name選項的值
pam_service_name=vsftpd.mysql
4、啓動vsftpd服務並驗證
1. 啓動vsftpd服務
[root@ftp pam.d]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@ftp pam.d]#
2. 查看端口狀況
[root@ftp pam.d]# netstat -ntulp | grep :21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 17662/vsftpd [root@ftp pam.d]#
3. 使用虛擬用戶登陸,驗正配置結果,如下爲本機的命令方式測試,你也能夠在其它Windows上用IE或者FTP客戶端工具登陸驗
(1). tom用戶登陸
[root@ftp pam.d]# yum install -y ftp [root@ftp pam.d]# ftp localhost [root@ftp pam.d]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:root): tom 331 Please specify the password. Password: 230 Login successful. #登陸成功 Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 227 Entering Passive Mode (127,0,0,1,102,198). 150 Here comes the directory listing. 226 Directory send OK. ftp>
(2). jerry 用戶登陸
[root@ftp pam.d]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:root): jerry 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 227 Entering Passive Mode (127,0,0,1,161,81). 150 Here comes the directory listing. 226 Directory send OK. ftp>
(3). Windows 下測試
5、關閉防火牆與SElinux
說明:博友能夠看到咱們這裏能夠登陸,但有的朋友登陸不了,是由於防火牆與SELinux,咱們這裏先關閉
[root@ftp ~]# service iptables stop [root@ftp ~]# service ip6tables stop [root@ftp ~]# setenforce 0 setenforce: SELinux is disabled [root@ftp ~]# getenforce Disabled
這樣就能夠正常登陸了,嘿嘿!
6、配置虛擬用戶有不一樣的訪問權限
說明:vsftpd能夠在配置文件目錄中爲每一個用戶提供單獨的配置文件以定義其ftp服務訪問權限, 每一個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄能夠是任意未使用目錄, 只須要在vsftpd.conf指定其路徑及名稱便可。
一、配置vsftpd爲虛擬用戶使用配置文件目錄
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf 添加以下選項 user_config_dir=/etc/vsftpd/vusers_dir
二、建立所須要目錄,併爲虛擬用戶提供配置文件
[root@ftp ~]# mkdir /etc/vsftpd/vusers_dir/ [root@ftp ~]# cd /etc/vsftpd/vusers_dir/ [root@ftp vusers_dir]# touch tom jerry [root@ftp vusers_dir]# ls jerry tom [root@ftp vusers_dir]#
三、配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是經過匿名用戶的相關指令進行的。好比,若是須要讓tom用戶具備上傳文件的權限,能夠修改/etc/vsftpd/vusers/tom文件,在裏面添加以下選項便可。
[root@ftp vusers_dir]# vim tom anon_upload_enable=YES [root@ftp vusers_dir]# vim jerry anon_mkdir_write_enable=YES
4. 修改 /etc/vsftpd/vsftpd.conf 配置
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf anon_upload_enable=NO anon_mkdir_write_enable=NO [root@ftp ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [root@ftp ~]#
5. 測試
(1). tom登陸測試
(2). jerry 登陸測試
全部演示所有結束!^_^ ……