近期有EasyDSS流媒体服务器用户反应运行easydss for Linux会遇到:
easydss: [emerg] getpwnam("nobody") failed
错误,导致easydss无法运行。
原因
我们使用getpwnam这个函数来获取nobody账户的账户信息,并且我们默认任务这个nobody属于nobody用户组。
这里主要分为两种情况。
1.在部分Linux发行版中默认无nobody用户组(如:ubuntu 14.04.1 LTS)。这里就需要添加nobody用户组,并且把nobody用户加入nobody用户组。
命令为:
groupadd nobody
usermod -a -G nobody nobody
查看用户命令为cat /etc/passwd,查看用户组为cat /etc/group
2.我们easydss for linux使用ubuntu 14.04 LTS编译,并且“试图”使用-static解决所有linux发行版的运行兼容问题,结果,这里就是此问题引起。
if you link your program statically to GNU libc and use name services (getpwnam() etc.), you end up linked dynamically against libc’s NSS (name service switch).
解决方案
运行easydss for linux时,遇到getpwnam错误时,检查nobody用户和nobody组是否存在,不存在则添加。
较小众或者版本较低的linux发行版,请联系EasyDarwin团队进行支持。