问题标签 [lchown]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
46 浏览

c++ - 为什么 lchown() 总是通过 xinetd 在 root 进程中的组上失败?

我有一个 C++ 应用程序,它通过xinetdLinux Centos5 64 位上的服务在另一台机器上调用服务器。被调用的进程以 root 身份调用,但我认为它可能是一个不具备全部功能的 root,因为我在应用程序中观察到。

在我的应用程序中,通过 inetd 调用以 root 身份运行,我创建了一个新文件和链接(每个最初的用户 root 和组 root),然后lchown()在所有者上成功调用,但它总是在使用 EPERMS 的组上失败,Operation not permitted. 将用户和组组合成一次调用lchown()同样失败。

我的应用程序中有问题的代码是这样的:

在我的代码运行后,新创建的文件以 NFS 挂载目录的形式存在,具有以下权限:

gid 500 是“me”的主要组,另一组是“wheel”。

在 shell 提示符下,我可以毫无问题chgrp地登录root到组me​​。

当我的应用程序通过 inetd 调用时,为什么 lchown() 的行为会有所不同?请注意,以 root 身份调用的同一应用程序通过ssh正确设置文件的组所有者。为什么通过 ssh 的 root 与通过 xinetd 的 root 不同?