在 Linux 中使用 C 在“/var/log/”中创建目录
Creating a directory in "/var/log/" using C in Linux
我需要使用 C 程序在 /var/log 中创建一个目录,该程序执行 NOT 运行超级用户权限。
This linked question didn't help me!
我了解 /var/log 的文件权限不允许我们在其中写入,我也不想更改它。
我使用 mkdir()
创建目录,但由于显而易见的原因而失败。
那么,普通的(没有root权限的)C程序可以在/var/log中创建一个目录吗?
我的目标:在/var/log中使用C程序创建目录而不改变父文件权限。我应该 运行 我的程序作为 root 吗?但我不想。
请帮忙。
TIA
您不能以编程方式推翻文件系统的访问控制。
您可以尝试做的是使用系统提供的现有日志记录机制。例如,systemd 附带的 journald
允许对每个用户进行日志记录。
如果您的程序以用户身份运行,它应该只使用用户的主目录来存储文件,无论是配置文件还是日志文件。这样想:如果多个用户想同时使用您的程序会怎样?
如果你的程序真的是一个系统守护进程,看看在他们自己的用户下运行的其他软件。他们可以让调用它们的 init 脚本准备自己的日志目录(运行 守护进程本身作为不同的用户),或者他们在启动期间清除他们的特权。例如httpd,需要root权限才能监听80端口
我需要使用 C 程序在 /var/log 中创建一个目录,该程序执行 NOT 运行超级用户权限。 This linked question didn't help me!
我了解 /var/log 的文件权限不允许我们在其中写入,我也不想更改它。
我使用 mkdir()
创建目录,但由于显而易见的原因而失败。
那么,普通的(没有root权限的)C程序可以在/var/log中创建一个目录吗?
我的目标:在/var/log中使用C程序创建目录而不改变父文件权限。我应该 运行 我的程序作为 root 吗?但我不想。
请帮忙。 TIA
您不能以编程方式推翻文件系统的访问控制。
您可以尝试做的是使用系统提供的现有日志记录机制。例如,systemd 附带的 journald
允许对每个用户进行日志记录。
如果您的程序以用户身份运行,它应该只使用用户的主目录来存储文件,无论是配置文件还是日志文件。这样想:如果多个用户想同时使用您的程序会怎样?
如果你的程序真的是一个系统守护进程,看看在他们自己的用户下运行的其他软件。他们可以让调用它们的 init 脚本准备自己的日志目录(运行 守护进程本身作为不同的用户),或者他们在启动期间清除他们的特权。例如httpd,需要root权限才能监听80端口