Prava procesu.

Jan Serak xserak na fi.muni.cz
Úterý Červenec 21 00:32:19 CEST 1998


Matus fantomas Uhlar wrote:
> 
> o com hovorite ?  setuid skripty su celkom normalna vec.
Nevim, ma zkusenost je opacna: Na SCO (ksh), HP-UX 10.20 (ksh) a Linuxu 2.0.0
(bash)
jsem zkousel jednoduchou vec:

	echo blabol >>soubor_patrici_rootovi_s_pravy_600

pricemz jsem tento skript privlastnil rootovi a dal jsem mu prava  rwsr-xr-x
(4755 oktalove).
Na zadnem z uvedenych OS se nepodarilo obycejnemu uzivateli zapsat blabol do
uvedeneho
souboru. Je na techto OS neco smrduteho na volani jadra exec, ze setuid skript
nefunguje
jako normalni vec?
> ked sa skript zacina
> #!<program> [<paramter>]
> spusti sa program s prvym argumentom menom tohoto skriptu
To jsem se (uznavam) ponekud utal. Mou snahou bylo napsat co nejabsurdnejsi vec
a uz
jsem se nezvladl uhlidat, abych nebyl mimo misu. Omlouvam se.
> a ked je skript
> setuid tak sa spusti s privilegiami ownera skriptu. (ak nie je setuid aj ten
> program samozrejme).
Viz vyse: s privilegiemi vlastnika skriptu se program nespusti: spusti se
privilegiemi
podle <program>-u.
> JEdiny problem je ze bash vacsinou spusti setreuid()
> takze ak chcete mat setuid bash skript treba ho zacat
> #!/bin/bash -p
Z man bash cituji:
              -p      Turn on privileged mode.  In this mode, the
                      $ENV file is not processed, and shell func-
                      tions  are  not inherited from the environ-
                      ment.  This  is  enabled  automatically  on
                      startup if the effective user (group) id is
                      not equal to  the  real  user  (group)  id.
                      Turning  this  option off causes the effec-
                      tive user and group ids to be  set  to  the
                      real user and group ids.
Z toho usuzuji, ze -p zajisti nespusteni $ENV a nezdedeni shellovych funkci.
Pritom automaticky se zapne -p v pripade, ze bash je pousten procesem, ktery
ma rozdilne UID a EUID (pripadne GID a EGID). Ze by se touto volbou
zapinalo seteuid podle s-bitu neni zadna zminka. Kdyz jsem to vyzkousel,
zjistil jsem, ze to funguje presne podle manu: s #!/bin/bash -p to stale
nefunguje.

> 
> Naozaj, co tak vyskusat sudo(8) ? je to program specialne na taketo
> zalezitosti...
To bude rozhodne nejrozumnejsi cesta k pozadovanemu cili.

--
						Jan Serak


Další informace o konferenci Linux