Linux RPC删除注册

Linux RPC删除注册

CentOS-5.4 上有一个运行良好的程序(守护进程),它本身的 RPC 注册为程序 191299,版本 10。

程序非计划停止后,由于 RPC 注册仍然存在,因此程序无法重新启动,因为取消注册尝试会导致错误:

# rpcinfo -d 191299 10    
rpcinfo: Could not delete registration for prog 191299 version 10    

service portmap restart尽管重启成功,但也没有帮助。

请您提供建议——如何强制删除 RPC 注册?

非常感谢!

答案1

不要使用服务端口映射重启。它在停止 portmap 之前存储了它的当前状态,并在启动后恢复它。最好这样做停止开始。 或者

# service portmap stop
# rm -f /var/run/portmap.state
# service portmap start

答案2

在 CentOS 6 上,rpcbind(在其默认模式下)允许任何人通过 localhost 创建映射,但仅当您拥有该映射或为 root 时才允许删除该映射。如果绑定是通过 UDP 或 TCP 创建的,则 rpcbind 无法对发出修改/删除请求的用户进行身份验证,因此请求会被拒绝。

以 root 身份调用rpcinfo -d应删除映射。在 CentOS 6 上,系统重启时也会清除 RPC 映射(至少在我们的安装中是这样)。

如果使用 UNIX 套接字 () 绑定端口/var/run/rpcbind.sock,则能够对请求者进行身份验证,并且您将在的结果中显示为所有者rpcinforpcinfo -d如果使用进行绑定的同一用户帐户进行调用,则将会工作。

相关内容