在不同机器上开发时的文件系统权限

Posted

技术标签:

【中文标题】在不同机器上开发时的文件系统权限【英文标题】:filesystem permissions while developing on different machines 【发布时间】:2009-04-23 22:12:02 【问题描述】:

我已经在一个便携式卷(usb 驱动器上的 truecrypt 卷)上安装了一个 xampp(apache + mysql + php)堆栈,我在不同的 linux 机器上使用它,用于 webapp 开发。

这个卷是用 ext3 格式化的,所以我遇到了权限问题,因为我不能在每台机器上都是同一个用户。例如,我尝试检查在另一台机器上启动的项目的 git 状态并拒绝访问。

上次我遇到类似的问题时,我对整个目录执行了 chmod 777(或者是 chown?),所以我猜我的 php 文件的权限状态是混乱的。这次我也担心git文件和我最近安装的symfony web框架之类的特殊情况。

我应该如何处理这种情况? 我很想正确设置此权限问题。

非常感谢您的关注。


编辑: 每次我使用不同的机器时,我可能需要在本地编写一个脚本“sudo chown lampp:lamppusers”。或者一些带有本地存储库导出的 git voodoo 技巧?有什么想法吗?

【问题讨论】:

【参考方案1】:

我怀疑是否有这样的解决方法 - 您可以尝试使用 SELinux ACL 而不是通常的权限,但我认为这对您来说太过分了。

我建议使用 chmod 将整个目录设置为 777(chown 更改所有权),因为每个用户所在的用户和组在每台机器上都会有所不同,你真的不能做得更好。您在这里唯一的问题是安全性-但是出于您自己的目的,它在您的本地盒子上,我认为没有问题。直到您将文件复制到服务器,然后您最好将它们正确设置回来。

您可以尝试针对 LDAP 服务器进行身份验证,检索您输入的用户名的 uid,并将其映射到每台 PC 上的相同 uid,这样您就可以设置组或所有者一次。 (我认为,您必须询问对 LDAP ud 映射更有经验的人)。

【讨论】:

是的,我其实很害怕这个答案...让我们看看是否有人提出了另一个想法。 另一种方法是确保您在每台机器上使用的 uid 相同。 “相同的 uid”技巧很有趣,我想知道这是否可行。【参考方案2】:

这似乎是我找到的最佳解决方案:

sudo chown -R polypheme:lamppusers webdir

这样我可以用我的本地用户名和我的本地组再次拥有整个目录。

polypheme 是用户名 lamppusers 是一个组名 webdir 是包含我所有 Web 开发文件的目录

请注意,在计算机 1 上,我的用户名是 polypheme,我属于 Lamppusers 组;在计算机 2 上,我的用户名是 polypheme,我属于 Lamppusers 组。 用户名和组名完全相同。 如果名字碰巧不同,我不能 100% 确定这会完美地工作。

我没有修改任何好的 chmod,因为问题比简单地用全局扁平化每个文件权限要复杂得多

chmod -R 744 webdir  

在 symfony 框架中处理受保护的文件是错误的。我猜也是 .git/ 文件。 (gbjbaanb 是对的)

此时,我已经恢复了以前在另一台机器上的相同配置,这正是我所寻找的。我又可以工作了。

知道了这一点,我的问题突然显得很愚蠢。 好吧,多计算机环境使它变得非常棘手,因此变得有价值。 (至少对我来说)

(此答案将在经过适当测试后立即生效)

【讨论】:

这实际上工作得很好,因此我验证了我自己的答案。我希望它至少可以帮助在这种特殊情况下同样困惑的其他人。

以上是关于在不同机器上开发时的文件系统权限的主要内容,如果未能解决你的问题,请参考以下文章

2 权限(组件)

Linux关于权限

Linux关于权限

【umask】关于umask值及其对应的文件权限

权限设计系统——RBAC

单台centos机器启动多个vsftpd服务