ftp常见的权限报错
## Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
500 ##文件系统权限过大,如果用户被限定在了其主目录下,
则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误,
解决办法是修改其主目录的权限,去掉写的权限即可
530 ##用户认证失败
550 ##服务不允许,服务本身功能未开放
## Access failed: 553 Could not create file.
553 ##本地文件系统权限过小,(需要增加权限才能操作),解决方法就是chgrp和chmod修改目录权限
1、定义
ftp:// ##文件传输协议
2、安装
可直接yum
安装vsftpd
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
防火墙开的话需要在规则中允许ftp服务
firewall-cmd --permanent --add-service=ftp
##配置防火墙允许ftp服务的执行(防火墙开启情况下)
firewall-cmd --reload ##更新防火墙规则
firewall-cmd --list-all ##查看防火墙列表中是否允许ftp
3、配置
默认开启端口是21
配置目录在/etc/vsftpd
主配置文件是/etc/vsftpd/vsftpd.conf
默认用户登陆的目录为/var/ftp/pub
1)用户登陆
anonymous_enable=YES|NO ##匿名用户是否可以登陆
local_enable=YES|NO ##本地用户是否可以登陆
如图,就表示用户没有登陆权限
2)ftp对登陆用户是否可写
write_enable=YES|NO ##ftp是否对登陆用户可写
3)匿名用户上传
##修改配置文件
write_enable=YES
anon_upload_enable=YES ##表示允许匿名用户上传
##给pub目录权限
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
4)匿名用户下载,此处设定略有不同,一定注意
## 此句默认配置文件中没有,需要加
anon_world_readable_only=NO|YES ##设定NO表示可以下载
5)匿名用户家目录修改
##在配置文件中加一行,指出匿名用户的家目录所在,注意给目录权限
anon_root=/anonhome
6)匿名用户上传文件默认权限修改
##默认是022
anon_umask=022
7)匿名用户建立目录
anon_mkdir_write_enable=YES|NO
8)匿名用户删除
##此句默认配置文件中没有,需添加
anon_other_write_enable=YES|NO
9)匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=games ##使用games用户身份
chown_upload_mode=0064 ##权限,需另行添加
10)最大上传速率
anon_max_rate=102400 ##最大上传速率设定为100k
测试: dd if=/dev/zero of=bigfile bs=1M count=500
上传看速率
G、最大连接数
max_clients=2
2)、本地用户
A、本地用户家目录的修改
local_root=/westos ##根目录默认在/var/ftp
本地用户上传文件权限
23行 local_umask=022
B、限制本地用户浏览/目录
所有用户被锁在自己的家目录
chroot_local_user=YES ##所有用户不能浏览/
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
C、白名单的建立
110 chroot_local_user=YES ##yes表示不能浏览" / ",所以名单中是白名单
111 chroot_list_enable=YES
112 # (default follows)
113 chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
实验:
设置白名单前
设置student在白名单中
设置白名单后,测试:
D、黑名单的建立
110 chroot_local_user=NO ##no表示能浏览/,所以名单是黑名单
111 chroot_list_enable=YES
112 # (default follows)
113 chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
实验
设置黑名单
测试:
E、限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
设置前:
把student加入黑名单
测试:
F、白名单设定
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO ##添加此条后。临时黑名单就变成白名单
vim /etc/vsftpd/user_list
student
实验:
测试:可以看到被加入白名单的student可以登陆,其他用户不能登陆
4、ftp虚拟用户的设定
1)创建虚拟用户
vim /etc/vsftpd/userfile ##文件名任意,创建虚拟用户及密码
westos1
123
westos2
123
westos3
123
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db ##hash加密
vim /etc/pam.d/ftpauth ##验证文件,文件名任意
帐号 account required pam_userdb.so db=/etc/vsftpd/userfile
密码 auth required pam_userdb.so db=/etc/vsftpd/userfile
检测程序,系统中有 此处文件默认加.db后缀
vim /etc/vsftpd/vsftpd.conf
修改pam_service_name=ftpauth ##此处文件名与验证文件名对应,删除时改为vsftpd
userlist_enable=YES
tcp_wrappers=YES
添加 guest_enable=YES ##虚拟用户功能开启,删除时删掉
添加 guest_username=ftp ##虚拟帐号身份指定,删除时删掉
实验:
验证:另一台主机虚拟用户登陆(虚拟用户设定后本地用户就无法登陆,如果要登陆需要把vsftp中的内容写到ftpauth中)
2)设定虚拟用户家目录
mkdir /var/ftpuserdir/westos{1..3} -p ##建立虚拟用户家目录,-p表示没有目录默认建立
vim /etc/vsftpd/vsftpd.conf
添加 local_root=/var/ftpuserdir/$USER ##让每个用户进入自己的家目录
添加 user_sub_token=$USER ##使$USER在shell中生效,系统读取
systemctl restart vsftpd.service
实验
测试:每个用户家目录建立不同文件,登陆查看,可以看到每个用户进的是自己的家目录
mkdir /var/ftpuserdir/westos{1..3}/pub -p
mkdir /var/ftpuserdir/westos1/file1 -p
mkdir /var/ftpuserdir/westos2/file2 -p
mkdir /var/ftpuserdir/westos3/file3 -p
3)指定某些用户可以上传
mkdir /var/ftpuserdir/westos{1..3}/pub -p
chmod 775 /var/ftpuserdir/westos*/pub ##给pub权限,否则会出现553报错
chgrp ftp /var/ftpuserdir/westos*/pub ##给ftp权限
mkdir -p /etc/vsftpd/user_config ##建立目录
cd /etc/vsftpd/user_config/
vim westos1
anon_upload_enable=YES ##westos1允许上传
vim /etc/vsftpd/vsftpd.conf
把 30 #anon_upload_enable=YES注释掉,即所有匿名用户都不能上传
user_config_dir=/etc/vsftpd/user_config ##读取改目录下的文件
systemctl restart vsftpd.service
测试 :westos1可上传,westos2、westos3无法上传