在树莓派上以root播放mp3文件会出现标题中XDG_RUNTIME_DIR的错误,而以普通用户的身份确能播放mp3文件,本文提供一种以root身份播放mp3文件的办法。
1 问题原因
Linux的音频框架把以root运行音频文件看成是一种不安全的行为,只允许普通用户来运行音频文件。
2 解决思路
2.1 思路
将root转为普通用户播放音频文件,等播完音频文件,再将身份转为root,最后该过程用一个指令就能完成。
2.2 su命令简介
功 能:切换当前用户身份到其他用户身份,变更时需输入所要变更到用户的帐号与密码。
语 法:su [选项] [参数]
补 充: 普通用户直接su,切换到root用户;
选项:
-c:以要切换用户的身份执行一条指令,执行完指定的指令后,即恢复原来的身份;
3 实现
本人的普通用户名是pi,输入如下指令
su pi -c "python3 alertTest.py"
即可正常播放mp3音频文件。如下图所示
4 远程播放
以上步骤叙述的是本地播放的情况,如果通过SSH远程播放,实际测试了下,通过SSH以root登上去,无论是root身份还是普通用户身份,都是播放不了的;但是通过SSH以普通用户登录进去,然后切成root,再用上面方法,可以正常播放。
自己找了很多资料,下面的说法感觉比较靠谱:
SSH连接本身是基于身份验证的,一旦建立了连接并获得root权限,即使随后切换到了普通用户,原始的SSH连接并没有改变,它只是在该连接内部改变了用户权限。
有不同意见的亲可以一块讨论下。