树莓派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
相关产品推荐
相关产品推荐

