我正在尝试设置一个组的文件夹访问权限,以便该组的所有成员都可以创建/编辑/删除文件夹中的文件。
# create my group and add a member
sudo addgroup dev
sudo adduser martyn dev
现在,以“martyn”身份登录,检查我的用户是否已添加到“dev”组
groups martyn
martyn : martyn dev
现在我想更改我的项目文件夹的组所有权,以便该组的所有成员都可以编辑它以及其中的文件/文件夹。
sudo chgrp -R dev myproject
只是为了检查:
martyn@localhost:/var/www$ ls -l
total 4
drwxrwxr-x 3 dev dev 4096 May 31 15:53 myproject
现在它失败了。我想在 myproject 中创建一个文件(以“martyn”的身份登录,“dev”成员):
vi myproject/test
..但是当我尝试保存文件时出现以下错误:
"myproject/test" E212: Can't open file for writing
为什么作为“dev”成员的用户“martyn”,我不能写入此文件?即使我创建了文件并使其存在,将所有权更改为“dev”,然后尝试编辑并保存 - 我还是会得到同样的错误。
答案1
您可以尝试使用以下命令更改/设置目录的所有权chown
,如下所示:
chown -R dev:dev myproject/
然后使用以下chmod
命令设置权限:
chmod -R 0775 myproject/
位0775
表示法将目录模式设置为rwxrwxr-x
,这使用户dev
和dev
组内的所有成员rwx
都可以访问该目录和文件。
尝试用这个命令代替chgrp
。您也可以尝试重启机器,以防万一。祝你好运。
答案2
这在 Arch Linux 上对我有用:
$ sudo useradd martyn
$ sudo passwd martyn
$ sudo groupadd example
$ sudo usermod --append --groups example martyn
$ sudo mkdir /var/www /var/www/myproject
$ sudo chgrp example /var/www/myproject
$ sudo chmod g+w /var/www/myproject
$ su - martyn
$ groups
example martyn
$ touch /var/www/myproject/file
$ ls -l /var/www/myproject/file
-rw-r--r-- 1 martyn martyn 0 May 31 11:13 /var/www/myproject/file
您确定没有启用(运行getenforce
)SELinux 吗?