создайте группу myrepousers
например, и добавьте своих пользователей мерзавца к той группе.
Затем измените группу всего под/path/to/git/myrepo к myrepousers:
chown -R .myrepousers /path/to/git/myrepo
Затем исправьте полномочия:
chmod -R g+w /path/to/git/myrepo
find /path/to/git/myrepo -type d -exec chmod -R {} g+s \;
Должен быть все установлен.
На самом деле это было неправильным подходом. После дополнительных исследований я узнал, что в моем случае имею к пользовательским функциям здания мерзавца для обработки файловой системы прямо в репозитории.
Это, в основном покончили shared
опция git init
, который может иметь (среди другого) следующие значения:
group
: инициализируйте репозиторий так, чтобы файлы и каталоги имели пользователя и доступ для записи группы, и у всех других есть доступ для чтения0660
: то же, но без доступа для чтения для других.Недавно созданные каталоги и файлы автоматически имеют правильные полномочия. Можно также использовать git init
на существующем репозитории для реконфигурирования его, не освобождая он доволен.
Таким образом в конце, что я должен был сделать:
mygitrepo
root:mygitrepo
И теперь каждый пользователи группы могут вытянуть / нажатие, и никто больше не может, и это, не смешивая с правами файловой системы.
git init --bare --shared=0660
http://www.kernel.org/pub/software/scm/git/docs/git-init.html для получения дополнительной информации.
Если ACLs поддерживаются, можно сделать это с ACLs по умолчанию. Остерегайтесь этого, легко забыть о тех, поскольку они не обнаруживаются, когда Вы делаете ls -l
.
find /path/to/git/myrepo -type d -exec setfacl -m d:u:john:rwx {} +
Но, я подозреваю, что можно хотеть сделать что-то более организованное. Развертывание gitolite может предоставить лучшее решение.
ls
(и я думаю, Сжимают также), Вы получаете a +
в конце полномочий сказать существует ACL: drwxr-xr-x+ 2 anthony anthony 4096 Sep 28 11:16 i-have-an-acl
– derobert
28.09.2012, 18:18
find ... -exec cmd {} +
синтаксис, где {}
заменяется как можно большим количеством найденных имен файлов (как oppsed к {} \;
где {}
только заменяется одним найденным файлом за один раз), хвост
– Stéphane Chazelas
01.10.2012, 18:00
g+s
. Конечно, необходимо будет сначала понять основыchmod
также. – iconoclast 28.09.2012, 19:25{}
- заполнитель для замены имени файла.;
разделитель команды, выполняемой-exec
. Как;
имеет особое значение вbash
этого нужно оставить с \. посмотритеman find
для деталей – Serge 01.10.2012, 19:10