当前位置:论坛首页 > Linux面板 > 建议

【已记录】面板ftp添加提示Error with entering password - aborting

发表在 Linux面板前天 14:44 [复制链接] 1 45

在 Debian 13系统中,/bin/sh 指向 Dash,而Dash 的 echo 命令不支持 -e 参数(POSIX 标准的 echo 也不要求支持 -e),这会导致:

  • 执行 echo -e "密码\n密码" 时,Dash 会把 -e、\n 当作普通字符串输出,而非解析换行符;
  • Pure-FTPd 收到的不是预期的 “两行密码”,而是乱码(如 -e 密码\n密码),因此触发 Error with entering password - aborting。


/www/server/panel/class/ftp.py中所有的echo -e 换成 printf


  1. //比如

  2. command = 'echo -e "{}\n{}\n" | {}/pure-pw useradd "{}" -u www -d {}'.format(password,password,self.__runPath,username,get["path"])

  3. 换成(加-m确保即时生效):

  4. command = 'printf "{}\\n{}\\n" | {}/pure-pw useradd "{}" -u www -d {} -m'.format(password,password,self.__runPath,username,get["path"])
复制代码


解决方法的另一种思路(系统级修改)
除了刚才教你的“修改代码”之外,其实还有一种粗暴的方法,就是把你的系统也改成“宽容模式”,这样不需要改宝塔代码也能好用:

操作步骤:

在终端执行:
  1. dpkg-reconfigure dash
复制代码


屏幕会出现一个弹窗,问你:Use dash as the default system shell (/bin/sh)?

选择 <No> (也就是否)。

回车确认。

效果:
这样做之后,你的 /bin/sh 就会指向 bash。此时,echo -e 就可以正常工作了,宝塔原本的 FTP 添加功能也会瞬间恢复正常,因为 Bash 能听懂宝塔那句“方言”。

但为什么我刚才首推改代码?
因为改系统 Shell 可能会影响系统启动速度(Bash 比 Dash 慢)以及其他依赖 Dash 特性的系统级脚本。修改宝塔代码为 printf 是最标准、兼容性最好的做法,无论系统 Shell 是什么,它都能稳如泰山。


使用道具 举报 只看该作者 回复
发表于 前天 16:58 | 显示全部楼层
感谢反馈,这边记录一下
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表