Как предоставить чтение-запись определенному пользователю в каком-либо существующем или будущем подкаталоге данного каталога?

Общее решение состоит в том, чтобы использовать JSW, я думаю

8
21.08.2018, 05:25
3 ответа

создайте группу 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 \;

Должен быть все установлен.

5
27.01.2020, 20:11
  • 1
    Если Вы хотите понять то, что идет здесь на Samuel, Google для "setgid". Волшебство здесь находится в g+s. Конечно, необходимо будет сначала понять основы chmod также. –  iconoclast 28.09.2012, 19:25
  • 2
    я Думал, что понял, как сделать это с +s на каталоге, но он не сделал то, что я ожидал: полномочия не были переданы к новым каталогам. Что действительно длится и 3-и последние средние маркеры: {} и \Заранее спасибо. –  Samuel Rossille 01.10.2012, 17:42
  • 3
    {} - заполнитель для замены имени файла. ; разделитель команды, выполняемой -exec. Как ; имеет особое значение в bash этого нужно оставить с \. посмотрите man find для деталей –  Serge 01.10.2012, 19:10

На самом деле это было неправильным подходом. После дополнительных исследований я узнал, что в моем случае имею к пользовательским функциям здания мерзавца для обработки файловой системы прямо в репозитории.

Это, в основном покончили shared опция git init, который может иметь (среди другого) следующие значения:

  • group: инициализируйте репозиторий так, чтобы файлы и каталоги имели пользователя и доступ для записи группы, и у всех других есть доступ для чтения
  • 0660: то же, но без доступа для чтения для других.

Недавно созданные каталоги и файлы автоматически имеют правильные полномочия. Можно также использовать git init на существующем репозитории для реконфигурирования его, не освобождая он доволен.

Таким образом в конце, что я должен был сделать:

  • Создайте группу mygitrepo
  • Добавьте пользователей к нему
  • chmod-R репозиторий мерзавца к root:mygitrepo

И теперь каждый пользователи группы могут вытянуть / нажатие, и никто больше не может, и это, не смешивая с правами файловой системы.

git init --bare --shared=0660

http://www.kernel.org/pub/software/scm/git/docs/git-init.html для получения дополнительной информации.

4
27.01.2020, 20:11

Если ACLs поддерживаются, можно сделать это с ACLs по умолчанию. Остерегайтесь этого, легко забыть о тех, поскольку они не обнаруживаются, когда Вы делаете ls -l.

find /path/to/git/myrepo -type d -exec setfacl -m d:u:john:rwx {} +

Но, я подозреваю, что можно хотеть сделать что-то более организованное. Развертывание gitolite может предоставить лучшее решение.

2
27.01.2020, 20:11
  • 1
    По крайней мере, с Debian Wheezy ls (и я думаю, Сжимают также), Вы получаете a + в конце полномочий сказать существует ACL: drwxr-xr-x+ 2 anthony anthony 4096 Sep 28 11:16 i-have-an-acl –  derobert 28.09.2012, 18:18
  • 2
    Спасибо это работает, но могли Вы разъяснять значение двух последних маркеров: {} + –  Samuel Rossille 01.10.2012, 17:22
  • 3
    Это find ... -exec cmd {} + синтаксис, где {} заменяется как можно большим количеством найденных имен файлов (как oppsed к {} \; где {} только заменяется одним найденным файлом за один раз), хвост –  Stéphane Chazelas 01.10.2012, 18:00

Теги

Похожие вопросы