首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

VSFTPD + MySQL 虛擬用戶完整配置實戰(RedHat Linux 9)

     編輯:MySQL 綜合教學

背景與優勢

  • VSFTPD:UNIX/Linux 最安全快速的 FTP 服務,大型站點廣泛採用
  • 虛擬用戶:帳密儲存於資料庫,非系統帳號,僅能訪問 FTP 資源,大幅增強主機安全
  • 優於匿名用戶:需帳密驗證,便於用戶/下載管理
  • 適用場景:提供下載、不想全匿名、需用戶管理、重視主機安全

一、VSFTPD 安裝與基礎準備

[root]# useradd nobody          # 確保 nobody 存在
[root]# mkdir /usr/share/empty   # 確保目錄存在
[root]# mkdir /var/ftp
[root]# useradd -d /var/ftp ftp  # 匿名用戶基礎
[root]# chown root.root /var/ftp
[root]# chmod og-w /var/ftp

編譯安裝 vsftpd-1.2.0

[root]# tar zxvf vsftpd-1.2.0.tar.gz
[root]# cd vsftpd-1.2.0
[root]# make
[root]# make install
# RHL9 可能需手動複製:
[root]# cp vsftpd /usr/local/sbin/vsftpd
[root]# cp vsftpd.conf.5 /usr/local/share/man/man5
[root]# cp vsftpd.8 /usr/local/share/man/man8

基礎配置與 PAM

[root]# cp vsftpd.conf /etc
[root]# cp RedHat/vsftpd.pam /etc/pam.d/ftp  # 允許本地用戶登入

二、建立 guest 系統用戶

[root]# useradd vsftpdguest

虛擬用戶登入後位於 /home/vsftpdguest,需修改家目錄可改 usermod -d。

三、VSFTPD 配置啟用虛擬用戶

# /etc/vsftpd.conf
guest_enable=YES
guest_username=vsftpdguest
[root]# /usr/local/sbin/vsftpd &

四、MySQL 儲存虛擬用戶帳密

[root]# 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

授權 guest 讀取

[root]# mysql -u root mysql -p
mysql> grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
mysql> quit

驗證

[root]# mysql -u vsftpdguest -pi52serial0 vsftpdvu
mysql> select * from users;  # 應顯示兩用戶及加密密碼

五、配置 PAM-MySQL 驗證

使用開源 pam-mysql(下載 pam_mysql-0.5.tar.gz)。

編譯安裝(需 mysql-devel RPM)

[root]# tar xvzf pam_mysql-0.5.tar.gz
[root]# cd pam_mysql
[root]# make
[root]# make install
# 若 make install 失敗,手動複製 pam_mysql.o 至 /lib/security

修改 /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 參數: 0=明文、1=UNIX DES、2=MySQL PASSWORD()(本例用 2)。

六、進階虛擬用戶權限與限制

權限模式

  • virtual_use_local_privs=YES:虛擬用戶享本地用戶權限,配合 write_enable=YES 即可寫入
  • virtual_use_local_privs=NO(預設):同匿名用戶權限,更嚴格

目錄瀏覽控制

anon_world_readable_only=YES
chown vsftpdguest.vsftpdguest /home/vsftpdguest
chmod 700 /home/vsftpdguest

上傳/重命名/刪除權限

write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES

注意:同樣影響匿名用戶,建議禁用匿名登入。

限制於家目錄(chroot)

方法一:名單模式

chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
# 文件內列入 xiaotong、xiaowang

方法二:全域模式

chroot_local_user=YES

七、虛擬用戶專屬家目錄

# 主配置
user_config_dir=/etc/vsftpd/vsftpd_user_conf

# 建立個人配置
[root]# mkdir /etc/vsftpd/vsftpd_user_conf
[root]# touch /etc/vsftpd/vsftpd_user_conf/xiaowang
# 內容:
local_root=/home/xiaowang

# 建立目錄與權限
[root]# mkdir /home/xiaowang
[root]# chown vsftpdguest.vsftpdguest /home/xiaowang
[root]# chmod 600 /home/xiaowang

配合第六節 chroot 設定,防止用戶互訪目錄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved