Дайте группе разрешение на запись в папку

Мне нужна помощь, чтобы понять, как предоставление разрешения на запись для группы работает в 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 ответа

Решение

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

Нет, группа не владеет файлом в том смысле, что разрешения для 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)

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

Все пользователи должны быть членами группы 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---

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