如何允许多个用户管理linux文件

时间:2015-11-18 04:20:38

标签: linux

作为Linux业余爱好者,我已经能够管理自己的文件了......但是现在我正和其他2人合作,这已成为一个问题。我已经尝试创建他们的帐户并使他们的主要组成为我放在文件上的chgrp,但他们没有获得编辑权限,除非我将它们称为用户本身。然后我的游戏服务器最终收回所有权。

因此,对于一个具体的例子,假设我想创建一个新用户Johnny。我希望他只访问此处显示的BetonQuest子文件夹...他可以编辑该文件夹下面任何位置的文件夹和文件。有关此处使用的命令的任何提示吗?

enter image description here

3 个答案:

答案 0 :(得分:3)

术语:文件具有所有者和组(也称为组所有者)。它被称为文件的组,而不是它的chgrp。 chgrp(1)是用于更改文件组的命令。

如何设置对目录树的共享访问

  • 让每个人都将umask设置为002,这样新创建的文件和目录就具有rwxrwxr-w权限(只有在设计良好的程序创建文件时使用的0777才能屏蔽其他文件和目录)。
  • 将所有用户添加到该项目的组
  • 可选:将每个人的主要群组设为共享群组
  • 如果该组不是所有用户的主要组,则将所有目录设置为setgid,这样新创建的文件和目录将继承目录的gid而不是用户的主要组。 (但是,新创建的目录不会自动setgid,所以这就是让每个人的主要组成为共享组的想法。)

    IIRC,只有文件的所有者才能chgrp它。一旦设置完毕,它应该继续工作,但你可能需要sudo或者其他东西来开始设置。

更精细的控制:

如果您希望不同的用户组访问不同的目录,最好的选择是ACL。我没有使用它们,但是它们允许您向每个文件/目录添加允许的用户列表。这比为每个不同的用户组合使用不同的组要方便得多。例如

chgrp -R some_subdir  joe_bill_dave    # Use ACLs instead of this mess
chgrp -R other_subdir bill_dave

更现代的方式:版本控制

说了这么多,你可能想要使用像git这样的版本控制系统来管理变更。人们可以进行更改,提交它们,然后将它们推送到服务器上的repo。在服务器上设置一个特殊帐户,只能运行git命令,而不是登录shell,并添加人们的ssh公钥。

VCS是一种更现代化的方式,允许多人修改某些内容,而不是具有写访问权限的老式Unix多用户。

答案 1 :(得分:1)

目录列表看起来没问题。您可能正在遇到Linux组的一个令人讨厌的怪癖。尝试查看Linux, Why can't I write even though I have group permissions?Why can't a group member modify a file in a group he is part of?

答案 2 :(得分:1)

另一个想法是将它们添加到sudoers,以便他们可以在拥有这些文件的盒子上变成用户。

他们会自己登录

然后他们会做sudo命令来编辑/配置/无论什么

sudo -u gameGod vi /some/game/file/config.txt