HCRM博客

CentOS 7 vsftp 权限错误与SELinux配置解析

CentOS7 vsftp 500 OOPS权限错误排查(SELinux)

CentOS 7 vsftp 权限错误与SELinux配置解析-图1

凌晨两点,刚把网站包扔到服务器,vsftp一登录就甩脸子:500 OOPS: cannot change directory。日志里干干净净,目录权限看着也没毛病,很多人在这一步直接懵掉。其实问题多半藏在SELinux里,只是它不说话,默默把请求掐掉。下面把踩坑过程拆开,照着敲,十分钟就能让ftp乖乖听话。

CentOS 7 vsftp 权限错误与SELinux配置解析-图2

先确认是不是SELinux惹的祸

很多教程一上来就让setenforce 0,暴力是暴力,可关了SELinux服务器裸奔,真出事没人替你背锅。先别急着关,用下面这条命令看看拒绝记录:

grep avc /var/log/audit/audit.log | grep ftp

如果蹦出一堆avc: denied { read write },基本坐实SELinux在拦路。没有记录也别得意,可能是日志刷太快,先装个setroubleshoot再跑一遍:

yum -y install setroubleshoot-server

装完重新触发错误,再执行:

CentOS 7 vsftp 权限错误与SELinux配置解析-图3

sealert -a /var/log/audit/audit.log

系统会给出一段超详细的“人话”提示,包括哪个目录被拦、需要打什么标签,直接抄答案最省事。

给目录打标签,让SELinux认路

vsftp默认只能读写/var/ftp下边的内容,把网站目录扔到/home/www还想直接访问?SELinux第一个不答应。假设你的网站目录是/home/www/web1,两步搞定:

1. 永久修改目录标签:

semanage fcontext -a -t public_content_rw_t "/home/www/web1(/.*)?"

2. 立即生效:

restorecon -Rv /home/www/web1

如果ftp账号需要上传,还得开布尔值:

setsebool -P ftpd_full_access on

一条命令,读写权限全放通,比chmod 777那种“裸奔式”安全得多。

别忽略家目录的“小尾巴”

有些同学把用户家目录改成自定义路径,比如/data/ftp/user1,结果登录依旧500。看权限没错,再看标签:家目录默认标签是user_home_dir_t,ftp进程拿它没辙。同样两板斧:

semanage fcontext -a -t user_home_dir_t "/data/ftp(/.*)?"

restorecon -Rv /data/ftp

如果该目录还要给多人上传,再补一句:

setsebool -P allow_ftpd_anon_write on

踩完这个坑你会发现,SELinux并不是“麻烦制造机”,而是“免费保安”,给它一句指令,它替你挡子弹。

本地权限也要对得上

SELinux放行后,还有最后一道闸:文件系统权限。假设ftp用户叫webftp,目录/home/www/web1,最简配置:

chown -R webftp:webftp /home/www/web1

chmod -R 755 /home/www/web1

需要上传的子目录再单独给写权限:

chmod 775 /home/www/web1/upload

到这里,500 OOPS基本销声匿迹。重启vsftpd:

systemctl restart vsftpd

用FileZilla再连一次,看到目录列表蹦出来,长舒一口气。

一张图记牢排查顺序

1. 看日志:audit.log有没有avc拒绝。

2. 打标签:semanage + restorecon组合拳。

3. 开布尔:ftpd_full_access、allow_ftpd_anon_write。

4. 查权限:chown、chmod别手抖。

按这个顺序来,五分钟定位,十分钟修复,再遇到500 OOPS就不会抓瞎。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41416.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~