無錯版Vsftpd+Mysql+Pam配置虛擬使用者方法
一、VSFTPD的安裝
目前,VSFTPD的最新版本是1.2.0版。官方下載地址為。在安裝前,需要先做以下準備工作:
VSFTPD預設配置中需要“nobody”使用者。在系統中新增此使用者,如果使用者已經存在,useradd命令有相應提示。
[root@hpe45 root]# useradd nobody useradd: user nobody exists
VSFTPD預設配置中需要“/usr/share/empty”目錄。在系統中此目錄,如果目錄已經存在,mkdir命令有相應提示。
[root@hpe45 root]# mkdir /usr/share/empty/ mkdir: cannot create directory '/usr/share/empty': File exists
VSFTPD提供匿名FTP服務時,需要“ftp”使用者和一個有效的匿名目錄。
[root@hpe45 root]# mkdir /var/ftp/ [root@hpe45 root]# useradd -d /var/ftp ftp接下來的操作對於ftp使用者是否已經存在都是有用的。
[root@hpe45 root]# chown root.root /var/ftp [root@hpe45 root]# chmod og-w /var/ftp
以上準備工作完成後,我們就可以開始編譯原始碼了。假定我們下載的vsftpd-1.2.0.tar.gz在/root目錄,執行以下命令:[root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz [root@hpe45 root]# cd vsftpd-1.2.0 [root@hpe45 vsftpd-1.2.0]# make [root@hpe45 vsftpd-1.2.0]# make install
上面的“make install”命令將編譯好的二進位制檔案、手冊等複製到相應目錄。在RHL9上,可能需要手動執行以下複製:[root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5 [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
接下來,我們複製一個簡單的配置檔案作為基礎供後面修改。
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp複製PAM驗證檔案,以允許本地使用者登入VSFTPD。
[root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
二、建立guest使用者
VSFTPD採用PAM方式驗證虛擬使用者。由於虛擬使用者的使用者名稱/口令被單獨儲存,因此在驗證時,VSFTPD需要用一個系統使用者的身份來讀取資料庫檔案或資料庫伺服器以完成驗證,這就是VSFTPD的guest使用者。這正如同匿名使用者也需要有一個系統使用者ftp一樣。當然,我們也可以把guest使用者看成是虛擬使用者在系統中的代表。下面在系統中新增vsftpdguest使用者,作為VSFTPD的guest。
[root@hpe45 vsftpd-1.2.0]# useradd vsftpdguest當虛擬使用者登入後,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬使用者登入到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。
三、設定VSFTPD配置檔案
在/etc/vsftpd.conf檔案中,加入以下選項:guest_enable=YES guest_username=vsftpdguest
然後執行以下命令,讓VSFTPD在後臺執行:[root@hpe45 vsftpd-1.2.0]# /usr/local/sbin/vsftpd &
四、將虛擬使用者儲存在MySQL資料庫伺服器中
我們建立資料庫vsftpdvu,表users,欄位name和passwd用於儲存虛擬使用者的使用者名稱和口令,同時增加兩個虛擬使用者xiaotong和xiaowang。
[root@hpe45 vsftpd-1.2.0]# mysql -p mysql>;create database vsftpdvu; mysql>;use vsftpdvu; mysql>;create table users(name char(16) binary,passwd char(16) binary); mysql>;insert into users (name,passwd) values ('xiaotong',password('qqmywife')); mysql>;insert into users (name,passwd) values ('xiaowang',password('ttmywife')); mysql>;quit
然後,授權vsftpdguest可以讀vsftpdvu資料庫的users表。執行以下命令:[root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p mysql>;grant select on vsftpdvu.users to identified by 'i52serial0'; mysql>;quit
如果要驗證剛才的操作是否成功可以執行下面命令:[root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu mysql>;select * from users;如果成功,將會列出xiaotong、xiaowang和加密後的密碼
五、設定MySQL的PAM驗證
這裡我們要用到一個利用mysql進行pam驗證的開源專案()。首先從網站下載它的程式包pam_myql-0.5.tar.gz,複製到/root目錄中。在編譯安裝之前,要確保mysql-devel的RPM包已經安裝在你的機器上,如果沒有請從RHL安裝光碟中安裝該包。然後,執行以下命令:[root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz [root@hpe45 root]#cd pam_mysql [root@hpe45 pam_mysql]#make [root@hpe45 pam_mysql]#make install make install這一步可能會出現錯誤,那隻好手動將該目錄下生成的pam_mysql.so複製到/lib/security目錄下。
接下來,我們要設定vsftpd的PAM驗證檔案。開啟/etc/pam.d/ftp檔案,加入以下內容:auth required pam_mysql.so user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2 account required pam_mysql.so user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2上面涉及到的引數,只要對應前面資料庫的設定就可以明白它們的含義。這裡需要說明的是crypt引數。crypt表示口令欄位中口令的加密方式:crypt=0,口令以明文方式(不加密)儲存在資料庫中;crypt=1,口令使用UNIX系統的DES加密方式加密後儲存在資料庫中;crypt=2,口令經過MySQL的password()函式加密後儲存。
六、進一步的虛擬使用者設定
經過以上的步驟,虛擬使用者就可以正常使用了。這裡介紹進一步的虛擬使用者設定。首先,介紹虛擬使用者的許可權設定。
VSFTPD-1.2.0新添了virtual_use_local_privs引數,當該引數啟用(YES)時,虛擬使用者使用與本地使用者相同的許可權。當此引數關閉(NO)時,虛擬使用者使用與匿名使用者相同的許可權,這也就是VSFTPD-1.2.0之前版本對虛擬使用者許可權的處理方法。這兩者種做法相比,後者更加嚴格一些,特別是在有寫訪問的情形下。預設情況下此引數是關閉的(NO)。
當virtual_use_local_privs=YES時,只需設定write_enable=YES,虛擬使用者就可以就擁有寫許可權。而virtual_use_local_privs=NO時,對虛擬使用者許可權的設定就更多一些更嚴格一些。
控制虛擬使用者瀏覽目錄:如果讓使用者不能瀏覽目錄,但仍可以對檔案操作,那麼需要執行以下二個步驟:一,配置檔案中,anon_world_readable_only=YES。二,虛擬使用者目錄的許可權改為只能由vsftpdguest操作:[root@hpe45 root]# chown vsftpdguest.vsftpdguest /home/vsftpdguest [root@hpe45 root]# chmod 700 /home/vsftpdguest
允許虛擬使用者上傳檔案:
write_enable=YES anon_upload_enable=YES允許虛擬使用者修改檔名和刪除檔案:anon_other_write_enable=YES由於以上選項的設定同樣會對匿名使用者生效。如果不想匿名使用者趁機擁有同樣的許可權,最好是禁止匿名使用者登入。
其次,由於虛擬使用者在系統中是vsftpdguest身份,所以可以訪問到系統的其他目錄。為了更加安全,我們可以將虛擬使用者限制在自家目錄下。有兩種做法:一,在配置檔案中增加以下選項chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list然後,在/etc/vsftpd.chroot_list檔案中加入虛擬使用者名稱xiaotong和xiaowang。
第二種做法,在配置檔案中修改chroot_local_user=YES。
經過修改後,虛擬使用者登入後其根目錄就限制在/home/vsftpdguest下,無法訪問其他目錄。
七、虛擬使用者的個人目錄
大家可以發現,無論是哪個虛擬使用者,登入後所在的目錄都是/home/vsftpdguest,即都是guest_username使用者的自家目錄。下面,介紹如何為每個虛擬使用者建立自家目錄。首先,在主配置檔案中加入以下選項:user_config_dir=/etc/vsftpd/vsftpd_user_conf然後,生成/etc/vsftpd/vsftpd_user_conf目錄,並在該目錄下建立與特定虛擬使用者同名的檔案:[root@hpe45 root]# mkdir /etc/vsftpd/vsftpd_user_conf [root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf [root@hpe45 vsftpd_user_conf]# touch xiaowang以上的操作為虛擬使用者xiaowang建立了個人配置檔案/etc/vsftpd/vsftpd_user_conf/xiaowang。接下來,在xiaowang的個人配置檔案中將xiaowang的自家目錄修改為/home/xiaowang,配置選項為:
local_root=/home/xiaowang然後,新建xiaowang目錄,並將許可權設為vsftpdguest:[root@hpe45 vsftpd_user_conf]# mkdir /home/xiaowang [root@hpe45 vsftpd_user_conf]# chown vsftpdguest.vsftpdguest ./xiaowang [root@hpe45 vsftpd_user_conf]# chmod 600 /home/xiaowang
經過以上設定,xiaowang登入VSFTPD後,用“pwd”指令就可以發現被自己被定位到自己的“/home/xiaowang”目錄。
從檔案系統層次來看,由於“/home/xiaowang”目錄的許可權是屬於vsftpdguest的,所以其他的虛擬使用者同樣也可以訪問xiaowang的自家目錄。解決這個問題也很簡單,我們只需要讓VSFTPD負責將虛擬使用者限制在其自家目錄,就可以避免虛擬使用者的互相訪問。具體做法參照前面第六步中所述,這裡不再贅述。經過以上設定後,虛擬使用者就可以擁有屬於自己的目錄了。
usr/bin/ld: cannot find -lmysqlclient你要把/usr/local/mysql/lib/mysql的檔案拷到/usr/lib/下就不會有這樣的錯誤了。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-937414/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Ubuntu 下 vsftpd的虛擬使用者配置(轉)UbuntuFTP
- VMware虛擬機器配置的最佳化方法虛擬機
- Postfix Dovecot SASL和虛擬使用者的原理與配置
- Linux 配置虛擬IPLinux
- Nginx虛擬主機配置Nginx
- 【Mysql】MHA配置虛擬ipMySql
- Linux中Postfix虛擬使用者及虛擬域(六)Linux
- 虛擬機器(三)虛擬機器配置靜態Ip虛擬機
- 虛擬主機伺服器錯誤404解決方法伺服器
- 虛擬機器VMware“內部錯誤”的解決方法虛擬機
- tomcat6版本虛擬目錄詳細配置Tomcat
- 虛擬環境配置以及xshll配置
- 配置vsftpd匿名使用服務,個人使用者使用以及虛擬使用者使用配置細節!FTP
- 虛擬機器網路卡配置虛擬機
- [php]apache虛擬主機配置PHPApache
- 虛擬機器配置共享磁碟虛擬機
- 使用虛擬機器配置dataguard虛擬機
- Nginx虛擬主機VirtualHost配置Nginx
- 虛擬化環境配置指南
- mac無限試用版Parallels Desktop 17(pd虛擬機器)MacParallel虛擬機
- vsftp vuser虛擬使用者FTP
- win10專業版怎麼執行虛擬機器_win10專業版開啟虛擬機器的方法Win10虛擬機
- Win10開啟FTP與配置(完整無錯版)Win10FTP
- win10虛擬機器無法上網怎麼辦_win10虛擬機器無法上網的解決方法Win10虛擬機
- 一、虛擬機器環境配置虛擬機
- nginx之 nginx虛擬機器配置Nginx虛擬機
- 【Nginx】Nginx虛擬vhost配置檔案Nginx
- tomcat配置虛擬檔案目錄Tomcat
- pycharm配置anaconda虛擬環境PyCharm
- BEA交付WebLogic Server虛擬版WebServer
- vmware克隆虛擬機器centos6.5,虛擬機器從新配置虛擬機CentOS
- nginx伺服器配置多個虛擬主機vhost的方法示例Nginx伺服器
- kvm虛擬化關閉虛擬網路卡virbr0的方法
- Windows8專業版RTM的Hyper-V無線虛擬交換機Windows
- Apache虛擬目錄配置及vue-cli反向代理的設定方法ApacheVue
- 配置虛擬機器NAT模式網路虛擬機模式
- VMware Fusion虛擬機器配置固定IP虛擬機
- Ubuntu apache2配置虛擬主機UbuntuApache