欧拉版本登录vsftp服务报错530(Login incorrect)问题现象分析及解决

问题现象

项目从centOS版本迁移到欧拉版本后,创建huaiyumo的虚拟账户,通过该账户进行登录vsftp服务时报错530,具体错误信息如下:

[root@huai ~]# ftp
ftp> open 192.168.11.121
Connected to 192.168.11.121 (192.168.11.121).
220 Welcome to use FTP service.
Name (192.168.11.121:root): huaiyumo
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

如此同时,在/var/log/secure日志中发现如下关键打印信息:

connected: pam_userdb(vsftpd:auth): user_lookup: could not init database ‘/etc/vsftpd/login': No such file or directory

通过以上日志打印信息可以发现,是由于缺少login数据库文件(该数据库文件记录着用户及其密码信息)导致无法认证成功,进而导致用户登录失败并报错530。

问题分析

由于PAM认证时会通过/etc/pam.d/vsftpd配置中指定的数据库路径进行读取虚拟用户数据库信息,因此,首先检查/etc/pam.d/vsftpd配置信息,发现并无异常(第2、3行已正确添加,第6行已被注释掉),如下:

[root@huai vsftpd]# cat -n /etc/pam.d/vsftpd
     1  #%PAM-1.0
     2  auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
     3  account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
     4  session    optional     pam_keyinit.so    force revoke
     5  auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
     6  #auth       required    pam_shells.so
     7  auth       include      password-auth
     8  account    include      password-auth
     9  session    required     pam_loginuid.so
    10  session    include      password-auth

其次,检查/etc/vsftpd目录发现login.txt、login.db文件均已存在,通过如下db_load命令重新生成记录huaiyumo虚拟账户的login.db数据库文件后,发现secure日志中仍然报错could not init database ‘/etc/vsftpd/login’: No such file or directory。

[root@huai ~]# echo "huaiyumo" >> /etc/vsftpd/login.txt
[root@huai ~]# echo "8H37bk" >> /etc/vsftpd/login.txt
[root@huai ~]# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

排除了/etc/pam.d/vsftpd配置的影响,也排除了login.db生成方式或格式不对的影响,那么有没有可能是login.db这个二进制文件在欧拉版本中无法识别呢?通过进一步调研和分析,果不其然,欧拉版本中无法读取login.db数据库文件,可以读取login.pag数据库文件(可以通过gdbmtool命令来实现)。

问题解决

将项目中通过db_load命令生成login.db文件改为通过gdbmtool命令生成login.pag文件,如下所示。同时,保持/etc/pam.d/vsftpd配置文件保持不变,实现PAM认证时从login.pag数据库文件中读取虚拟用户信息并进行认证登录。

[root@huai user]# gdbmtool /etc/vsftpd/login.pag

Welcome to the gdbm tool.  Type ? for help.

gdbmtool> store huaiyumo
DATA? 8H37bk
gdbmtool> q
[root@huai user]#

通过上述过程完成后,如下,再次用huaiyumo账户登录FTP服务器发现可以正常登录上,并且底层/var/log/secure日志中打印“connected: pam_userdb(vsftpd:auth): user ‘huaiyumo’ granted access”的成功登录信息。

[root@huai ~]# ftp
ftp> open 192.168.11.121
Connected to 192.168.11.121 (192.168.11.121).
220 Welcome to use FTP service.
Name (192.168.11.121:root): huaiyumo
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
欧拉法和改进欧拉法是常微分方程初值问题的数值解法之一。 欧拉法是一种简单的数值解法,它通过将微分方程转化为差分方程来逼近解。具体步骤如下: 1. 将区间[0, t]等分为n个小区间,步长为h=(t-0)/n。 2. 从初始条件y(0)=y0开始,使用差分方程y(i+1) = y(i) + h * f(x(i), y(i))进行迭代计算,其中f(x, y)是微分方程的右侧函数。 3. 重复步骤2,直到达到所需的计算区间。 改进欧拉法是对欧拉法的改进,它通过使用两个不同的斜率来更准确地逼近解。具体步骤如下: 1. 将区间[0, t]等分为n个小区间,步长为h=(t-0)/n。 2. 从初始条件y(0)=y0开始,使用差分方程y(i+1) = y(i) + h/2 * (f(x(i), y(i)) + f(x(i+1), y(i+1)))进行迭代计算,其中f(x, y)是微分方程的右侧函数。 3. 重复步骤2,直到达到所需的计算区间。 这两种方法的优缺点如下: 欧拉法的优点是简单易懂,计算速度快,但精度较低,容易积累误差。 改进欧拉法相对于欧拉法来说,精度更高,误差更小,但计算量稍大。 下面是使用欧拉法和改进欧拉解决常微分方程初值问题的示例代码: 欧拉法: ```python def euler_method(f, x0, y0, h, n): x = [x0] y = [y0] for i in range(n): x.append(x[i] + h) y.append(y[i] + h * f(x[i], y[i])) return x, y # 示例微分方程:y' = y - 2*x/y def f(x, y): return y - 2*x/y x, y = euler_method(f, 0, 1, 0.1, 10) print("欧拉法解得的近似解为:", y) ``` 改进欧拉法: ```python def improved_euler_method(f, x0, y0, h, n): x = [x0] y = [y0] for i in range(n): x.append(x[i] + h) k1 = h * f(x[i], y[i]) k2 = h * f(x[i+1], y[i] + k1) y.append(y[i] + 0.5 * (k1 + k2)) return x, y x, y = improved_euler_method(f, 0, 1, 0.1, 10) print("改进欧拉法解得的近似解为:", y) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值