gpt4 book ai didi

shell - 当我不拥有文件但对目录具有写权限时,如何更改 Unix 权限?

转载 作者:行者123 更新时间:2023-12-03 13:35:08 25 4
gpt4 key购买 nike

我正在与一位同事共享一个 git 存储库,并且由于 git 不会传播 Unix 文件权限的全部内容,我们有一个在更新时运行的“钩子(Hook)”,它根据需要设置“其他”权限。问题?钩子(Hook)使用 chmod ,事实证明,当我的同事提交一个文件时,他拥有它,所以我无法运行 chmod就可以了,反之亦然。这些目录都是可组​​写的、粘性的,所以我相信我们中的任何一个人都有权删除任何文件并将其替换为同名、相同内容但所有权不同的文件。大概那时我们可以chmod它。但这似乎是一个非常大的锤子,我有点担心把它搞砸。所以,两个问题:

  • 有人能想出另一种方法吗?
  • 如果没有, 的最佳设计是什么?防弹实现“让这个文件属于我”的shell脚本?没有跨文件系统移动等...

  • 对于那些可能没有意识到的人,写权限并不授予 chmod的权限。 :
    % ls -l value.c
    -rw-rw---- 1 agallant ta105 133 Feb 10 13:37 value.c
    % [ -w value.c ] && echo writeable
    writeable
    % chmod o+r value.c
    chmod: changing permissions of `value.c': Operation not permitted

    我们都在 ta105团体。

    笔记:
  • 我们正在使用 git不仅要协调更改,还要将 repo 发布为类(class)网站。发布网站是 repo 的主要目的。权限脚本在每次更新时使用 git Hook 运行,它确保学生无权阅读尚未公开的解决方案。
  • 请不要提示我有错误的umask。并非 repo 中的所有文件都应具有相同的权限,并且无论选择什么 umask,都需要更改某些文件的权限。更不用说我将我的 umask 偏好强加给我的同事是不礼貌的。
  • 更新 : 我刚刚了解到,在我们的环境中,root 被取消为 nobody在我们有权访问的所有机器上,因此依赖于 root 权限的解决方案将无法工作。
  • 最佳答案

    至少有一个 Unix,我在其中看到了一种方法来给某人 chmodchown对特定组拥有的所有文件的权限。这有时被称为“组 super 用户”或类似的东西。

    我唯一确定的 Unix 是 Encore Multimax 的 Unix 版本。跑了。

    我进行了一些搜索,虽然我记得在 Linux 中对此类功能的一些模糊引用,但我一直无法找到它们。所以这可能不是一个选择。幸运的是,它可以被模拟,尽管模拟有点危险。

    模拟这种情况的方法是制作一个非常具体的 suid 程序来执行 chmod在检查您是拥有该文件的同一组的成员后以 root 身份,并且您的用户名在特殊的 /etc/chmod_group 中被列为具有该权限必须由 root 拥有并且只能由 root 读写的文件。

    关于shell - 当我不拥有文件但对目录具有写权限时,如何更改 Unix 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4965561/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com