我正在尝试使 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