vsftpd-ftp 正常登录后,出现500 OOPS: cap_set_proc

本文记录了解决vsftpd在登录后出现500 OOPS错误的过程。错误可能由内核安全选项配置、模块加载或配置文件设置不当引起。通过检查内核编译选项、尝试modprobe capability、关闭iptables防火墙,以及修改vsftpd.conf中的connect_from_port_20选项为NO,最终成功解决了FTP连接问题。

1.添加用户

[root@nbas5 ~]# useradd ftpuser
[root@nbas5 ~]# passwd ftpuser
Changing password for user ftpuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

 

2.切换用户
[root@nbas5 ~]# su ftpuser

 

3.登录,正常
[ftpuser@nbas5 root]$ ftp localhost
Connected to nbas5.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:ftpuser): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

 

4.运行ftp命令,出错

ftp> ls
500 OOPS: cap_set_proc
ftp> dir
200 PORT command successful. Consider using PASV.
500 OOPS: vsf_sysutil_recv_peek
ftp> dir
Not connected.

 

5.网上搜

可能的原因:

(a)查了查国外网站的一些资料,判断是编译内核时“安全选项”没配置好,因为我前几天新编译了2.6.12的内核,今天把Security options  --->;
  Enable different security models  
   <*>;   Default Linux Capabilities   
选中,重新编译内核,启动后试了试ftp,一切正常,象以前一样了!
之前ftp不能登录,是内核模块没有卸掉的缘故。

(b)modprobe capability

(c)没有关闭防火墙iptables firewall

 

6.解决

我根据提示,重新编译内核,不知为何重启不能进入新内核,试了半天未果。
没办法打开以前可以用ftp的虚拟机试了一下,也有这种情况,所以放弃重新编译内核的可能性。
重新在网上搜,终于发现一丝线索,原来是配置文件的缘故。

 

vsftpd.conf里面的
connect_from_port_20=YES
改成NO之后FTP就可以正常

 

<think>好的,用户遇到了FTP连接时报错500 OOPS: priv_sock_get_result的问题,需要帮忙解决。首先,我得回忆一下这个错误通常是什么原因引起的。根据之前的知识,FTP服务器的权限问题和配置错误是常见的罪魁祸首。比如,vsftpd的配置文件中某些参数设置不当,或者文件系统权限不正确导致vsftpd无法正常运行。 接下来,我需要考虑用户可能的操作环境。用户可能是在Linux系统上使用vsftpd,这是最常见的FTP服务器之一。所以,我应该先检查vsftpd的配置文件,通常是/etc/vsftpd.conf。常见的配置问题包括匿名登录设置、本地用户权限、被动模式配置等。比如,如果用户启用了匿名登录但权限设置过严,可能会导致问题。或者,被动模式所需的端口范围没有正确配置或开放。 另外,SELinux和防火墙也是常见的干扰因素。SELinux可能会阻止vsftpd访问某些资源,需要检查SELinux的状态,或者临时禁用看看是否解决问题。同样,防火墙可能阻塞了FTP的数据连接端口,特别是被动模式下需要开放一定范围的端口。 还有文件权限问题。vsftpd需要访问其配置文件和相关目录,比如chroot目录的权限是否正确,用户的家目录是否有适当的访问权限。比如,如果用户被chroot到其家目录,但该目录的权限设置过严,导致无法访问,就会出错。 另外,日志文件是排查问题的好帮手。用户可能没有查看日志的习惯,所以需要引导他们检查/var/log/vsftpd.log或messages、syslog中的相关条目,找出具体的错误信息。 用户的vsftpd版本可能比较旧,存在已知的bug,建议更新到最新版本。或者,配置文件中有拼写错误,比如多余的注释符号或参数名错误,需要仔细检查。 最后,可能需要重启vsftpd服务,或者整个系统,来确保配置生效。同时,测试不同的FTP客户端,排除客户端的问题。 总结起来,解决步骤应该是:检查配置文件,特别是匿名登录和被动模式设置;检查SELinux和防火墙状态;验证文件和目录权限;查看日志文件;更新软件版本;最后重启服务测试。需要一步步引导用户排查,确保每个可能的环节都被覆盖。</think>当使用FTP连接时出现错误 `500 OOPS: priv_sock_get_result`,通常与FTP服务器的权限配置或文件系统问题相关。以下是逐步排查和解决的步骤: --- ### **1. 检查FTP服务器配置** 此错误常见于 **vsftpd**(一种常用的FTP服务器)。需检查配置文件 `/etc/vsftpd.conf`: - **关键配置项**: ```bash # 禁止匿名登录(若未正确配置可能导致问题) anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 限制用户访问其家目录(若配置错误可能引发权限问题) chroot_local_user=YES ``` - **修复方法**: - 确保配置项无语法错误(如多余空格或未注释的冲突项)。 - 若使用 `chroot_local_user=YES`,需为用户家目录设置正确权限: ```bash chmod 755 /home/username # 用户家目录需可执行(x) ``` --- ### **2. 检查SELinux状态** SELinux可能阻止vsftpd正常操作: - **临时禁用SELinux**(测试是否相关): ```bash setenforce 0 ``` - **永久解决**: - 修改SELinux策略: ```bash setsebool -P ftpd_full_access on ``` - 或直接禁用SELinux(不推荐): 编辑 `/etc/selinux/config`,设置 `SELINUX=disabled`。 --- ### **3. 检查防火墙设置** 防火墙可能拦截FTP数据连接: - **开放被动模式端口**(若使用被动模式): 在 `/etc/vsftpd.conf` 中指定端口范围: ```bash pasv_min_port=40000 pasv_max_port=50000 ``` 并在防火墙中开放这些端口: ```bash firewall-cmd --permanent --add-port=40000-50000/tcp firewall-cmd --reload ``` --- ### **4. 验证文件系统权限** - **vsftpd需要访问的目录**: - 确保用户家目录及其父目录权限为 `755`。 - 若用户被限制在chroot环境(如 `/var/ftp`),需确保该目录权限正确: ```bash chmod 755 /var/ftp ``` --- ### **5. 查看日志定位问题** 检查vsftpd日志以获取具体错误信息: - 日志文件通常位于 `/var/log/vsftpd.log` 或 `/var/log/messages`。 - 使用以下命令查看实时日志: ```bash tail -f /var/log/vsftpd.log ``` --- ### **6. 其他可能原因** - **vsftpd版本问题**:升级到最新版本: ```bash sudo apt update && sudo apt upgrade vsftpd # Debian/Ubuntu sudo yum update vsftpd # CentOS/RHEL ``` - **配置文件冲突**:检查是否有重复配置项或拼写错误。 - **用户权限问题**:确保用户未被锁定或密码过期。 --- ### **7. 重启vsftpd服务** 修改配置后重启服务: ```bash sudo systemctl restart vsftpd ``` --- ### **总结流程** 1. 检查配置文件 `/etc/vsftpd.conf`。 2. 关闭SELinux或调整策略。 3. 开放防火墙端口。 4. 验证目录权限。 5. 查看日志定位具体错误。 6. 重启服务并测试连接。 若问题仍未解决,建议提供完整的日志内容和配置文件内容以进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值