Попытка подробно остановиться на ответе @Zoredache, поскольку я даю этому движение сам:
Создайте новую группу (www-паб) и добавьте пользователей к той группе
groupadd www-pub
usermod -a -G www-pub usera
## должен использовать-a для добавления существующим группам
usermod -a -G www-pub userb
groups usera
Дисплейные группы ## для пользователя
Измените владение всего под/var/www в root:www-паб
chown -R root:www-pub /var/www
##-R для рекурсивного
Измените полномочия всех папок к 2 775
chmod 2775 /var/www
## 2=set идентификатор группы, 7=rwx для владельца (корень), 7=rwx для группы (www-паб), 5=rx для мира (включая апачского www-пользователя-данных)
Идентификатор группы набора (SETGID) укусил (2) причины группа (www-паб), который будет скопирован во все новые файлы/папки, созданные в той папке. Другие опции являются SETUID (4) для копирования идентификатора пользователя, и ЛИПКИЙ (1), который я думаю, позволяет только владельцу удалить файлы.
Существует a -R
рекурсивная опция, но это не различит между файлами и папками, таким образом, необходимо будет использовать, находят, как так:
find /var/www -type d -exec chmod 2775 {} +
Измените все файлы на 0664
find /var/www -type f -exec chmod 0664 {} +
Измените umask для своих пользователей к 0002
umask управляет полномочиями создания файла по умолчанию, 0002 файла средств будут иметь 664 и каталоги 775. Установка этого (путем редактирования umask
строка у основания /etc/profile
в моем случае), означает, что файлы, созданные одним пользователем, будут перезаписываемы другими пользователями в www-группе, не нуждаясь к chmod
их.
Протестируйте все это путем создания файла и каталога и проверки владельца, группы и полномочий с ls -l
.
Примечание: Необходимо будет выйти из системы/в для изменений в группах для вступления в силу!
Можно использовать "сетевого пользователя" команда, чтобы добавить и удалить учетные записи.
Вот универсальный пакетный файл, который ЦИКЛИЧНО ВЫПОЛНИТСЯ:
@echo off set i=%1 set j=%2 if NOT DEFINED i goto USAGE if NOT DEFINED j goto USAGE set /a j = %i% + %2 @echo start, i = %I% and j = %J% :LOOP if %i% GTR %j% goto FINISHED echo i = %i% set /a i=%i + 1 goto LOOP :FINISHED @echo. @echo finished, i = %I% @echo. goto END :USAGE @echo. @echo Usage : loop.bat [ start # ] [ # of iterations ] @echo Example : loop.bat 4 5 (this will start at 4 and end at 9) @echo. goto END :END @echo.
В цикле необходимо было бы сделать две вещи:
Вы можете modifiy пакетный файл для взятия третьего аргумента, который мог быть паролем, который затем передается "сетевому пользователю/, добавляют" команду.
Используйте "пользователя справки сети" для получения большей информации о том, как использовать команду.