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