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

2283
PaulB

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

0

2 ответа на вопрос

1
techraf

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

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

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

Все пользователи должны быть членами группы 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 и найти что-то вроде этого: отметив это, вы должны предоставить расширенные параметры ACL для каталогов. /dev/sda5 / ext4 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 ---

Почему вы включаете ** `s` ** в` `chmod -R g + ws``? Вы имели в виду `` chmod -R g + wx``? Scott 5 лет назад 0