我需要使用C程序在/var/log中创建一个目录,该程序执行,而不是以超级用户权限运行。This linked question didn't help me!
我知道/var/log的文件权限不允许我们在其中写入,也不想更改它。我使用mkdir()创建目录,该目录由于明显的原因而失败。
那么,普通的(没有根权限的)C程序是否可以在/var/log中创建一个目录?
我的目标:使用/var/log中的C程序创建一个目录,而不更改父文件权限。我应该以根用户的身份运行我的程序吗?但我宁愿不喜欢。
帮帮忙吧。提亚
发布于 2015-03-09 10:10:16
您不能以编程方式推翻文件系统的访问控制。
您可以尝试使用系统提供的现有日志机制。例如,systemd附带的journald允许每个用户进行日志记录。
如果您的程序以用户身份运行,它应该只使用用户的主目录来存储文件,无论是配置还是日志记录。这样想一想:如果多个用户同时使用您的程序,会发生什么情况?
如果您的程序确实是一个系统守护进程,请查看其他在自己用户下运行的软件。它们可以通过调用它们的init脚本(以不同用户的身份运行守护进程本身)准备自己的日志目录,或者在启动时清除它们的特权。一个例子是httpd,它需要根权限来侦听端口80。
https://stackoverflow.com/questions/28939103
复制相似问题