Nor*_*sey 18 unix shell file-permissions
我正在与一位同事共享一个git存储库,并且因为git没有传播完整的Unix文件权限,所以我们有一个"挂钩",它在更新时运行,设置需要设置的"其他"权限.问题?钩子使用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
Run Code Online (Sandbox Code Playgroud)
我们都在ta105小组中.
笔记:
我们git不仅使用协调更改,还将repo作为课程网站发布.发布网站是回购的主要目的.权限脚本使用git钩子在每次更新时运行,并确保学生无权阅读尚未公开的解决方案.
请不要暗示我有错误的umask.并非repo中的所有文件都应具有相同的权限,并且无论选择何种umask,都需要更改某些文件的权限.更不用说我对我的同事强加我的umask偏好是不礼貌的.
更新:我刚刚了解到,在我们的环境中,root被撤销到nobody我们有权访问的所有计算机上,因此依赖root权限的解决方案将无效.
至少有一个Unix我已经看到了一种方法来给某人chmod和chown特定组拥有的所有文件的权限.这有时被称为"组超级用户"或类似的东西.
我见过的唯一的Unix正面是Encore Multimax运行的Unix版本.
我搜索了一下,虽然我记得在Linux中对这种能力的一些模糊引用,但我一直无法找到它们.所以这可能不是一个选择.幸运的是,它可以被模拟,虽然模拟有点危险.
模拟这种方法的方法是创建一个非常具体的suid程序,在检查您是拥有该文件的同一组的成员之后chmod以root身份执行,并且您的用户名在具有/etc/chmod_group必须的特殊文件中列为具有该权限由root拥有,只能由root读取和写入.
| 归档时间: |
|
| 查看次数: |
19663 次 |
| 最近记录: |