Termux换机后login失败解决记录"

admin 2026-10-24 15:13:02 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Termux换机后login失败解决记录

原创

羽泪云小栈
羽泪云小栈

羽泪云小栈

2026年10月22日 09:00
陕西

去阅读

deepseek总结记录

手机互传termux,导致接收手机的termux出现:

exec(\"/data/data/com.termux/files/usr/bin/login\"): No such file or directory

回车即退出,于是让deepseek帮忙解决修复问题后,它整理如下:

一、根本原因

跨设备迁移时,Termux 的符号链接(symlink)全部丢失了。

用的传输方式(很可能是 MTP、第三方文件管理器或某些压缩工具)不保留符号链接。

手机互传也属于这种方式,容易导致符号链接丢失。

Termux 的 $PREFIX/lib 和 $PREFIX/bin 里大量程序依赖符号链接,链接一丢,整个环境就\"看起来文件都在,但谁也跑不起来\"。

二、原理:为什么报\"文件不存在\"却文件明明在

Termux 的库文件遵循 Linux 的 soname 机制:

实际文件:libreadline.so.8.2      (真实数据)
符号链接:libreadline.so.8    → libreadline.so.8.2   (程序要找的名字)

bash 的 ELF 头里写死了 NEEDED: libreadline.so.8,动态链接器只认这个精确名字。迁移后链接没了,链接器找不到 libreadline.so.8,就返回 ENOENT——报错说\"No such file or directory\",缺的其实是那个\"名字\",不是文件本身。

login 的报错同理:

exec(\"/data/data/com.termux/files/usr/bin/login\"): No such file or directory

文件明明在(2782 字节,有执行权限),但它依赖的库链接断了,execve 同样返回 ENOENT,报错信息极具误导性。

三、故障链条

阶段 现象 实际原因
正常启动 login 报文件不存在 login 依赖的库链接断了
Fail Safe 能进 绕过 login,直接用 /system/bin/sh 系统 shell 不依赖 Termux 库
bash 报缺 libreadline.so.8 实际文件是 .8.2,缺 .8 链接 符号链接丢失
补完 readline 又缺 ncursesw 实际是 .6.5,缺 .6 链接 同上,整批丢失
apt 报缺 libbz2.so.1.0 需要两层链接(.so.1 和 .so.1.0) 批量脚本只补了一层
dpkg 报找不到 sh、rm $PREFIX/bin/sh 、$PREFIX/bin/rm 链接也丢了 迁移丢失的不只是 lib,bin 里的链接也丢了

四、 解决方案(按顺序)

1. 进 Fail Safe 模式:长按图标 → Fail Safe,绕过损坏的 login 和启动配置。

2. 手动设环境变量:

export PREFIX=/data/data/com.termux/files/usr
export PATH=$PREFIX/bin:/system/bin:/system/xbin
export LD_LIBRARY_PATH=$PREFIX/lib

3. 逐个补关键库链接(按报错逐个修):

ln -sf $PREFIX/lib/libreadline.so.8.2   $PREFIX/lib/libreadline.so.8
ln -sf $PREFIX/lib/libncursesw.so.6.5   $PREFIX/lib/libncursesw.so.6
ln -sf $PREFIX/lib/libz.so.1.3.1        $PREFIX/lib/libz.so.1

4. 批量补全所有库的两层链接(关键一步):

bash -c 'cd $PREFIX/lib && for f in *.so.*.*; do prefix=\"${f%%.so.*}\"; verpart=\"${f#*.so.}\"; IFS=\".\" read -ra parts <<< \"$verpart\"; cur=\"\"; for p in \"${parts[@]}\"; do if [ -z \"$cur\" ]; then cur=\"$p\"; else cur=\"$cur.$p\"; fi; link=\"${prefix}.so.${cur}\"; if [ \"$link\" != \"$f\" ] && [ ! -e \"$link\" ]; then ln -s \"$f\" \"$link\"; fi; done; done'

5. 修复 apt 的 HTTPS 模块:

ln -sf http $PREFIX/lib/apt/methods/https

6. 修复 dpkg 需要的 sh 和 rm:

ln -sf $PREFIX/bin/bash $PREFIX/bin/sh
ln -sf /system/bin/rm $PREFIX/bin/rm

7. 用包管理器彻底校准:

apt install --reinstall -y termux-tools apt

8. 测试并重启:

$PREFIX/bin/login -c \"echo login ok\"

输出 login ok 后,完全退出 Termux,正常点图标启动即可。

总结

  • • 迁移 Termux 必须用 tar 打包(保留符号链接和权限),不能用文件管理器直接复制文件夹,也不能用只传普通文件的 MTP。
  • • 正确做法:旧机 tar -zcf backup.tar.gz -C /data/data/com.termux/files home usr,新机解压到同一路径,或用官方 termux-backup / termux-restore 命令。
  • • 遇到 No such file or directory 但文件明明在,第一反应应该是查符号链接和依赖库,而不是怀疑文件本身。

Termux换机后login失败解决记录" 网络安全文章

Termux换机后login失败解决记录"

本文记录Termux跨设备迁移后因符号链接丢失导致login失败的问题。根本原因是MTP等传输方式不保留符号链接,导致依赖库链接断裂。解决方案包括进入FailSafe模式、手动补关键库链接、批量补全所有库链接、修复apt和dpkg依赖,最后用包管理器校准。建议使用tar打包迁移以保留符号链接。
路由器QoS要不要开?看完这篇就知道怎么选" 网络安全文章

路由器QoS要不要开?看完这篇就知道怎么选"

本文科普路由器QoS功能的作用与适用场景。QoS是流量管理机制,可合理分配带宽优先级,但不能增加带宽。适合多设备同时上网、有实时业务需求的家庭开启,需根据实际网络情况测试,开启前记录数据对比效果。文章还区分了QoS与SQM,并建议网络稳定时无需开启。
php2shellRCE漏洞相关细节:AI助力发现十年历史漏洞,全球70%互联网基础设施受影响" 网络安全文章

php2shellRCE漏洞相关细节:AI助力发现十年历史漏洞,全球70%互联网基础设施受影响"

2026年10月21日披露的php2shell漏洞(CVE-2026-109618和CVE-2026-109619)为CVSS9.2级PHP远程代码执行漏洞,影响全球70%互联网网站,已存在超十年。漏洞为内存安全问题,可导致未认证RCE及敏感数据泄露。AI在漏洞发现和利用开发中发挥关键作用,已出现大规模野外利用。官方修复版本为PHP8.5.12、8.4.27、8.3.36和8.2.35,紧急缓解措施包括禁用session.upload\\_progress。
评论:0   参与:  0