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

树莓派Linux环境下无需sudo调用psutil.users()的解决方案求助

问题原因

psutil.users() 依赖读取 /var/run/utmp 文件获取登录用户列表,树莓派系统默认该文件仅对 root 用户和 utmp 组开放读取权限,普通用户无访问权限,因此非 sudo 运行时返回空列表。

解决方案

方案一:赋予普通用户读取 utmp 文件的权限

将当前用户加入 utmp 用户组,即可获取该文件的读取权限:

sudo usermod -aG utmp $USER

执行命令后注销并重新登录,再运行原 Python 脚本即可正常获取用户列表。

方案二:不依赖 psutil,直接获取当前运行脚本的用户

如果仅需获取当前运行脚本的用户(而非所有登录用户),推荐以下无需修改系统权限的方法,兼容性更强(尤其适配服务启动场景):

import os
import pwd

def get_current_username():
    # 通过用户ID映射获取用户名,后台服务场景也能正常工作
    return pwd.getpwuid(os.getuid())[0]

def main():
    user = get_current_username()
    print(user)

if __name__ == "__main__":
    main()

补充说明

  • 终端运行场景下,也可直接读取环境变量:os.environ.get('USER'),但后台服务环境变量可能不完整,pwd.getpwuid(os.getuid()) 可靠性更高。
  • os.getlogin() 不适用于服务启动场景,因为后台服务无关联终端会话,会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:35:01