【问题标题】:Creating a directory in "/var/log/" using C in Linux在 Linux 中使用 C 在“/var/log/”中创建目录
【发布时间】:2015-03-09 09:54:42
【问题描述】:

我需要使用 C 程序在 /var/log 中创建一个目录,该 C 程序不 以超级用户权限运行。 This linked question didn't help me!

我了解/var/log 的文件权限不允许我们写入,也不想更改。 我使用mkdir() 创建目录,但由于明显原因而失败。

那么,普通(没有root权限)C程序是否可以在/var/log中创建目录?

我的目标:使用 C 程序在 /var/log 中创建一个目录,而不更改父级的文件权限。我应该以 root 身份运行我的程序吗?但我不愿意。

请帮助。 TIA

【问题讨论】:

  • “我没有权限做 X。我不想做那些允许我做 X 的事情。我能做什么?” ...

标签: c linux mkdir


【解决方案1】:

您不能以编程方式推翻文件系统的访问控制。

您可以尝试使用系统提供的现有日志记录机制。例如,systemd 附带的journald 允许按用户进行日志记录。

如果您的程序以用户身份运行,它应该只使用用户的主目录来存储文件,无论是配置还是日志记录。这样想:如果多个用户想同时使用您的程序会怎样?

如果您的程序确实是系统守护程序,请查看在其自己用户下运行的其他软件。他们可以通过调用他们的 init 脚本准备自己的日志目录(以不同的用户身份运行守护程序本身),或者在启动期间清除他们的权限。一个例子是 httpd,它需要 root 权限来监听端口 80。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多