FTP:file transfer protocol(文件共享服务)
监听于21/tcp
工作于应用层
- # yum install -y vsftpd
- # service vsftpd start 启动服务
- # chkconfig vsftpd on
- # chkconfig --list vsftpd
- # cd /var/ftp/ 有一个pub目录,默认使用pub存储公开出去的文件
- # yum install mysql-devel mysql-server
- # service mysqld start
- # tar xf pam_mysql-0.7RC1.tar.gz
- # cd pam_mysql-0.7RC1
- # ./configure --with-mysql=/usr --with-openssl
- # make
- # make install
- # mysql
- mysql> create database vsftpd;
- mysql> use vsftpd
- mysql> create table users(id smallint auto_increment not null,name char(20) binary not null,password char(48) binary not null, primary key(id));
- mysql> desc users;
- mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsftpd';
- mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsftpd';
- mysql> insert into users(name,password) value ('tom','redhat'),('jerry','redhat');
- mysql> select * from users;
使用所建立的用户登录ftp服务器
- # vim /etc/pam.d/vsftpd.mysql
- auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
- account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
- #useradd -s /sbin/nologin -d /var/ftproot vuser
- #chmod go+rx /var/ftproot
- # vim /etc/vsftpd/vsftpd.conf
- anonymous_enable=YES
- local_enable=YES
- write_enable=YES
- anon_upload_enable=NO
- anon_mkdir_write_enable=NO
- chroot_local_user=YES
- 而后添加以下选项
- guest_enable=YES
- guest_username=vuser
- 并确保pam_service_name选项的值如下所示
- pam_service_name=vsftpd.mysql
- # service vsftpd restart
- # cp /etc/fstab /var/ftproot/
- vim /etc/vsftpd/vsftpd.conf
- 添加如下行:
- user_config_dir=/etc/vsftpd/vusers
- # mkdir /etc/vsftpd/vusers
- # cd /etc/vsftpd/vusers
- # touch tom jerry
- anon_upload_enable=NO 定义不允许上传文件
- # vim jerry
- anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许建立目录
anon_other_write_enable=YES 允许删除文件
- anonymous_enable=YES 是否允许匿名用户
- local_enable=YES 是否启用系统用户
- 例: # useradd hadoop
- # echo "hadoop" |passwd --stdin hadoop
- 建立系统用户,就可以使用账号密码登录啦,可以切换到别的目录
- write_enable=YES 是否能上传文件,定义的是系统用户
- anon_upload_enable=YES 是否允许匿名用户可以上传文件
- anon_other_write_enable=YES 匿名用户可以上传文件
- anon_mkdir_write_enable=YES 匿名用户可以建立目录
- anon_other_write_enable=YES 其他用户有写权限
- dirmessage_enable=YES 当用户进入一个目录,是否显示欢迎信息
- 例:# vim /var/ftp/upload/.message
- --welcome to our ftp
- xferlog_enable=YES 是否打开传输日志
- xferlog_file=/var/log/vsftpd.log 传输文件的日志
- xferlog_std_format=YES 日志是否使用标准格式
- ftpd_banner=Welcome to blah FTP service. 显示欢迎信息
- #chown_uploads=YES 当用户上传完成后,是否把属主改为其他用户
- #chown_username=whoever
- idle_session_timeout=600 用户时间超过600秒就断开
- #ascii_upload_enable=YES 是否使用纯文本格式上传和下载,建议不要启用
- #ascii_download_enable=YES
- chroot_list_enable=YES 将匿名用户锁定在文件下
- chroot_list_file=/etc/vsftpd/chroot_list 禁锢那些用户
- chroot_local_user=YES 所有用户都将被禁锢
- pam_service_name=vsftpd pam下vsftp文件的名字,接受pam认证
- tcp_wrappers=YES
- max_clients=# 最多允许的客户端个数
- max_per_ip=# 一个用户最多发起几个请求
实现上传文件与下载,目录的建立