我在 Windows 上使用 NetBeans 8.0.1,并在 LAN 上的 Debian PC 上的远程主机上进行编译/运行/调试。我已将 NetBeans 主机设置为 root。我还将其设置为使用 gdb 进行调试。我的 C 代码包含 alsa 库并尝试调用snd_pcm_open
并获取句柄。
问题是,当我从 NetBeans 调试可执行文件时,我收到此错误消息,我认为这基本上意味着权限问题:
ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) 无法打开从属。
检测结果:
- 本地机器终端以root身份正确运行。
- 本地机器终端以非root用户身份正确运行。
- 以非 root 用户身份进行远程 SSH 运行正常。
- 以 root 身份进行远程 SSH 时出现错误消息。
我尝试将根添加到音频组,但没有帮助。
因此基本问题是:
- 这应该被视为环境问题还是 shell 设置问题?如果是,我应该寻找什么?
- 远程主机设置是否有最佳实践?是否应以某种方式设置非 root 用户以允许编译和 gdb 等?
答案1
- 以 root 身份进行远程 SSH 时出现错误消息。
首先猜测是远程主机不允许 root 通过 ssh 登录。查看文件/etc/ssh/sshd_config
中的PermitRootLogin
指令,然后查看sshd_config
手册页以了解可能的选项。或者,查看/var/log/auth.log
远程主机,假设您有权限在那里执行此操作。您应该看到有关原因的线索,假设它只是无法以 root 身份登录。
如果你能以 root 身份登录,然后希望其他人有答案。
我尝试将根添加到音频组,但没有帮助。
如果您无法登录,则群组成员身份就无关紧要。
远程主机设置是否有最佳实践?是否应以某种方式设置非 root 用户以允许编译和 gdb 等?
首先,允许远程 root 登录(通过 ssh 或任何服务)是不好的做法。
其次,总是(在我看来)如果能在用户空间中尽可能多地运行,那就最好了。