From: Junio C Hamano <junkio@cox.net>
To: Tilman Sauerbeck <tilman@code-monkey.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Added support for dropping privileges to git-daemon.
Date: Tue, 22 Aug 2006 16:40:26 -0700 [thread overview]
Message-ID: <7virkkl4ph.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: 1156268432.16120@hammerfest
Tilman Sauerbeck <tilman@code-monkey.de> writes:
> @@ -93,6 +94,21 @@ OPTIONS
> --pid-file=file::
> Save the process id in 'file'.
>
> +--user=user::
> +--group=group::
Probably
--user=user, --group=group::
Also check for asciidoc formatting please; it's rather picky.
> + These two options may be used to make `git-daemon` change its uid and
> + gid before entering the server loop.
> + The uid that's used is the one of 'user'. If `group` is specified,
> + the gid is set to the one of 'group', otherwise, the default gid
> + of 'user' is used.
Funny whitespaces all over the place...
What is the pw_gid stored in struct passwd for the user?
getgroups(2) gives supplementary group IDs, so perhaps it is
called primary group ID?
> + Both `group` and `user` need to be passed as the name of the resp of
> + the group, ie you'll get unexpected results if you pass an uid/a gid.
Gaah, but that is probably OK. I'd explicitly say they are
always interpreted as name and never numeric. An alternative
would be to be nice and when getpwnam() and/or getgrnam()
returns NULL try to interpret them as numeric, which might help
a small dedicated server installation that does not have any
/etc/passwd or /etc/group file ;-) but I do not think that would
be worth the confusion.
> + Note that you probably don't want to use these options if you run
> + git-daemon in inetd mode, since inetd can do the privilege dropping
> + for you.
Gaah again. These options do not have any effect (other than
sanity checking) on the inetd_mode codepath, so instead of
saying this in the documentation I would suggest specifying
these options an error under --inetd.
Something like this on top of your patch perhaps.
diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt
index 8f850fa..17619a3 100644
--- a/Documentation/git-daemon.txt
+++ b/Documentation/git-daemon.txt
@@ -94,20 +94,16 @@ OPTIONS
--pid-file=file::
Save the process id in 'file'.
---user=user::
---group=group::
- These two options may be used to make `git-daemon` change its uid and
- gid before entering the server loop.
- The uid that's used is the one of 'user'. If `group` is specified,
- the gid is set to the one of 'group', otherwise, the default gid
- of 'user' is used.
-
- Both `group` and `user` need to be passed as the name of the resp of
- the group, ie you'll get unexpected results if you pass an uid/a gid.
-
- Note that you probably don't want to use these options if you run
- git-daemon in inetd mode, since inetd can do the privilege dropping
- for you.
+--user=user, --group=group::
+ Change daemon's uid and gid before entering the service loop.
+ When only `--user` is given without `--group`, the
+ primary group ID for the user is used. The values of
+ the option are given to `getpwnam(3)` and `getgrnam(3)`
+ and numeric IDs are not supported.
++
+Giving these options is an error when used with `--inetd`; use
+the facility of inet daemon to achieve the same before spawning
+`git-daemon` if needed.
<directory>::
A directory to add to the whitelist of allowed directories. Unless
diff --git a/daemon.c b/daemon.c
index 4e94210..dd3915a 100644
--- a/daemon.c
+++ b/daemon.c
@@ -821,6 +821,9 @@ int main(int argc, char **argv)
usage(daemon_usage);
}
+ if (inetd_mode && (group_name || user_name))
+ die("--user and --group are incompatible with --inetd");
+
if (group_name && !user_name)
die("--group supplied without --user");
next prev parent reply other threads:[~2006-08-22 23:40 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-19 12:27 [PATCH] Added support for dropping privileges to git-daemon Tilman Sauerbeck
2006-08-19 13:23 ` Marco Costalba
2006-08-19 13:29 ` Tilman Sauerbeck
2006-08-19 15:19 ` Marco Costalba
2006-08-19 15:22 ` Marco Costalba
2006-08-19 17:15 ` Mitchell Blank Jr
2006-08-19 13:32 ` Johannes Schindelin
2006-08-19 17:25 ` Mitchell Blank Jr
2006-08-19 12:27 ` Tilman Sauerbeck
2006-08-22 6:38 ` Junio C Hamano
2006-08-22 17:37 ` Tilman Sauerbeck
2006-08-22 23:40 ` Junio C Hamano [this message]
2006-08-23 16:45 ` Tilman Sauerbeck
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=7virkkl4ph.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=git@vger.kernel.org \
--cc=tilman@code-monkey.de \
/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).