1 Востаннє редагувалося ktretyak (09.07.2016 17:31:30)

Тема: Створив групу, додав користувача у неї, дав права на групу, але...

Що я робив:

# Створив нову групу web
sudo groupadd web

# Додав користувача git до групи web
sudo usermod -a -G web git

# Роблю власником групу web
sudo chown :web /var/www -R

# Дозволяю групі робити "читання, запис, виконання"
sudo chmod 775 -R /var/www

# Перелогінююсь під git'ом
sudo -u git -s

# Запускаю скрипт
node /var/www/hub.org.ua/dist/main.js

# Видає помилку
Error: EACCES: permission denied, open '/var/www/hub.org.ua/src/logs/error.log'

Чому мені видається повідомлення про недостатність прав?

П.С. Коли виставляю права 777, то все проходить успішно.

2

Re: Створив групу, додав користувача у неї, дав права на групу, але...

І все ж, варто пересвідчитися чи все додалося правильно. Давайте подивимось наступні речі:

$ groups git
$ ls -l /var/www/hub.org.ua/src/logs/error.log

3

Re: Створив групу, додав користувача у неї, дав права на групу, але...

$ groups git
git : git web

$ ls -l /var/www/hub.org.ua/src/logs/error.log
-rwxrwxr-x. 1 git web 4450 лип  8 22:18 /var/www/hub.org.ua/src/logs/error.log

4 Востаннє редагувалося ktretyak (09.07.2016 18:47:18)

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Кхм, в попередньому виводі я вже зробив гіта овнером, але непрацюючий варіант був коли він не був овнером.

5 Востаннє редагувалося Master_Sergius (09.07.2016 18:51:23)

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Тут більше схоже на проблему в node, здається там є свої приколи. Наприклад, ось таке нагуглилось у відповідь на подібне питання:

Install node with nvm as your local user and you won't have these problems.

Подякували: ktretyak1

6

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Проблема зникла коли поставив останню стабільну версію (була 4.4.5, поставив 4.4.7).

Подякували: Master_Sergius, leofun012

7 Востаннє редагувалося ktretyak (11.07.2016 13:18:42)

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Ще один несподіваний ефект із правами на групу: коли я змінив групу каталогу на web, то я очікував що ніхто окрім рута не зможе змінити цю групу на якусь іншу, але насправді коли члени групи вставляють певний зовнішній файл (з іншого каталогу), то у них таки змінюється група та й навіть права. Причому навіть якщо цей зовнішній файл береться із каталогу де група точно така сама, все одно у нових файлів/каталогів група змінюється на назву користувача, під ким ця справа робилась.

# Це те, що виводиться спочатку
$ ls -l /var/www/hub.org.ua
total 28
drwxrwxr-x  3 me web 4096 чер 28 01:09 dist
drwxrwxr-x 11 me web 4096 чер 28 01:08 node_modules
-rwxrwxr-x  1 git web 1046 лип 11 13:25 package.json
drwxrwxr-x  3 me web 4096 лип 11 13:25 src
-rwxrwxr-x  1 git web  411 лип 11 13:25 tsconfig.json
drwxrwxr-x  9 me web 4096 лип 11 13:25 typings
-rwxrwxr-x  1 git web  434 лип 11 13:25 typings.json

# У зовнішного каталогу права такі
$ ls -l /opt/git/hub.org.ua.git
drwxrwxr-x 7 git web 4096 лип 11 13:25 hub.org.ua.git 

# Далі копіюю нові файли/каталоги під користувачем git із цього зовнішнього каталогу
$ git --work-tree=/var/www/hub.org.ua --git-dir=/opt/git/hub.org.ua.git checkout -f

# Знову проглядаю права на групи, як бачите: у деяких файлів змінилась група та навіть права
$ ls -l /var/www/hub.org.ua
total 28
drwxrwxr-x  3 me web 4096 чер 28 01:09 dist
drwxrwxr-x 11 me web 4096 чер 28 01:08 node_modules
-rw-rw-r--  1 git git 1046 лип 11 13:25 package.json
drwxrwxr-x  3 me web 4096 лип 11 13:25 src
-rw-rw-r--  1 git git  411 лип 11 13:25 tsconfig.json
drwxrwxr-x  9 me web 4096 лип 11 13:25 typings
-rw-rw-r--  1 git git  434 лип 11 13:25 typings.json

Чи можна якось заборонити робити такі зміни?

Подякували: leofun011

8

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Ну тут git все для себе зробив. Хіба є два варіанти:
1) або написати свій скрипт для копіювання нових файлів/каталогів, найпростіше буде шось типу:

#!/bin/bash
git --work-tree=/var/www/hub.org.ua --git-dir=/opt/git/hub.org.ua.git checkout -f
chown -R :web /var/www/hub.org.ua

Якось так

2) можливо, десь на рівні SELinux, AppArmor чи шось таке можна заборонити зміну прав, але чи буде потім git робити копію - без поняття :)

Подякували: ktretyak, leofun012

9

Re: Створив групу, додав користувача у неї, дав права на групу, але...

Master_Sergius написав:

Ну тут git все для себе зробив. Хіба є два варіанти:
1) або написати свій скрипт для копіювання нових файлів/каталогів, найпростіше буде шось типу:

#!/bin/bash
git --work-tree=/var/www/hub.org.ua --git-dir=/opt/git/hub.org.ua.git checkout -f
chown -R :web /var/www/hub.org.ua

Якось так

2) можливо, десь на рівні SELinux, AppArmor чи шось таке можна заборонити зміну прав, але чи буде потім git робити копію - без поняття :)

Угу.. якщо SELinux то глянь sealert -a /var/log/audit/audit.log
Скажи що там і скажемо що робити :)

10

Re: Створив групу, додав користувача у неї, дав права на групу, але...

ktretyak написав:

Ще один несподіваний ефект із правами на групу: коли я змінив групу каталогу на web, то я очікував що ніхто окрім рута не зможе змінити цю групу на якусь іншу, але насправді коли члени групи вставляють певний зовнішній файл (з іншого каталогу), то у них таки змінюється група та й навіть права. Причому навіть якщо цей зовнішній файл береться із каталогу де група точно така сама, все одно у нових файлів/каталогів група змінюється на назву користувача, під ким ця справа робилась.

# Це те, що виводиться спочатку
$ ls -l /var/www/hub.org.ua
total 28
drwxrwxr-x  3 me web 4096 чер 28 01:09 dist
drwxrwxr-x 11 me web 4096 чер 28 01:08 node_modules
-rwxrwxr-x  1 git web 1046 лип 11 13:25 package.json
drwxrwxr-x  3 me web 4096 лип 11 13:25 src
-rwxrwxr-x  1 git web  411 лип 11 13:25 tsconfig.json
drwxrwxr-x  9 me web 4096 лип 11 13:25 typings
-rwxrwxr-x  1 git web  434 лип 11 13:25 typings.json

# У зовнішного каталогу права такі
$ ls -l /opt/git/hub.org.ua.git
drwxrwxr-x 7 git web 4096 лип 11 13:25 hub.org.ua.git 

# Далі копіюю нові файли/каталоги під користувачем git із цього зовнішнього каталогу
$ git --work-tree=/var/www/hub.org.ua --git-dir=/opt/git/hub.org.ua.git checkout -f

# Знову проглядаю права на групи, як бачите: у деяких файлів змінилась група та навіть права
$ ls -l /var/www/hub.org.ua
total 28
drwxrwxr-x  3 me web 4096 чер 28 01:09 dist
drwxrwxr-x 11 me web 4096 чер 28 01:08 node_modules
-rw-rw-r--  1 git git 1046 лип 11 13:25 package.json
drwxrwxr-x  3 me web 4096 лип 11 13:25 src
-rw-rw-r--  1 git git  411 лип 11 13:25 tsconfig.json
drwxrwxr-x  9 me web 4096 лип 11 13:25 typings
-rw-rw-r--  1 git git  434 лип 11 13:25 typings.json

Чи можна якось заборонити робити такі зміни?

Ну ти забагато хо.. крім того це скоріше всього причини в налаштуваннях git..