中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行VSFTP+MySQL虛擬用戶配置

發布時間:2021-11-20 10:51:36 來源:億速云 閱讀:108 作者:柒染 欄目:數據庫

本篇文章為大家展示了如何進行VSFTP+MySQL虛擬用戶配置,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

  VSFTPD是一種在UNIX/Linux中非常安全且快速的FTP服務器,目前已經被許多大型站點所采用。VSFTPD支持將用戶名和口令保存在數據庫文件或數據庫服務器中。VSFTPD稱這種形式的用戶為虛擬用戶。相對于FTP的本地(系統)用戶來說,虛擬用戶只是FTP服務器的專有用戶,虛擬用戶只能訪問FTP服務器所提供的資源,這大大增強系統本身的安全性。相對于匿名用戶而言,虛擬用戶需要用戶名和密碼才能獲取FTP服務器中的文件,增加了對用戶和下載的可管理性。對于需要提供下載服務,但又不希望所有人都可以匿名下載;既需要對下載用戶進行管理,又考慮到主機安全和管理方便的FTP站點來說,虛擬用戶是一種極好的解決方案。本文介紹在RedHat Linux 9上如何將VSFTPD的虛擬用戶名和密碼保存在MySQL數據庫服務器中。

  一、VSFTPD的安裝

  目前,VSFTPD的最新版本是1.2.0版。官方下載地址為ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz。在安裝前,需要先做以下準備工作:

  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 vsftpdguest@localhost identified by 'i52serial0';

  mysql>quit

  如果要驗證剛才的操作是否成功可以執行下面命令:

  [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu

  mysql>select * from users;

  如果成功,將會列出xiaotong、xiaowang和加密后的密碼

  五、設置MySQL的PAM驗證

  這里我們要用到一個利用mysql進行pam驗證的開源項目(http://sourceforge.net/projects/pam-mysql/)。首先從網站下載它的程序包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.o復制到/lib/security目錄下。

  接下來,我們要設置vsftpd的PAM驗證文件。打開/etc/pam.d/ftp文件,加入以下內容:

  auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2

  account required pam_mysql.o 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

上述內容就是如何進行VSFTP+MySQL虛擬用戶配置,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠东县| 荆州市| 宿迁市| 阳信县| 新野县| 林州市| 寿阳县| 哈巴河县| 确山县| 辽宁省| 科技| 安阳县| 泸西县| 玉山县| 凤山县| 福海县| 密山市| 太康县| 新宁县| 府谷县| 马龙县| 黑水县| 庄浪县| 新营市| 东乡族自治县| 阿拉善盟| 宝丰县| 泰顺县| 辽阳市| 融水| 青海省| 长武县| 阳江市| 曲阜市| 来安县| 论坛| 西贡区| 来凤县| 兰坪| 什邡市| 油尖旺区|