ftp服务
一、ftp
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
二、ftp实验
1、准备工作
首先需要配置好ip和yum源
ip的配置
yum源
更改SELINUX=disabled
reboot (更改完成后一定要reboot)
getenforce (出现Disabled即为成功)
2、开始实验
systemctl start vsftpd 开启ftp服务
systemctl enable vsftpd 开机自动开启ftp服务firewall-cmd --list-all 防火墙信息查看
firewall-cmd --permanent --add-service=ftp 添加火墙允许ftp服务通过
firewall-cmd --reload 火墙重新加载
firewall-cmd --list-all
客户端测试服务端是否已成功开启ftp服务(服务端ip172.25.254.213)
报错: 530是登录失败,能列出东西才可以登陆(密码错了,设置错了)
550是程序不允许
553是服务器文件系统不允许你写(权限过小)
500是权限过大
ls (默认直接进入的为/var/ftp)
mkdir /ftpdir/westosdir -p(建立目录)
vim /etc/vsftpd/vsftpd.conf
匿名用户家目录修改
anon_root=/direcotry (添加anon_root=/ftpdir)
此时匿名用户lftp默认进入目录更改为/ftpdir
匿名用户登陆限制
useradd westos 添加westos用户
passwd westos 给westos用户设置密码
本地用户登陆设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
匿名用户上传
vim /etc/vsftpd/vsftpd.conf 编辑主配置文件
write_enable=YES 允许本地用户上传写
anon_upload_enable=YES 允许你名用户上传 (这两个必须都满足逆名用户才可以上传)
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
匿名用户下载
添加anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载文件
匿名用户删除
添加anon_other_write_enable=YES|NO ##yes表示匿名用户可以删除文件
匿名用户建立目录
anon_mkdir_write_enable=YES|NO ##yes表示可以删除
匿名用户上传文件默认权限修改
添加anon_umask=xxx (777-022=755,内核预留权限111,所以此时文件权限为644)
最大上传速率
本地用户家目录修改
local_root=/directory
本地用户上传文件权限
local_umask=xxx (777-077=700,内核预留权限1,此时文件权限600)
限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES 本地用户开启将锁定在自己家目录中
chmod u-w /home/*
用户黑名单建立(此黑名单建立表明再次很名单里的本地用户将只能被锁定在自己家目录中)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
表示student用户被锁定在自己家目录
用户白名单建立(此名单表明,只有在此名单中的用户才可以浏览其他地方,而其他用户只能被锁定在自己家目录中)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
表示只有student用户不被锁定在自己家目录
限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单(再此名单中的本地用户将不能使用ftp服务登陆)
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
vim /etc/vsftpd/vsftpd.conf
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
westos
(创建虚拟帐号身份)
vim /etc/vsftpd/userdb ##文件名称任意 创建虚拟用户并并编写其密码)
user1
123
user2
123
user3
123
db_load -T -t hash -f /etc/vsftpd/userdb /etc/vsftpd/ userdb.db 将编写的/etc/vsftpd/userdb文件进行加密
vim /etc/pam.d/ftpuser ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/userdb
auth required pam_userdb.so db=/etc/vsftpd/userdb
vim /etc/vsftpd/vsftpd.conf
添加pam_service_name=ftpuser(此时当有用户使用ftp服务时会访问ftpuser这个文件里面的内容)
guest_enable=YES
guest_username=ftp (虚拟用户使用ftp用户进行登陆访问)
chmod u-w /home/*
mkdir /vftpdir
mkdir /vftpdir/user{1..3}
touch /vftpdir/user1/user1file
touch /vftpdir/user2/user2file
touch /vftpdir/user3/user3file
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser(此时当有用户使用ftp服务时会访问ftpuser这个文件里面的内容)
guest_enable=YES
guest_username=ftp (虚拟用户使用westos用户方式进行登陆访问)local_root=/vftpdir/$USER (设置用户家目录)
user_sub_token=$USER (设置上面所写的$USER为shell中的意思)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
mkdir user{1..3}/pub
chgrp westos user{1..3}/pub
chmod 775 user{1..3}
当我们想让虚拟用户中部分用户拥有某些功能时
首先关掉主配置文件中的功能此时对所有虚拟用户都没有此功能
vim /etc/vsftpd/vsftpd.conf
添加 user_config_dir=/etc/vsftpd/conf_dir
mkdir /etc/vsftpd/conf_dir -p
此时需要给那个用户开放某种功能只需编写某个虚拟用户的文件写入开启功能即可
vim /etc/vsftpd/conf_dir/user2
anon_upload-enable=YES ####上传文件