Мне нужна помощь в понимании того, как предоставление разрешения на запись для группы работает в Ubuntu. Я вошел в систему как root и у меня есть www-data:www-data и ftpuser:ftpuser (user:group). Я добавляю ftpuser в группу www-data используя:

usermod -a -G www-data ftpuser

Теперь у моей группы www-data два пользователя.

Затем я создаю группу www-data , владелец папки /var/www используя:

chgrp -R www-data /var/www

Тем не менее, у меня нет возможности записи в папку члена группы (хотя она принадлежит группе), если я не даю разрешения на запись для группы. Теперь, согласно этому лучшему ответу, мне также нужно установить права доступа к каталогу с помощью sudo chmod -R 770 /path/to/the/directory и это то, что меня смущает.

Если пользователь является владельцем каталога, почему он не может писать в него? Может ли пользователь группы дать группе разрешение на запись в папку, принадлежащую самой группе? Где находится группа, определенная в команде sudo chmod -R 770 /path/to/the/directory ? Разве это не даст рекурсивные разрешения всем пользователям?

2 ответа2

1

хотя группа владеет этим

Нет, группа не владеет файлом в том смысле, что применяются разрешения для owner . Права владельца распространяются только на владельца - пользователя; и групповые разрешения применяются к назначенной группе.

Если пользователь является владельцем каталога, почему он не может писать в него?

Может, разве что ftpuser в вашем случае не является владельцем.

Скорее всего, потому что вы не говорите это явно: root или www-data является владельцем /var/www файла, а ftpuser является членом группы www-data .

Даже если пользовательские www-data и групповые www-data имеют одно и то же имя, они являются разными сущностями для операционной системы.

Может ли пользователь группы дать группе разрешение на запись в папку, принадлежащую самой группе?

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

Где находится группа, определенная в команде sudo chmod -R 770 /path/to/the/directory

Второй 7 относится к групповым разрешениям (7 - это комбинация read , write и execute).

Разве это не даст рекурсивные разрешения всем пользователям?

Он назначит (рекурсивно):

  • read , write и execute для владельца (первые 7)
  • read , write и execute для группы (второй 7)
  • нет разрешений для других пользователей (последние 0)
0

Каталог, общий для группы с правами записи для существующих файлов

Все пользователи должны быть членами группы www-data. Вы можете добавить их, используя

usermod -a -G www-data user1 usermod -a -G www-data user2 ...

Предоставление группе www-данных разрешения на запись в папку и все содержащие файлы могут быть выполнены с помощью ряда команд:

chgrp -R www-data /var/www chmod -R g+ws /var/www

Все новые файлы и каталоги будут иметь назначенные групповые www-данные и будут доступны для записи участнику группы.

Разрешения для новых файлов

Значение umask по умолчанию в большинстве систем Linux равно 022, что означает, что если user1 создает файл или каталог в /var /www, этот файл становится "редактируемым" только для user1, но читается группой www-data.

Если это ожидаемое поведение, вам следует остановиться здесь.

Каталог, общий для группы с правом записи

Вы должны проверить, включены ли расширенные ACL в вашей системе. Вы можете посмотреть /etc /fstab и найти что-то вроде этого: /dev/sda5 / ext4 acl,..... После проверки вам необходимо предоставить расширенные параметры ACL для каталогов.

Вы добавите ACL, чтобы новые файлы, созданные в папке /var /www, также были доступны для записи из группы www-data с помощью этой команды:

setfacl -R -b -k -d -m g:www-data:rwx --mask $2

В этом senario, если user1 создает файл или папку в /var /www, user2 сможет писать / удалять.

Каждый новый файл или каталог будет иметь разрешения rw-rw-???. Вопросительные знаки будут тем, что вы установите для других.

Как проверить разрешения

Используйте эту команду:

getfacl /var/www

Вывод должен быть примерно таким:

# file: /var/www # owner: www-data # group: www-data # flags: -s- user::rwx group::rwx other::--- default:user::rwx default:group::rwx default:group:www-data:rwx default:mask::rwx default:other::---

Разрешения по умолчанию для папки /var /www: drwxrws ---

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .