解决vsftpd 500 OOPS: cannot locate user entry:nobody报错

问题描述

本问题基于vsftpd 3.0.5

使用ftp客户端连接vsftpd服务端报错日志及截图如下:

oldsix@OLDSIX:~/work$ ftp root@192.168.69.1
Connected to 192.168.69.1.
500 OOPS: cannot locate user entry:nobody
ftp>

问题截图:


---

原因分析:
 

1、根据官方源码中的资料解释:

(1)vsftpd3.0.5/INSTALL

vsftpd needs the user "nobody" in the default configuration. Add this
user in case it does not already exist. e.g.:
[root@localhost root]# useradd nobody
useradd: user nobody exists
翻译过来就是:
vsftpd在默认配置中需要用户“nobody”。添加此用户,以防它不存在。例如:
[root@localhostroot]#useradd nobody

(2)vsftpd3.0.5/FAQ

Q) Help! I'm getting the error message "str_getpwnam".

A) The most likely cause of this is that the user that is configured as the

'nopriv_user' setting (often 'nobody') does not exist on your system. vsftpd

needs this user to run bits of itself with no privilege.

(3)vsftpd3.0.5/vsftpd.conf

# It is recommended that you define on your system a unique user which the

# ftp server can use as a totally isolated and unprivileged user.

#nopriv_user=ftpsecure

2、通过跟踪源码发现


vsftpd3.0.5/tunables.c
  install_str_setting("nobody", &tunable_nopriv_user);

通过跟踪发现

该参数默认为nobody,并存储在全局变量tunable_nopriv_user中,跟踪代码发现

nopriv_user为tunable_nopriv_user配置选项,和vsftpd.conf描述一致。---

 解决方案:


根据问题原因可给出以下三个解决方案:

1、vsftpd服务器所在系统增加nobody用户

2、修改/etc/vsftpd.conf配置

nopriv_user=系统中已经存在的用户(cat /etc/passwd )。

3、修改源码(不建议)

vsftpd3.0.5/tunables.c文件中的
  install_str_setting("nobody", &tunable_nopriv_user);将nobody

替换为系统中存在的用户。

修改后编译替换原来的vsftpd服务器即可

ps:可通过cat /etc/passwd 查看已存在用户。

<think>我们正在处理一个FTP服务器相关的错误:"500 OOPS: cannot locate user entry:ftpsecure" 这个错误通常发生在使用vsftpd(Very Secure FTP Daemon)时,表明系统无法找到名为'ftpsecure'的用户。 可能的原因和解决方法如下: 1. **用户不存在**:错误提示中提到的用户'ftpsecure'在系统中不存在。 - 解决方法:创建该用户或者修改vsftpd配置指向一个存在的用户。 2. **配置文件中指定了不存在的用户**:在vsftpd的配置文件中(通常是/etc/vsftpd.conf)可能设置了`guest_username`选项,而这个选项的值(即用户)不存在。 - 解决方法:检查`guest_username`的设置,并确保该用户存在。或者,如果你不需要虚拟用户功能,可以注释掉该行。 3. **PAM配置问题**:vsftpd使用PAM(Pluggable Authentication Modules)进行认证,如果PAM配置文件中指定的用户不存在,也会导致此错误。 - 解决方法:检查/etc/pam.d/vsftpd文件,确保其中指定的用户存在。 4. **虚拟用户配置**:如果你使用了虚拟用户,那么可能需要一个映射到系统用户的设置。如果映射的系统用户不存在,也会出现此错误。 - 解决方法:确保虚拟用户映射的系统用户存在。 具体步骤: **步骤1:检查用户是否存在** 在终端中运行: ```bash id ftpsecure ``` 如果输出显示“no such user”,则需要创建该用户。 **步骤2:创建用户(如果需要)** ```bash sudo useradd ftpsecure ``` **步骤3:检查vsftpd配置** 打开vsftpd配置文件(通常为/etc/vsftpd.conf): ```bash sudo nano /etc/vsftpd.conf ``` 查找`guest_username`设置。如果它被设置为`ftpsecure`,请确保你已经创建了该用户。或者,如果你想使用另一个用户,可以修改该设置,例如: ```ini guest_username=ftp ``` 注意:这里使用已存在的用户'ftp'(通常系统安装vsftpd时会自动创建)。 保存并关闭文件。 **步骤4:检查PAM配置** 打开PAM配置文件(通常为/etc/pam.d/vsftpd): ```bash sudo nano /etc/pam.d/vsftpd ``` 检查文件中是否有引用`ftpsecure`用户的行,如果有且该用户不存在,则需要修改为存在的用户。但通常PAM配置中不会直接指定用户,所以这一步可能不是必须的。 **步骤5:重启vsftpd服务** ```bash sudo systemctl restart vsftpd ``` 如果问题仍然存在,请检查日志文件(通常为/var/log/vsftpd.log)以获取更多信息。 注意:上述步骤假设你使用的是vsftpd。如果你使用的是其他FTP服务器软件,则可能需要调整。 如果上述方法不能解决问题,请提供更多上下文信息,例如你的vsftpd配置文件内容(注意隐藏敏感信息)和系统日志。 §§相关问题§§ 1. 如何安装和配置vsftpd? 2. 如何创建FTP虚拟用户? 3. 如何调试vsftpd服务? </think>### 解决 "500 OOPS: cannot locate user entry:ftpsecure" 错误的方法 此错误通常发生在 **vsftpd**(Very Secure FTP Daemon)服务器中,表明系统无法找到名为 `ftpsecure` 的用户账户。以下是分步解决方案: --- #### 1. **检查用户账户是否存在** ```bash id ftpsecure # 检查用户是否存在 grep ftpsecure /etc/passwd # 在系统用户列表中查找 ``` - **如果用户不存在**: 创建用户账户(可能需要先创建组): ```bash sudo groupadd ftpsecure # 创建组 sudo useradd -g ftpsecure -d /path/to/ftp_root -s /sbin/nologin ftpsecure ``` 其中 `/path/to/ftp_root` 是 FTP 根目录(如 `/var/ftp`)。 --- #### 2. **检查 vsftpd 配置文件** 编辑配置文件(通常位于 `/etc/vsftpd.conf`): ```bash sudo nano /etc/vsftpd.conf ``` 检查以下关键参数: - `guest_username=ftpsecure` → 确保该用户名与创建的用户一致 - `pam_service_name=vsftpd` → 保持默认或指向正确的 PAM 文件 - `userlist_enable=YES` → 若启用,需在 `/etc/vsftpd.user_list` 中添加 `ftpsecure` --- #### 3. **修复 PAM 认证配置** - 编辑 PAM 配置文件: ```bash sudo nano /etc/pam.d/vsftpd ``` - 确保没有异常的用户名引用。标准配置应为: ```plaintext auth required pam_userdb.so db=/etc/vsftpd/login_users account required pam_userdb.so db=/etc/vsftpd/login_users ``` --- #### 4. **重启 vsftpd 服务** ```bash sudo systemctl restart vsftpd # 重启服务 sudo systemctl status vsftpd # 检查状态 ``` 查看日志排查问题: ```bash tail -f /var/log/vsftpd.log # 实时日志监控 ``` --- #### 5. **目录权限修复** 确保 FTP 根目录权限正确: ```bash sudo chown -R ftpsecure:ftpsecure /path/to/ftp_root # 归属用户 sudo chmod 755 /path/to/ftp_root # 禁止其他用户写入 ``` --- ### 常见原因总结 | 原因 | 解决方案 | |---------------------|------------------------------| | 用户 `ftpsecure` 不存在 | 创建用户并指定 FTP 根目录 | | PAM 配置错误 | 检查 `/etc/pam.d/vsftpd` | | 目录权限问题 | 修正 FTP 根目录所有权和权限 | | `guest_username` 配置错误 | 核对 `/etc/vsftpd.conf` 参数 | > **注意**:若使用虚拟用户配置(如通过 `pam_userdb`),需确保数据库文件(如 `/etc/vsftpd/login_users.db`)已通过 `db_load` 命令生成[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值