Назад | Перейти на главную страницу

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

Я пытаюсь сделать каталог 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