Я пытаюсь сделать каталог node_modules доступным для записи www-group, но chmod не работает. vagrant (пользователь) является частью группы www-data, как видно из groups
команда.
Почему я не могу разрешить запись www-data (group) в этот каталог?
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
Я также пробовал использовать флаг -R (рекурсивный) в команде CHMOD, но это не помогло, я все еще не могу писать в каталоги; однако я могу писать в файлы, поскольку у группы есть доступ на запись. Почему это не работает для каталогов?
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
Только фактический владелец файла или каталога может изменять его разрешения. Недостаточно просто быть членом группы файла и иметь групповой доступ на запись.
Но если у вас есть доступ на запись в каталог, в котором находится файл, и на чтение самого файла, вы всегда можете сделать копию файла (в результате чего копия будет принадлежать вам), удалить оригинал и затем переименовать копию. иметь то же имя, что и оригинал.
Это могут быть ваши группы сейчас но не для оболочки, которую вы используете.
Вы можете увидеть, в какие дополнительные группы вы входите в этом случае, запустив
grep Groups /proc/self/status
Попробуйте снова войти в систему, чтобы увидеть, решит ли это проблему.
Если вы хотите это и все, что под ним, добавьте флаг -R
sudo chmod g+w -R node_modules --verbose
Это рекурсивно и будет делать все g + w