CentOS6安装vsftpd
练习:完成vsftpd配置
(1) 禁锢系统用户于家目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@node3 ~] # yum -y install vsftpd [root@node3 ~] # vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES // 大概在102行,启用此处的配置语句 [root@node2 ~] # ftp 10.1.43.103 Connected to 10.1.43.103 (10.1.43.103). 220 (vsFTPd 3.0.2) Name (10.1.43.103:root): gao 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp > ls 227 Entering Passive Mode (10,1,43,103,28,138). 150 Here comes the directory listing. drwxr-xr-x 2 0 0 6 Oct 13 09:47 pub drwxrwxrwx 3 0 0 4096 Oct 15 12:50 upload 226 Directory send OK. ftp > pwd 257 "/" #禁锢成功 |
(2) 基于mysql进行用户认证
安装pam_mysql模块:
CentOS6
1 | [root@node3 ~] # yum -y install pam_mysql <CentOS 6上> |
CentOS7
1 2 3 4 5 6 7 | [root@node3 ~] # yum -y install mariadb-devel pam-devel [root@node3 ~] # wget 10.1.0.1:/pub/Sources/sources/pam/pam_mysql-0.7RC1.tar.gz [root@node3 ~] # tar -xf pam_mysql-0.7RC1.tar.gz [root@node3 ~] # cd pam_mysql-0.7RC1 [root@node3 pam_mysql-0.7RC1] # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security [root@node3 pam_mysql-0.7RC1] # make [root@node3 pam_mysql-0.7RC1] # make install |
修改vsftpd的配置文件:
1 2 3 4 5 | [root@node3 ~] # vim /etc/vsftpd/vsftpd.conf guest_enable=YES // 在末尾写上此3行,并把末尾向上5-6的位置中的 pam_service_name 这行注释掉 guest_username=vuser pam_service_name=vsftpd.mysql |
建立数据库:
1 2 3 4 5 6 7 8 | [root@node3 ~] # mysql 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进行认证的配置文件:
1 2 3 | [root@node3 ~] # vim /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 |
准备匿名用户映射的系统用户账号:
1 2 3 4 | [root@node3 ~] # mkdir /ftproot [root@node3 ~] # useradd -d /ftproot vuser [root@node3 ~] # mkdir /ftproot/{pub,upload} [root@node3 ~] # setfacl -m u:vuser:rwx /ftproot/upload |
登录用户:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@node2 ~] # ftp 10.1.43.103 Connected to 10.1.43.103 (10.1.43.103). 220 (vsFTPd 3.0.2) Name (10.1.43.103:root): tom 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp > ls 227 Entering Passive Mode (10,1,43,103,215,37). 150 Here comes the directory listing. drwxr-xr-x 2 0 0 6 Oct 13 09:47 pub drwxrwxrwx 3 0 0 4096 Oct 15 12:50 upload 226 Directory send OK. |
(3) 不同的虚拟用户拥有不同的权限设定
在配置(2)的基础上,配置每匿名用户有单独的权限设定
1 2 | [root@node3 ~] # vim /etc/vsftpd/vsftpd.conf user_config_dir= /etc/vsftpd/vusers_conf #在末尾追加此语句 |
创建目录:
1 | [root@node3 ~] # mkdir /etc/vsftpd/vusers_conf |
为每用户提供配置文件:
1 | [root@node3 ~] # /etc/vsftpd/vusers_conf/{tom,jerry} |
配置权限的指令:
1 2 3 4 5 6 7 8 | [root@node3 ~] # vim /etc/vsftpd/vusers_conf/tom anon_upload_enable=YES|NO #注意不给指令:默认为NO anon_mkdir_write_enable=YES|NO anon_other_write_enable=YES|NO [root@node3 ~] # vim /etc/vsftpd/vusers_conf/jerry anon_upload_enable=YES|NO anon_mkdir_write_enable=YES|NO anon_other_write_enable=YES|NO |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程