vsftpd:
程序環境:
配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
Unit File:/usr/lib/systemd/system/vsftpd.service
文件路徑映射:/var/ftp
ftp://ftp.magedu.com/pub/a.txt –> /var/ftp/pub/a.txt
用戶的家目錄的映射:訪問ftp必須以某個系統用戶的身份,此用戶的家目錄即文檔目錄;
匿名用戶:anonymous,要映射為一個系統用戶,默認ftp;
用戶種類:
匿名用戶、系統用戶、虛擬用戶
配置vsftpd:
配置文件:vsftpd.conf
directive value
注意:directive之前不能有任何字符;
匿名用戶:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
系統用戶:
local_enable=YES
write_enable=YES
輔助認證配置文件/etc/vsftpd/ftpusers:
pam認證的配置文件:/etc/pam.d/vsftpd
chroot_local_users=YES
禁錮所有的本地用戶于自己的家目錄中;但需要事先移除用戶對家目錄的寫權限;
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁錮指定的文件中的用戶于自己的家目錄中;但需要事先移除用戶對家目錄的寫權限;
數據傳輸日志:
xferlog_std_format=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
控制可登錄vsftpd服務的用戶列表:
userlist_enable=YES
是否啟用/etc/vsftpd/user_list文件來可登錄的用戶;
userlist_deny={YES|NO}
YES:黑名單
NO:白名單
虛擬用戶:
用戶賬號存儲于何處?
文件,MySQL,Redis, …
vsftpd的認證功能托管給pam:
Pluggable Authencate Module,認證框架,認證庫;
通過模塊完成認證功能:/usr/lib64/security/
pam_mysql模塊:
# ./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
# make
# make install
準備數據庫:
mysql> CREATE DATABASE vsftpd;
mysql> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));
mysql> INSERT INTO vsftpd.users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu'));
mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'mageedu';
mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';
mysql> FLUSH PRIVILEGES;
vsftpd通過pam_mysql進行認證的配置文件:/etc/pam.d/vsftpd.mysql
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
user:連接mysql服務器的用戶名,此用戶要有權限訪問認證vsftpd服務的數據庫;
passwd:上面的用戶的密碼;
host:mysql服務器主機地址;
db:認證vsftpd服務的數據庫名稱;
table:存放了用戶和密碼的表;
usercolumn:用戶名對應的字段;
passwdcolumn:密碼對應的字段;
crypt:密碼加密方法;
準備匿名用戶映射的系統用戶賬號:
# mkdir /ftproot
# useradd -d /ftproot vuser
# mkdir /ftproot/{pub,upload}
# setfacl -m u:vuser:rwx /ftproot/upload
配置vsftpd:vsftpd.conf
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
配置每匿名用戶有單獨的權限設定
vsftpd.conf,添加:
user_config_dir=/etc/vsftpd/users_conf
創建目錄:
# mkdir /etc/vsftpd/vusers_conf
為每用戶提供配置文件:
/etc/vsftpd/vusers_conf/{tom,jerry}
配置權限的指令:
anon_upload_enable
anon_mkdir_write_enable
anon_other_write_enable
原創文章,作者:songzizhe,如若轉載,請注明出處:http://www.www58058.com/55874