![以 root 身份运行命令但以其他用户身份创建文件?](https://linux22.com/image/1315340/%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E4%BD%86%E4%BB%A5%E5%85%B6%E4%BB%96%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%EF%BC%9F.png)
有没有办法以 root 身份运行命令(sudo
也许使用)但该命令创建的文件归其他人所有?
一些背景信息:我有一个 Web 服务器,我以 root 身份运行它,以便能够访问端口 80。该 Web 服务器创建文件,然后这些文件归 root 所有。但是,当我以普通用户身份执行 make(实际上使用 Maven)时,我收到一堆错误,因为它无法删除一些 root 拥有的文件。因此,如果我可以以 root 身份运行 Web 服务器,但它创建的文件归我所有,那就太好了。
我编写了一个脚本来“清除”干扰制作的文件,所以我对这个问题的解决方案并不感兴趣...我只是好奇是否有办法以 root 身份运行但以其他人的身份创建文件。
答案1
有几种方法可以实现这一点...
这些文件具有标记,以便其他人(o,从左到右的最后一组权限)能够对其进行写入。这样,您无需成为 root 即可修改文件。
您的用户与 root 用户属于同一个组。这样,如果您拥有写入文件的组权限(g,中间权限集),则无需 root 身份即可修改文件。
编辑:另外,作为丹尼尔声明,为了能够删除文件,您还需要拥有父文件夹的权限。
答案2
正是由于启动 http 端口监听通常需要额外的权限,大多数 Web 服务器都具有启动后采用不同身份的内置功能。例如,在 Apache 中,httpd.conf 文件包含控制此功能的条目“用户”和“组”。
通常,Web 服务器有自己的专用用户和组。浏览您的配置并检查是否可以进行设置。