Re: UID a přístup k souborům


To czdebian-l zavinac debian bod cz
From Tomas Znamenacek <tomas bod znamenacek zavinac centrum bod cz>
Date Sun, 7 Dec 2003 21:53:58 +0100
User-agent Mutt/1.5.4i

Jiří Jánský wrote:

> Dobrý den,
> u nás ve škole vzniknul požadavek dynamicky rekonfigurovat squid přes webové
> rozhraní a mít tak možnost zakázat nebo povolit jednotlivá IP v lokální síti
> (respektyvě jeejich přístup k internetu.
>     Moja myšlenka byla ta, že pomocí cgi-bin scriptu připojím k normálnímu
> squid.conf IP adresy, které mají být povoleny a squid restartuji. A hned na
> začátku jsem narazil na problém.
>     Zkopíroval jsem soubor /etc/init.d/squid do složky s cgi-bin scripty,
> jako vlasníka nastavil root a zapnul suid bit (chmod u+s restart.sh - jestli
> ne tak mě opravte). Když jsem se onen script pokusil spustit z příkazové
> řádky jako obyčejný uživatel, tak to vypadá, jako že to nemá přístup ke
> konfiguračnímu souboru squid.conf, který je povolen číst a zapisovat pouze
> pro roota. No ale to by přece tek script mněl mít možnost přečíst, když má
> nastavený ten SUID bit.

Doufam ze jsem to vsechno dobre pochopil.

1) Skripty nemaji z historickych duvodu moznost suid bitu. Zkuste si
   udelat skript, ktery jen zavola prikaz id, nastavte vlastnika
   na roota a nastavte suid bit. Kdyz potom skript jako obycejny
   uzivatel pustite, id volane skriptem by mel byt obycejny
   uzivatel. Cili tudy cesta nevede.

   $ cat <<EOF>foo.sh
   >#!/bin/bash
   >id
   >EOF
   $ su -c "chown root:root foo.sh"
   $ chmod +s foo.sh
   $ ls -l foo.sh
   -rw-r-Sr--    1 root     root           foo.sh
   $ . foo.sh
   uid=... (...), nikoliv root

2) Delal jsem tez webove rozhrani ke Squidu, nakonec jsem to vyresil
   takhle: IP adresy nemusi byt tusim primo v squid.conf, jdou dat
   i do externiho souboru. Tomu muzete rozumne nastavit prava podle
   potreby. Pak jsem do crontabu vrazil na kazdych par minut
   kontrolu tohohle souboru (MD5, timestamp, cokoliv bude fungovat)
   a kdyz se soubor zmenil, volam squida aby si znovunacetl
   konfiguraci. CGI skript ma pravo zapisu do toho souboru s IP.

Takhle zhruba nejak (nemam to ted po ruce a uz je to dlouho) mi to
pracuje.

T.

-- 
A hundred thousand lemmings can't be wrong!

Partial thread listing: