CHMOD 使目录可由组写入不起作用

CHMOD 使目录可由组写入不起作用

我正在尝试使 www-group 可以写入 node_modules 目录,但 chmod 不起作用。vagrant(用户)是 www-data 组的一部分,如命令所示groups

为什么我不能允许 www-data(组)对该目录的写入权限?

vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app$ groups
vagrant www-data


vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app$ ls -l
total 16
drwxr-xr-x 1 www-data www-data  136 Nov 27 22:56 apis
drwxr-xr-x 1 www-data www-data  170 Oct  6 23:24 assets
drwxr-xr-x 1 www-data www-data  170 Jan 15 19:38 controllers
drwxr-xr-x 1 www-data www-data  170 Jan 16 23:00 core
-rw-rw-r-- 1 www-data www-data 1300 Jan 16 23:09 favicon.ico
-rw-rw-r-- 1 www-data www-data 2602 Jan 17 20:03 Gruntfile.js
-rw-rw-r-- 1 www-data www-data 1352 Jan 16 16:27 index.php
drwxr-xr-x 1 www-data www-data  170 Jan 15 19:36 models
drwxr-xr-x 1 www-data www-data  578 Jan 17 03:00 node_modules
-rw-rw-r-- 1 www-data www-data  472 Jan 16 21:11 package.json
drwxr-xr-x 1 www-data www-data  204 Jan 17 01:35 views


vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app$ sudo chmod g+w node_modules --verbose
mode of ‘node_modules’ changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)


vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app$ ls -l
total 16
drwxr-xr-x 1 www-data www-data  136 Nov 27 22:56 apis
drwxr-xr-x 1 www-data www-data  170 Oct  6 23:24 assets
drwxr-xr-x 1 www-data www-data  170 Jan 15 19:38 controllers
drwxr-xr-x 1 www-data www-data  170 Jan 16 23:00 core
-rw-rw-r-- 1 www-data www-data 1300 Jan 16 23:09 favicon.ico
-rw-rw-r-- 1 www-data www-data 2602 Jan 17 20:03 Gruntfile.js
-rw-rw-r-- 1 www-data www-data 1352 Jan 16 16:27 index.php
drwxr-xr-x 1 www-data www-data  170 Jan 15 19:36 models
drwxr-xr-x 1 www-data www-data  578 Jan 17 03:00 node_modules
-rw-rw-r-- 1 www-data www-data  472 Jan 16 21:11 package.json
drwxr-xr-x 1 www-data www-data  204 Jan 17 01:35 views



vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app$ cd node_modules && mkdir test
mkdir: cannot create directory ‘test’: Permission denied

我还尝试在 CHMOD 命令上使用 -R(递归)标志,但没有帮助,我仍然无法写入目录;但是,我可以写入文件,因为该组具有写访问权限。为什么这对目录不起作用?

vagrant@vagrant-ubuntu-trusty-32:/var/www/src/my_app/node_modules/grunt$ ls -l
total 20
-rw-rw-r-- 1 www-data www-data 1242 May  9  2014 appveyor.yml
-rw-rw-r-- 1 www-data www-data  127 May  6  2014 CONTRIBUTING.md
drwxr-xr-x 1 www-data www-data  136 Oct  2 12:41 internal-tasks
drwxr-xr-x 1 www-data www-data  170 Oct  2 12:41 lib
-rw-rw-r-- 1 www-data www-data 1062 May  6  2014 LICENSE-MIT
drwxr-xr-x 1 www-data www-data 1020 Nov 20 20:29 node_modules
-rw-rw-r-- 1 www-data www-data 2319 Nov 20 20:32 package.json
-rw-rw-r-- 1 www-data www-data  900 May  6  2014 README.md

答案1

他们可能是你的团体现在但不适用于您正在使用的 shell。

你可以通过运行以下命令查看你在本例中属于哪些补充组:

grep Groups /proc/self/status

请尝试重新登录,看看问题是否能得到解决。

答案2

只有文件或目录的实际所有者才能更改其权限。仅仅成为文件组的成员并拥有组写入权限是不够的。

但是如果您对文件所在目录具有写访问权限,并且对文件本身具有读访问权限,则您可以随时复制该文件(使该副本归您所有),删除原始文件,然后将副本重命名为与原始文件相同的名称。

答案3

如果您想要它以及它下面的所有内容,请添加 -R 标志

sudo chmod g+w -R node_modules --verbose

这是递归的并且会做所有的事情 g+w

相关内容