1、远程登陆
服务器端:
yum install vsftpd -y ##安装vstpd服务
systemctl start vsftpd
systemctl enable vsftpd
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config ##关闭selinux(rebooot后才能生效)
SELINUX=disabled
setenforce 0 ##命令行关闭(临时关闭但可以立即生效)
客户端:
yum install lftp -y ##安装lftp
lftp 服务器端ip地址 ##匿名登陆ftp服务器(/var/ftp)
lftp 服务器端ip地址 -u student ##以服务器端用户student登陆(home/student)
2、控制用户的登陆
服务器端:
vim /etc/vsftpd/vsftpd.conf
sytemctl restart vsftpd
12行 anonymous_enable=NO/YES ##是否允许匿名用户登陆
16行 local_enable=NO ##是否允许以本地用户登陆
**ftp服务最大连接数
vim /etc/vsftpd/vsftpd.conf
添加 max_clients=2
当第二个用户连接时,会被拒绝访问
3、对匿名登陆的控制
服务器端:
1)匿名上传文件
cd /var/ftp ##ftp服务器
ls -dl pub ##查看目录信息
这个目录权限是755,对所属组和其他用户不可写,匿名用户没有权限上传文件
chmod 775 /var/ftp/pub ##将所属组改为满权限(不能更改权限为777)
chgrp ftp /var/ftp/pub ##将所属组改为ftp服务器(匿名登陆时实际用户组为ftp服务器)
或者 chmod 757 /var/ftp/pub ##/pub所属组为root,ftp组是/pub的其他用户
vim /etc/vsftpd/vsftpd.conf
29行 anon_upload_enable=YES/NO ##匿名是否可以上传文件
sytemctl restart vsftpd
这时匿名登陆可以上传文件
匿名上传的文件拥有者和所属组都是ftp服务器
2)匿名下载文件
vim /etc/vsftpd/vsftpd.conf
30行 anon_world_readble_only=NO/YES ##匿名是否可以下载文件
3)匿名创建目录
31行 anon_mkdir_write_enable=YES/NO ##匿名是否可以创建目录
4)匿名删除和重命名文件
32行 anon_other_write_enable=YES/NO ##匿名是否可以删除和重命名
5)匿名登陆目录的更改
33行 anon_root=/mnt/client ##匿名登陆目录的更改(默认/var/ftp)
更改配置文件后systemctl restart vsftpd
6)匿名上传文件的权限
vim /etc/vsftpd/vsftpd.conf
添加anon_umask=022(上传者之外的访客可以访问/pub下的文件) ##匿名上传文件默认的权限为600(umask=066)
*umask=022被ftp服务视为规范更改,若更改为其他umask值,会出现错误
7)匿名最大上传速率
anon_max_rate=102400 ##单位是字节(100K)
客户端测试:dd if=/dev/zero of=/mnt/file bs=1M count=1500 ##拷贝一个大小为1500M的大文件
put /mnt/file 可以看到上传速率被限制在100K以下
8
4、对以本地用户登录的控制
1)以本地用户登陆时家目录的修改
修改后所有以本地用户登录时的家目录都是修改后的目录
vim /etc/vsftpd/vsftpd.conf
添加local_root=/westos ##可以在westos下创建east文件,测试是否登陆时在westos下
2)限制以本地用户登录时对其他目录的权限
在修改配置文件之前,用户验证登陆的时候是在服务指定的家目录里,之后可以随意切换系统目录,这是不安全的
vim /etc/vsftpd/vsftpd.conf
将chroot_local_user=YES注释掉
只更改配置文件,测试时会有500报错,这是本地用户不能对chroot有写权限
chmod u-w /home/* ##去掉所有本地用户的写权限
这时本地用户访问其他目录时,还在自己的家目录
**本地用户访问其他目录的黑名单
cd /etc/vsftpd ; vim chroot_list ##建立名单(名单性质可变)
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=NO ##默认可以访问其他目录
chroot_list_enable=YES ##名单确认为黑名单
chroot_list_file=/etc/vsftpd/chroot_list
student用户不能访问其他目录:
其他用户可以访问:
**本地用户访问其他目录的白名单
chroot_local_user=YES ##默认不可以访问其他目录
chroot_list_enable=YES ##名单确认为白名单
chroot_list_file=/etc/vsftpd/chroot_list
student用户可以访问其他目录:
其他用户不可以访问:
3)限制本地用户的登陆
vim /etc/vsftpd/ftpusers ##永久的用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
这时以黑名单中用户登录:
白名单设定:vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
将用户从/etc/vsftpd/ftpusers 删除(默认永久黑名单优先权大) 这时只有在/etc/vsftpd/user_list里的用户才能登陆
5、ftp虚拟用户的设定
首先创建虚拟用户的家目录 mkdir -p /ftphome/ftpuser1/user1dir ; mkdir -p /ftphome/ftpuser2/user2dir
再创建虚拟用户 cd /etc/vsftpd ; vim westosfile(文件名任意)
ftpuser1 ##用户名1
123 ##用户1密码
ftpuser2 ##用户名2
123 ##用户2密码
对上面的明文密码加密:db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
cd /etc/pam.d ; vim westos(文件名任意)
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
##account表示帐号名称auth表示密码,不分先后顺序
##required:用户认证
##pam_userdb.so这个插件来验证账户信息
vim /etc/vsftpd/vsftpd.conf
在主配置文件的末尾加上:
pam_service_name=westos ##westos是/etc/pam.d/的文件
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
local_root=/ftphome/$USER
user_sub_token=$USER
测试前:chmod 775 /ftphome/ftpuser1/user1dir ; chgrp ftp /ftphome/ftpuser1/user1dir
**ftp虚拟用户家目录里的权限设定
vim /etc/vsftpd/vsftpd.conf
在末尾添加:user_config_dir=/etc/vsftpd/userconf
cd /etc/vsftpd ; mkdir userconf ; cd userconf ; vim ftpuser1 ; 添加anon_mkdir_write_enable=YES
在配置文件中anon_mkdir_write_enable=YES要注释掉
ftpuser1:成功创建目录
ftpuser2:没有权限,不能创建目录