CHMOD, чтобы сделать каталог доступным для записи группой, не работающей

Я пытаюсь сделать каталог node_modules доступным для записи www-group, но chmod не работает. vagrant (пользователь) является частью группы www-данных, как видно с 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

3 ответа

Они могут быть вашими группами сейчас, но не для оболочки, которую вы используете.

Вы можете увидеть, какие дополнительные группы вы в этом случае, запустив

grep Groups /proc/self/status

Попробуйте снова войти в систему, чтобы увидеть, решит ли это проблему.

Только фактический владелец файла или каталога может изменять свои разрешения. Недостаточно просто быть членом группы файла и иметь доступ на запись группы.

Но если у вас есть права на запись в каталог, в котором находится файл, и доступ на чтение к самому файлу, вы всегда можете сделать копию файла (в результате чего копия будет принадлежать вам), удалить оригинал и затем переименовать копию. иметь то же имя, что и оригинал.

Если вы хотите это и все под ним, добавьте флаг -R

sudo chmod g+w -R node_modules --verbose

Это рекурсивно и все сделает

Другие вопросы по тегам