我有一个目录,其中有一个由多个用户共享的项目。这些用户使用 SSH 访问此目录并修改/创建文件。
这个项目应该只对特定的用户组是可写的:我们称之为“mygroup”。在 SSH 会话期间,当前用户创建的所有文件/目录默认应归组“mygroup”所有,并具有组可写权限。
我可以解决权限问题umask:
$ cd project
$ umask 002
$ touch test.txt
Run Code Online (Sandbox Code Playgroud)
文件“test.txt”现在是组可写的,但仍然属于我的默认组(“mislav”,与我的用户名相同)而不是“mygroup”。我可以chgrp递归地设置所需的组,但我想知道是否有一种方法可以隐式设置某些组,例如 umask 在会话期间更改默认权限。
这个特定目录是一个带有工作副本的共享 git 存储库,我希望git checkout和git reset操作为在工作副本中创建的新文件设置正确的掩码和组。操作系统是 Ubuntu Linux。
更新:一位同事建议我应该查看POSIX ACL 的getfacl/setfacl,但下面结合umask 002当前会话中的解决方案对我来说已经足够了,而且要简单得多。
我通常做
sudo chgrp -R www-data <directory>
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上设置一个可由 Apache 进程写入的文件夹。什么是 Mac OS X 等价物www-data?
我已经将 chgrp 用于“日志”和“缓存”目录,以及 chmod 770,因此分配到该站点的 linux 用户(用于从命令行执行脚本)和用户“apache”都可以读/写日志和缓存文件(因为两个用户都属于该站点的组)。
问题是当其中一个创建文件时,另一个无法写入或删除它。正在创建的文件归其创建者所有,但不属于该组。我认为在父目录中使用 chgrp 是解决方案。
有任何想法吗?
PS:我使用的是 Centos 5.5 和 PHP 5.3
我正在使用 rsync 将目录同步到 USB 安装的设备。该设备随myuser:root所有权自动挂载。当我使用 rsync 我的目录(具有myuser:myuser所有权)时-a,我收到许多以下错误:
rsync: chgrp "filename" failed: Operation not permitted (1)
Run Code Online (Sandbox Code Playgroud)
我尝试--no-g在-a选项之后添加(因为在这种情况下我不关心设置组),但错误仍然存在。我需要做些什么来阻止 rsync 尝试chgrp一切?
我有一个由 root 创建的文件夹,我希望能够向用户组添加权限,以便他们可以移动文件等。
我做了以下事情:
chgrp -R developers testdir
Run Code Online (Sandbox Code Playgroud)
文件所有者现在是 root,组所有者是开发人员。为什么开发人员中的用户还不能进行更改?