← Back to team overview

sslug-teknik team mailing list archive

Re: Start af apache med bruger som ikke er root

 

On Mon, 19 Nov 2001 10:34:52 +0100, "Jacob Vennervald Madsen"
<jvm@xxxxxxxxxxxxxxx> wrote:

> Jeg bruger Apache webserver og vil gerne kunne starte og stoppe Apachpe
> som en anden bruger end root.

I unix er det således, at kun root kan køre programmer, som binder sig
til porte under port 1024. (Fornufte programmer såsom Apache omdanner sig
til en upriviligeret bruger efter at bindingen til porten er på plads.)

Dette kan omgås via to principper:

1. Enten - som Carsten skriver - ved at benytte en wrapper
   såsom sudo, som tillader alm. brugere at afvikle visse veldefinerede
   programmer/scripts med root-rettigheder.

2. Ved et halvgrimt hack, hvor programmet bedes om at
   binde sig til fx. port 1900. Forinden har man så via ipchains eller
   iptables opsat en port omdirigering, således at alle indgående
   forbindelser til port 80 sendes videre til port 1900.

Ad 1:
-----

Prøv at oprette følgende en fil kaldet /etc/sudoers, med følgende linje
(husk afsluttende linjeskift):
%wheel ALL=(root) NOPASSWD:/etc/rc.d/init.d/httpd

Nu kan du - hvis du er medlem af "wheel" gruppen fx. køre følgende: sudo
/etc/rc.d/init.d/httpd restart

Ad 2:
-----

iptables \
	-t nat \
	-A PREROUTING \
	-p tcp \
	--dport 80 \
	-j REDIRECT \
	--to-port 1900

# For at også locale requests såsom
# lynx http://localhost/ vil virke.
iptables \
	-t nat \
	-A OUTPUT \
	-p tcp \
	--dport 80 \
	-j REDIRECT \
	--to-port 1900

(Det samme er lidt lettere med den gamle ipchains.)

Bemærk dog, at denne løsning kan indebære, at der skal rodes med
rettigheder i kataloger (og evt. disses filer) såsom /var/log/httpd og
/var/run; ellers kan det være, at den upriviligerede bruger, som Apache
startes med, ikke kan skrive log-filer og/eller semaforer.

-- 
Greetings from Troels Arvin, Copenhagen, Denmark


Follow ups

References