【问题标题】:Script to execute chmod continuously连续执行 chmod 的脚本
【发布时间】:2018-04-29 19:23:43
【问题描述】:

我正在使用 Solaris 服务器。我正在使用具有所有访问权限的ADMIN 用户,而其他同事正在使用具有有限访问权限的其他用户。 当其他人想要访问日志时,我必须在日志文件夹中手动提供chmod 755,当生成新文件时,我必须再次执行chmod

有没有办法编写脚本在某些文件夹上每 2 分钟连续运行一次 chmod

【问题讨论】:

  • Every problem is a nail? 而不是实际修复使用不适合您需要的权限创建的文件的问题(可能通过配置记录器,或将其设置为umask ),你增加了不必要的复杂性。

标签: shell solaris chmod


【解决方案1】:

您可以考虑在包含目录上设置GUID 位,并将目录的组所有权设置为这些其他人所属的组。

这样,在目录中创建的任何文件都将自动并始终继承目录的组,而不是创建它们的用户的组。

因此,具体而言,如果您的日志文件位于 /var/log/somewhere 中,您会这样做:

chmod g+s /var/log/somewhere
chgrp OTHERADMINSGROUP /var/log/somewhere

现在通过创建一个文件并查看其组进行测试:

touch /var/log/somewhere/aFile
ls -l /var/log/somewhere/aFile

您应该会看到该文件属于 OTHERADMINSGROUP 而不是您自己的组。

【讨论】:

    【解决方案2】:

    我认为每 2 分钟分配一次权限并不是一个好主意

    最好更改日志文件所有者的 umask 以创建具有默认 777 权限的新日志文件

    如果你想像你的想法那样使用,就这样做

    1. 打开 crontab crontab -e
    2. 添加条目以每 2 分钟执行一次命令 */2 * * * * chmod -R /path_to_log_folder/
    3. 保存并关闭 :wq 如果是 vi 编辑器 如果是 nano 编辑器,请按 x 并回车

    【讨论】:

      【解决方案3】:

      您需要的是cron 工作。

      要设置cron 任务,请以ADMIN 用户身份运行此命令:

      crontab -e
      

      它将打开一个文本编辑器供您输入新工作。在文本编辑器中写入以下行,将[file1 file2 ... fileN] 替换为您想要的文件chmod,然后保存。它应该每 2 分钟运行一次 chmod 命令。

      */2 * * * * chmod 755 [file1 file2 ... fileN]
      

      第一个解决方案不适用于每个系统!我不太了解 Solaris,但如果您对第一个格式有疑问,这里有一个解决方法,可以让您在每个系统上运行命令小时在第 0 分钟,第 2 分钟,第 4 分钟,依此类推,直到第 58 分钟:

      0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,3 6,38,40,42,44,46,48,49,50,52,54,56,58 * * * * chmod 755 [file1 file2 ... fileN]
      

      您可以使用列出您的cron 任务的命令crontab -l 检查您的作业是否已正确保存。

      我邀请您阅读cron 上的一些文档,以便您了解crontab 使用的格式。 Here is a good link

      【讨论】:

      • */2 表示“每 2 分钟”。 */5 表示“每 5 分钟”。 */30 表示“每 30 分钟”等。
      猜你喜欢
      • 2012-01-29
      • 2015-09-12
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多