【问题标题】:Creating a file that becomes executable chmod 777 gihook file创建成为可执行 chmod 777 gihook 文件的文件
【发布时间】:2021-05-29 22:17:29
【问题描述】:

我在 UBUNTU 上使用 rails 工作

IM 触发了一个将 gitook 文件写入 git 目录的初始化程序,一切都很好,文件被创建的代码很好,但是在提交触发器上我得到了

hint: The '.git/hooks/commit-msg' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.

该文件是使用可执行权限创建的....我认为?

new_file = File.new(file, File::CREAT|File::TRUNC|File::RDWR, 777)

但是,我认为我做错了什么或错过了许可步骤?

其次,如何从 gitook 访问提交中的变量?哪里有好的文档?

【问题讨论】:

    标签: ruby-on-rails ruby git ubuntu githooks


    【解决方案1】:

    您的 Ruby 代码中有错字。通常,Unix 文件模式以八进制指定,这是人们在编程中实际使用八进制的最后一种情况。但是,您在这里指定了一个十进制值。

    因此,您指定的八进制模式是1411,这使您的文件对用户没有可执行权限,对组或其他人没有读取权限,并且设置了粘滞位,这可能不是什么你想要的。

    你可以通过将模式写成0777来解决这个问题:

    new_file = File.new(file, File::CREAT|File::TRUNC|File::RDWR, 0777)
    

    还要注意,使用模式 777 写入文件通常是一个安全问题,因为系统上的任何用户都可以修改它们。这意味着任何可以访问编写此挂钩的目录的用户都可以修改它以在挂钩运行时执行任意代码(看起来就像是在运行git commit 时)。更合适的模式可能是 755,它可以防止用户以外的其他方对其进行修改。

    commit-msg 挂钩的文档位于 githooks 手册页中。根据文档:

    它采用单个参数,即保存提交日志消息的文件的名称。以非零状态退出会导致命令中止。

    【讨论】:

    • 感谢您提供如此完整的答案,我已将其更改为 0755 而不是完全打开的 0777 ,我曾尝试 0777 但失败了.....因为我愚蠢地将文件名更改为一个测试文件并忘记了这一点,所以无论如何我的更改都没有执行......这将教我在午夜之后编码。
    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2021-05-11
    • 2013-02-06
    相关资源
    最近更新 更多