From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 3/4] Add init-serve, the remote side of "git init --remote=host:path"
Date: Sat, 28 Feb 2009 21:54:56 -0800 [thread overview]
Message-ID: <7v63itbxe7.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20090301031609.GA30384@coredump.intra.peff.net> (Jeff King's message of "Sat, 28 Feb 2009 22:16:09 -0500")
Jeff King <peff@peff.net> writes:
> On Sat, Feb 28, 2009 at 04:03:41PM -0800, Junio C Hamano wrote:
>
>> +/*
>> + * Notice any command line argument that we may not want to invoke
>> + * "git init" with when we are doing this remotely, and reject the
>> + * request.
>> + */
>> +static int forbidden_arg(const char *arg)
>> +{
>> + if (!prefixcmp(arg, "--shared=") ||
>> + !strcmp(arg, "--shared") ||
>> + !strcmp(arg, "--bare"))
>> + return 0;
>> + return 1;
>> +}
>
> I started this mail to complain that this function was "disallow known
> bad" instead of "allow known good". But then after reading it carefully
> three times, I see that it is in fact "not allow known good". Can we
> make it "allowed_arg" to prevent double negation?
I originally had "arg_ok()", but the implementation checked that the
argument is not --template, which is the only known to be bad one at the
moment, so that we would allow things by default. Later I switched both
name and the implementation ;-)
I think renaming it to affirmative form (and swapping the return value, of
course) would be a good idea.
One issue I did not describe in the message was to what extent we would
want to allow operations other than the creating of a new repository
itself.
"Other than the creation" includes things like these:
- "chgrp project-group" and "chmod g+s".
It is typical for the system administrator to set up two classes of
groups in /etc/groups file. One group per user that is the primary
group for a user, so that $HOME/ can be owned by that primary group and
its permission bits set to 2775, and one group per project, so a user
can belong to groups of the projects he works on.
With the patch series:
$ git init --remote=central.xz:/pub/projects/mine.git --shared --bare
would take care of the "shared" (i.e. g+w) part, but the "mine.git"
repository will either inherit the group ownership from /pub/projects
(if /pub/projects is marked with g+s) or owned by the creating user's
primary group, which would not be usable for use by a project the user
belongs to. IOW, --shared by itself is not very useful with its
current form.
- Writing to .git/description
Primarily for use with gitweb; the need for this goes without saying.
This shouldn't have security implications (even if the current
implementation had one, it could easily be squashed).
- Other administrative bits that have security implications:
In a friendly environment without security concerns, e.g. company
intranet setting, the user may want to do these things:
- Installing custom hooks
- Updating .git/config
But these should never be allowed in a hosting-site setting.
My current thinking is that "init --remote" should not cater to the third
kind. In a friendly environment the user would have a shell access, and
if the system does not give a shell access, then the user should not
allowed to muck freely with the repository.
I think the "chgrp/chmod g+s" part is necessary, and I envisioned that it
would be done by a new option to "git init", but I haven't thought things
through. The options to "init" will not be visible to git-shell because
they are carried over pkt-line protocol as the payload, and programs like
gitosis may have hard time implementing limited access to certain groups,
even if they wanted to; I do not think gitosis would care, as it does not
rely on the UNIX group permission model for its access control, but other
implementations may care.
next prev parent reply other threads:[~2009-03-01 5:58 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-01 0:03 [PATCH 1/4] Refactor list of environment variables to be sanitized Junio C Hamano
2009-03-01 0:03 ` [PATCH 2/4] git-init: inject some sanity to the option parser Junio C Hamano
2009-03-01 0:03 ` [PATCH 3/4] Add init-serve, the remote side of "git init --remote=host:path" Junio C Hamano
2009-03-01 0:03 ` [PATCH 4/4] " Junio C Hamano
2009-03-01 3:16 ` [PATCH 3/4] Add init-serve, the remote side of " Jeff King
2009-03-01 5:54 ` Junio C Hamano [this message]
2009-03-01 10:00 ` Jeff King
2009-03-01 17:04 ` Shawn O. Pearce
2009-03-03 6:50 ` Subject: [PATCH] Push to create Junio C Hamano
2009-03-03 7:09 ` Jay Soffian
2009-03-03 7:09 ` Jeff King
2009-03-03 7:37 ` Jay Soffian
2009-03-03 7:39 ` Jay Soffian
2009-03-03 7:56 ` Junio C Hamano
2009-03-03 8:02 ` Jay Soffian
2009-03-03 8:04 ` Junio C Hamano
2009-03-03 8:04 ` Junio C Hamano
2009-03-03 8:16 ` Jay Soffian
2009-03-03 8:23 ` Jeff King
2009-03-03 19:57 ` Jay Soffian
2009-03-04 5:42 ` Jeff King
2009-03-04 6:35 ` Junio C Hamano
2009-03-04 13:06 ` Jay Soffian
2009-03-03 7:55 ` Junio C Hamano
2009-03-03 8:06 ` Jeff King
2009-03-03 8:22 ` Junio C Hamano
2009-03-03 8:27 ` Jeff King
2009-03-03 8:30 ` Junio C Hamano
2009-03-03 8:41 ` Jay Soffian
2009-03-03 9:23 ` Theodore Tso
2009-03-03 10:39 ` Johannes Schindelin
2009-03-04 17:58 ` Theodore Tso
2009-03-06 1:37 ` Miles Bader
2009-03-03 18:41 ` Shawn O. Pearce
2009-03-04 8:32 ` [RFC/PATCH 1/2] improve missing repository error message Jeff King
2009-03-04 9:19 ` Matthieu Moy
2009-03-04 10:35 ` Jeff King
2009-03-04 18:57 ` Shawn O. Pearce
2009-03-05 10:36 ` Jeff King
2009-03-04 8:42 ` [RFC/PATCH 2/2] make remote hangup warnings more friendly Jeff King
2009-03-04 19:04 ` Shawn O. Pearce
2009-03-05 10:45 ` Jeff King
2009-03-03 21:08 ` Subject: [PATCH] Push to create Daniel Barkalow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7v63itbxe7.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).