【问题标题】:Access permissions for directory in LinuxLinux中目录的访问权限
【发布时间】:2013-11-25 20:19:20
【问题描述】:

我有一个在 web 服务器目录 (/var/www/log) 中创建日志文件的程序。每天它都会生成一个新的日志文件。 我已将此目录的访问权限设置为 777

chmod 777 -R /var/www/log

但是当系统为新的一天生成日志文件时,它没有访问权限 777。我必须再次手动执行。 如何正确设置目录的权限?该目录下的所有文件都必须自动有777。

【问题讨论】:

  • 真的取决于你的程序。此外,每个用户都有一个默认掩码,由 umask 定义。
  • 我认为这个问题在 superuser.com 上会做得更好
  • 除非您修改 Linux 内核,否则这不太可能发生。常规文件最多使用 666 模式创建,除非它们被标记为可执行文件。总的来说,这似乎是一个非常糟糕的主意(tm)。为什么你希望你的日志文件被打开以被任何人读取/销毁?
  • 你的程序没有正确设置umask

标签: linux chmod


【解决方案1】:
  1. 让不需要的可执行文件是一个非常的坏主意:这是一个可能的安全风险,而且不小。在您的情况下,root 拥有的某些文件将可向公众写入。对于每个对该文件具有写权限的人来说,将它们修改为 以 root 身份运行(是的,您可以使任何文件在 Linux 下表现为程序)非常容易。正如 twalberg 指出的那样:这是一个 Really Bad Idea™
  2. 不要直接写入日志文件。它使系统管理员的生活变得不必要地困难。请改用syslog。每种编程语言都可以选择记录到 syslog。背后的原因:很可能而且经常发生,当公司达到一定规模时,他们使用集中式系统日志服务器。当每个包都运行良好时,所要做的就是更改一个配置文件,并将所有日志条目发送到专用的系统日志服务器。或者管理员可能想要更改写入日志文件的位置,例如从 /var/www/log 更改为 /var/log/www。 syslogd.conf 中的一行,但直接写入日志文件时的行数不可预测。直接编写日志文件可能是一个不错的选择,但默认情况下这样做是不好的做法。
  3. 如果您运行的软件不是您编写的,但不是您的 linux 发行版的原生软件,您可以以 root 身份启动它,并使用 runusersudo 命令将其权限授予该软件的专用用户.该专用用户可以对日志文件具有写访问权。这仍然是一个黑客。服务应该能够以nobody 用户身份运行。

总的来说,我不明白为什么所有用户必须有权访问所有日志文件。请详细说明。

为了完整性:

最有可能发生的是logrotate 启动。它是一种压缩旧日志文件并删除过时日志文件并根据/etc/logrotate.conf 中配置的内容和其中包含的文件创建新日志文件的工具。否则你的服务器会在一段时间后用完空间。您可以更改 logrotate 的配置或

不要做以下事情

您可以将chmod 0777 -R /var/www/log 添加到 crontab 根目录或各种系统 crontab。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2015-12-22
    • 2015-05-28
    • 1970-01-01
    • 2021-09-13
    • 2020-07-31
    • 2017-05-26
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多