Почетак › Форуми › Линукс › Опште Линукс дискусије › Suid bit i tekstualne datoteke
- This topic has 51 одговор, 9 гласова, and was last updated 18 years, 8 months раније by maddox.
-
АуторЧланци
-
30. новембар 2005. у 10:41 pm #6582popeyeГлавни мајстор
Eto jedne interesantne teme za diskusiju.
Da li je narušena sigurnost postavljanjem suid bita na tekstualnu datoteku, a ako jeste – zašto?
Kako stoji stanje kada je u pitanju obična tekstualna datoteka?
A shell skripta?
Slobodno se raspišite, lupanje se toleriše. 8)
30. новембар 2005. у 11:31 pm #37883unknownУчесникDa li je naru¹ena sigurnost postavljanjem suid bita na tekstualnu datoteku, a ako jeste – za¹to?
Ne bi trebalo. Jer tekstualna datoteka ne moze da se izvrsi.
A shell skripta?
Ako obican user ima i write privilegije onda je sigurnost narusena.
1. децембар 2005. у 8:32 am #37884popeyeГлавни мајстор[quote]A shell skripta?
Ako obican user ima i write privilegije onda je sigurnost narusena.[/quote]
Da li je moguća zloupotreba i kada korisnik nema pravo pisanja? Ako jeste, kako?
1. децембар 2005. у 8:56 am #37885unknownУчесникDa li je moguæa zloupotreba i kada korisnik nema pravo pisanja? Ako jeste, kako?
Onda nije.
Jel’ ti to nesto znas sto mi neznamo 🙂
1. децембар 2005. у 11:13 am #37886MisterNoУчесникAjde da objasnimo prvo ljudima sta je suid bit.
Znaci kada neku aplikaciju moze da izvrsi samo root, a mi imamo potrebu da je izvrsavaju i obicni korisnici onda namestimo suid bit tako da i oni imaju mogucnost da je izvrsavaju datu aplikaciju, skriptu sta god bilo.
U principu ja sam uvek gledao da takve stvari resavam na drugi nacin, ali u principu sigurnost ne bi trebala da bude narusena ako useri namaju pravo pisanja. Ako nemaju prava pisanja nego samo execute pravo tada oni mogu uvek izvrsavati samu datu skriptu, ali je ne mogu menjati. Ako imaju pravo write onda je to vec ozbiljan problem jer mogu sami dodati par linija i raditi krajnje destruktivne stvari po sistemu.
Medjutim ne treba zaboraviti da kad covek ima samo fizicki pristup racunaru pod bilo kojom operativnim sistemom on mu ako zna moze raditi sta hoce. Tako da moze zloupotrebiti i suid bit i dodeliti prava koja mu po defaultu nisu dodeljena, ali to vec nije security rupa suid bita vec prica za sebe.
1. децембар 2005. у 1:24 pm #37887nVideoУчесникA ja sad malo da odgovorim na pitanje koje sam malopre postavio, a isti problem koji sam opsao javlja se i kod mene, promenio sam skener, istio pakovanje idVendor ali drugi idProduct, tako da sam se malko pozamlatio montiranjem /proc/bus/usb ovako:
usb /proc/bus/usb usbfs rw,devmode=0674,busmode=0555,listmode=0444 0 0
stim da sam ja ovde na mašini u root grupi
Kod MDK umesto usb stoji none, a kod mene usbfs, malo sam do editovao čisto da ne dođe do zabune, a možda je i to bio problem, što opet ne mora da bude, jer je prethodni skener radio baš dobro i sa takvim podešavanjima kao i ceo USB.
A zašto sam baš toliko Off-Topic, zato što mi je kod montiranja sa izostavljanom prvom cifrom tj. nulom u ovom slučaju (što verujem da podpada u domen ove priče), ls izgledao sačuvaj Bože, možda je i to zato što nisam koristio samo mode, ali ni sadržaj celog tog usbfs-a i nije baš za bilo kakvu 0777 pa kud puklo da puklo.
1. децембар 2005. у 1:25 pm #37888japanУчесникAjde da objasnimo prvo ljudima sta je suid bit.
Znaci kada neku aplikaciju moze da izvrsi samo root, a mi imamo potrebu da je izvrsavaju i obicni korisnici onda namestimo suid bit tako da i oni imaju mogucnost da je izvrsavaju datu aplikaciju, skriptu sta god bilo.
ovo nije baš najpreciznija definicija. ako korisnik nema exec pravo, on neće moći da izvrši taj program, bez obzira na suid bit.
o čemu se radi? za svaki proces postoje tri vrste id-ja – real id, effective id i saved id. ovde su zanimljiva prva dva. real id je onaj koji korisnik dobija pri logovanju, i on se uglavnom ne menja tokom cele sesije. effective id je ono što se dobija postavljanjem suid bita na program.
npr. neka program ima za vlasnika root-a. ako nema postavljen suid bit, pri izvršavanju ovog programa kreirani proces ima i real id i effective id korisnika koji ga je pokrenuo. ako program ima suid bit, onda će real id kreiranog procesa biti jednak id-ju korisnika koji ga je pokrenuo, a effective id će biti jednak id-ju vlasnika, u ovom primeru root 🙂[code]
[japan@hawk: work] $ cat > test.c
#include
int main(){
while(1);
return 0;
}
[japan@hawk: work] $ gcc test.c
[japan@hawk: work] $ ls -all a.out
-rwxr-xr-x 1 japan users 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ su
Password:[root@hawk: work] # chown root.root a.out
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all a.out
-rwxr-xr-x 1 root root 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ ./a.out &
[1] 18054
[japan@hawk: work] $ ps axo ruid,euid,comm | grep a.out
1000 1000 a.out
[/code]
znači program se izvršava pod real id-jem 1000, i eff id-jem 1000. ako mu sad postavimo suid…
[code]
[japan@hawk: work] $ fg
./a.out[japan@hawk: work] $ su
Password:[root@hawk: work] # chmod 4755 a.out
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all a.out
-rwsr-xr-x 1 root root 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ ./a.out &
[1] 18079
[japan@hawk: work] $ ps axo ruid,euid,comm | grep a.out
1000 0 a.out
[/code]
…ima real id 1000 i effective id 0, tj id vlasnika(root)što se tiče shell skripti, stvar je malo drugačija:
[code]
[japan@hawk: work] $ cat > test.sh
#!/bin/bashwhile echo -n; do
sleep 1;
done;
[japan@hawk: work] $ ls -all test.sh
-rwxr-xr-x 1 japan users 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18176
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[japan@hawk: work] $ fg
./test.sh[japan@hawk: work] $ su
Password:[root@hawk: work] # chown root.root test.sh
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all test.sh
-rwxr-xr-x 1 root root 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18205
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[japan@hawk: work] $ fg
./test.sh[japan@hawk: work] $ su
Password:[root@hawk: work] # chmod 4755 test.sh
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all test.sh
-rwsr-xr-x 1 root root 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18230
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[/code]😉
1. децембар 2005. у 2:04 pm #37889popeyeГлавни мајсторJapan je lepo objasnio suid bit i stanje na većini današnjih Unix sistema. Naime, suid bit se ignoriše kada su u pitanju skripte, jer ih je lako zloupotrebiti.
Može li neko da se seti razloga zašto suid skripta (na sistemu koji poštuje suid bit) može biti sigurnosni propust? Recimo, u ovom primeru, skripta koja bi omogućila običnom korisniku da podigne i spusti mrežni interfejs:
[code]
#!/bin/cshifconfig $1 $2
[/code]Može li se prevariti ova skripta da učini nešto drugo, što nije predviđeno?
1. децембар 2005. у 2:10 pm #37890sanel_nbg22УчесникKad vec pricamo o suid bitovima da pitam jel to najlaksi nacin da se useru dodeli pravoo da izvrsava halt i reboot ?
Sto se sigurnosti ti ce sve je to relativno. Vecini ljudi koje poznajem daj linux sa sve user passom nece biti unsecure 😀 a opet ako nekom das ko poznaje zanat…. Ako pricamo o prosecnim korisnicima mislim da ne bi trebalo da predstavlja propust.
1. децембар 2005. у 2:14 pm #37891MisterNoУчесникDa slazem se da nisam precizno objasnio sta je suid bit, ali to je bilo iz razloga da ljudima krajnje pojednostavim celu pricu.
A evo i linka gde je objasnjeno vise o tome pa koga zanima nek pogleda
-
АуторЧланци
Мораш бити пријављен да би поставио коментар у овој теми.