You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3中Shell脚本与CMD运行Telegram Lua脚本结果不一致问题

解决树莓派3上Telegram CLI开机脚本报错change_user_group: can't find the user telegramd的问题

这个问题我碰过好几次,根源其实很好理解:你手动在CMD执行命令时用的是pi用户,Telegram CLI不会强制切换身份;但开机启动脚本默认通常是以root权限运行的,而Telegram CLI出于安全考量,会自动尝试切换到telegramd用户运行——但你的系统里根本没创建这个用户,所以就抛出了这个报错。

给你几个可行的解决方案,按需选择就行:

方案1:创建缺失的telegramd用户和组

如果想遵循Telegram CLI的安全设计,那就手动创建这个用户:

# 创建telegramd系统用户(无登录权限)
sudo useradd -r -s /usr/sbin/nologin telegramd
# 创建同名组
sudo groupadd telegramd
# 将用户加入组
sudo usermod -aG telegramd telegramd
# 确保Telegram CLI目录权限正确
sudo chown -R telegramd:telegramd /home/pi/tg

做完这些,开机脚本再以root运行时,CLI就能正常切换用户了。

方案2:让脚本强制用pi用户执行(更省事)

不想折腾新用户的话,直接修改你的start.sh,让Telegram CLI不切换用户,或者干脆以pi身份执行整个命令:

方式A:给CLI加--user参数

修改后的脚本:

#!/bin/bash
tgpath=/home/pi/tg
cd ${tgpath}
cmd="bin/telegram-cli --user pi -k tg-server.pub -W -s action4.lua"
eval $cmd

方式B:用su切换到pi用户执行

这种方式更稳妥,完全模拟你手动执行的环境:

#!/bin/bash
su - pi -c "cd /home/pi/tg && bin/telegram-cli -k tg-server.pub -W -s action4.lua"

方案3:调整开机脚本的运行用户

如果你的开机脚本是通过systemd服务、rc.local或者其他方式启动的,直接配置它以pi用户运行就行。比如用systemd的话,在服务文件里加上User=pi这一行,彻底避开root权限带来的用户切换问题。

个人更推荐方案2,毕竟你手动执行时用pi用户完全正常,直接复用这个环境最省心,也不容易踩权限坑。

内容的提问来源于stack exchange,提问作者eonmax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:27