[00:04] mateusz: dzieki... [00:04] wlasnie sie kompiluje... === scx_ is now known as scx [11:51] Ls [11:52] \o [12:11] hej jest tu ktos [12:11] potrzebuje tu kogos [12:23] co tam [12:31] garnus, bo mi smutno : ( [12:41] poglaskac? === spi_ is now known as spi === scx_ is now known as scx [19:50] czesc [19:50] uzywa ktos google drive lens w unity ? [19:50] da sie tego uzywac? nie moge zautoryzowac konta google- w ustawienia systemowe - konta sieciowe [19:51] daje google wpisuje dane i samo wraca na liste kont zanim zdąże autoryzowac [20:15] siema wszystcy? [20:15] ..echo.. [20:23] @echo off [20:24] tango down [22:03] ktos wie gdzie mozna przeczytac informacje nt. tego jak dziala [22:04] uid euid suid seuid [22:19] na google [22:20] ale to proste, suid i setuid to to samo [22:20] jacekowski, wlasnie cos mi slabo idzie to googlowanie [22:21] uid to uid obecnego usera [22:21] to ja wiem [22:21] effective uid to uid usera z ktorego teraz aplikacja ma uprawnienia [22:21] ale chodzi mi o to jak to dziala [22:21] w grupie [22:21] suid ustawia euid [22:21] uid zostaje niezmieniony [22:22] z poziomu aplikacji mozemy sterowac suidem? [22:22] nie [22:22] nope [22:22] można sobie jedynie zdropować uprawnienia [22:23] ok ale zalozmy sytuacje [22:23] moj uid to 1000 [22:24] i chce uruchomic program ktory bedzie dzialal na moich plikach ale trakcie jak cos sie przelaczy sam na admina [22:24] to jak sie bedzie zmienial euid i suid [22:24] admin to 0 [22:25] wiec rozumiem tak ze uid oznacza uzytkownika ktory uruchomil plik [22:26] sam sie nie moze przelaczyc [22:26] jak go odpalisz jako ograniczony uzytkownik to juz mu tak zostaje [22:26] jedynie co moze zrobic to wlaczyc sobie seccomp i ograniczyc jeszcze bardziej [22:26] a metody setuid seteuid [22:27] to z 0 w dol [22:27] http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/processes.html [22:27] a jest ponizej 0? [22:27] :D [22:28] over9000 [22:28] tak, jak odejmiesz to int sie przekreci i wroci do 65k [22:30] ale poza tym, setuid jest po to zeby jakis proces typu apache sie odpalil z roota, przybindowal do portu ponizej 1024 i zrobil wszystko co musi zrobic z roota, i wtedy sobie robi setuid na jakies ilestam (www-data badz podobne) [22:30] i traci uprawnienia do ktorych juz wrocic nie moze [22:31] a jest cos takiego jak ruid? [22:31] tak [22:32] to jest wlasnie twoj uid [22:32] ok [22:32] windows ma lepszy system kontroli uprawnien [22:32] wiec uruchamiamy process ktory ma [22:33] r 1000 e nic s nic [22:33] nie da sie tak [22:33] to czy plik moze byc otwarty jest sprawdzane na podstawie euid [22:33] jak r jest 1000 to e tez jest 1000 [22:34] jacekowski, nam cos mowili ze jakos da sie tak zrobic ze proces sam sie przelacza pomiedzy uidami a potem jak sie cos zmienic chyba suidie to juz nie moze i nie moge teraz tego zalapac [22:36] moze sie przelaczyc z 0 na nizsze uprawnienia [22:36] i tye [22:36] bo jak dobrze rozumiem to czy proces moze otworzyc jakis plik jest sprawdzane na podstawie uprawnien [22:36] euid [22:37] jedyny wyjatek od tego to jesli jako user 5 odpalasz program ktory ma ustawionego chmoda +s na usera 6, i wtedy moze sie program przelaczac pomiedzy 5 i 6 jak chce [22:38] w przypadku gdy program odpalony zostaje z roota (0) to zmiana uprawnien jest jednorazowa i ostateczne [22:38] sticky bit [22:39] mhmm [22:39] nie sticky [22:39] setuid bit [22:39] mam r 0 e 0 s 0 zmiam na r 0 e 1000 s 0 [22:40] wykonuje cos na pliku i spowrotem wracam w tryb admina [22:40] :P [22:40] nie wracasz [22:40] zmiana uprawnien z roota na nizsze jest jednorazowa i ostateczna [22:40] jacekowski, ale wytlumacz mi po co jest suid [22:41] bo wedlug mnie on zachowuje stary uid [22:41] by do niego wrocic [22:41] tylko w jednym przypadku [22:41] jacekowski, czyli suid dziala tylko w 1 przypadku [22:41] ktory opisales [22:41] gdy plik jest ustawiony jako setuid jako inny user niz ty jestes ale tylko jesli oboje jestescie userami o ograniczonych uprawnieniach [22:42] czyli uruchamimay proces z r 1000 e 1000 s 1200 [22:42] robimy r 1000 e 1200 s 1200 [22:42] i wracamy do poczatku [22:43] nie do konca [22:43] zeby takie cos zrobic to plik musi miec najpierw ustawionego ownera na 1200:xxx i ustawiony setuid bit [22:43] i wtedy jak go odpalisz to odpalony zostanie z r 1000 e 1200 s 1000 [22:44] i bedziesz mogl sie przelaczyc na r 1000 e 1000 s 1200 [22:44] i spowrotem [22:46] a jesli z programu ustawie suid pozniej na 1000 [22:46] to juz sie nie przelaczy? [22:48] tylko 0 jest specjalne [22:48] reszta jest ograniczona [22:48] jacekowski, na 0 moge sie w kazdej chwili przelaczyc? [22:48] tylko musze podac haslo [22:49] nie [22:49] na 0 mozna sie przelaczyc tylko jesli odpalasz program ktorego wlascicielem jest 0 i ma ustawiony ten program setuid [22:49] i to sie samo odpali wtedy jako 0 [22:50] bez twojej ingerencji [22:50] nie ma mozliwosci podania hasla w ogole [22:50] jacekowski, czyli jak robie aktualizacje to wyszukiwanie jest na prawach uzytkownikach a potem ubuntu prosi haslo to odpala osobny proces z haslem [22:50] tak [22:51] jacekowski, setguid dziala tak samo ale dla grupy [22:51] to robi wtedy gsudo (chyba gsudo, albo jakis inny graficzny wariant) [22:51] -rwsr-xr-x 2 root root 71288 Jun 1 2012 /usr/bin/sudo [22:51] i jak widac tutaj masz +s [22:52] czyli sudo zostanie odpalone jako root [22:52] i teraz zadaniem sudo jest zapytac sie ciebie o haslo i jesli podasz zle, zakonczyc sie [22:52] o/ [22:52] ale teoretycznie bug w sudo pozwalalby na latwa eskalacje uprawnien [22:53] jacekowski, czytalem ze go usuneli juz [22:53] mowie ze teoretycznie [22:53] zawsze moze byc wiecej [22:53] jacekowski: bug w pam [22:53] w sudo tez [22:53] pam moze powiedziec ze haslo nie ok a sudo moze zignorowac [22:53] no też, ale sudo samo w sobie jest proste [22:54] to wszystko jest proste [22:54] czyli kazdy proces ma ruid rguid euid eguid suid sguid [22:54] chgwuid [22:54] tylko ze masz milion prostych rzeczy warstwa na warstwie [22:54] i nagle nie jest takie proste [22:54] a pod linuxem lubia zmieniac API od ktorego inne aplikacje zaleza [22:54] i psuc rozne rzeczy zwiazane z losowoscia i bezpieczenstwem [22:55] dlatego mamy testerów w gentoo :E [22:55] jacekowski, a patrz na to jak to mozliwe [22:55] ze passwd [22:55] moge zmienic haslo nie [22:55] ale pliki /etcpasswd [22:55] i /etcshadow [22:55] -rw-r--r-- 1 root root 2042 maj 4 14:14 /etc/passwd [22:55] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:55] -rw-r----- 1 root shadow 1228 maj 4 14:14 /etc/shadow [22:55] bo passwd ma suid bit ustawiony [22:55] a ja nie mam [22:55] nie mam sticky bitu [22:55] :O! [22:55] masz [22:55] to nie sticky bit [22:56] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:56] ten plik [22:56] rwS [22:56] a no [22:56] nie ten plik sprawdzilem :D [22:56] a po co jest /etc/passwd? [22:56] to jest plik tekstowy [22:57] z zapisanymi uzytkownikami [22:57] kiedys dawno temu byly tam rowniez hasla [22:57] ale passwd na nim nie dziala bo nie moze [22:57] dziala [22:57] kurwa [22:57] passwd ma ustawiony suid [22:57] ten plik nie ma suida [22:57] MA [22:57] jacekowski: ja pacze [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd [22:57] qermit, daj mi go spowrotem :D [22:58] qermit: musialem powtorzyc bo nie rozumial [22:58] rw-r--r-- 1 root root 2042 maj 4 14:14 /etc/passwd [22:58] chodzilo mi o ten plik [22:58] NIE TEN PLIK [22:58] a ja myślałem że myszka ci sie zacięła [22:58] TO JEST PLIK TEKSTOWY [22:58] buharin: gupi jesteś [22:58] jacekn_, ja wiem [22:58] pytam czemu ten drugi nie ma [22:58] bo ten ma to w dupie [22:58] bo napisales ze kiedys bylo tam [22:58] buharin: bo nie musi [22:58] suid jest tylko dla programow [22:58] qermit, ale jest aktualizowany na biezaco chyba [22:58] PROGRAMOW [22:58] dla plikow wykonywalnych [22:59] kto jest aktualizowany? [22:59] czyli odplasz /usr/bin/passwd ktory ma wlasciciela 0 i suid bit ustawiony [22:59] /etc/passwd [22:59] to zostanie odpalony jako root [22:59] a kumam [22:59] buharin: no jest ale modyfikowany jest przez program ktory ma prawa roota [22:59] i jako root bedzie mial pelny dostep do /etc/passwd i /etc/shadow [22:59] dobra ja ide spać [22:59] ale ze mnie debil [22:59] buharin: wiem [22:59] buharin: mówiłem [23:00] jacekowski, dobra ide dalej czytac :D dzieki poki co [23:00] ale system uprawnien na win jest o wiele lepszy [23:00] zwlaszcza odkad jeszcze UAC dodali [23:00] pobralem taka ksiazke Linux Programming Interface [23:00] ale tam cos slabo to napisane jest [23:01] jacekowski, ale linux jest bezpieczniejszy [23:02] nie jest wlasnie [23:02] : ( [23:02] czasy kiedy linux byl bezpieczniejszy minely z windowsem 98 [23:03] jacekowski, to moze opisz co bys chcial zmienic i Linus to zmieni [23:03] xp gdyby nie domyslna polityka bezpieczenstwa (czyli uzytkownik domyslnie jest administratorem) bylby bezpiecznym systemem [23:03] w viscie juz to zmienili [23:03] i nawet administrator nie ma pelnych uprawnien [23:03] musi przejsc przez UAC [23:04] i dopiero wtedy moze miec dostep do najwazniejszych czesci systemu [23:04] ale dopoki UACa nie przejdzie ma uprawnienia takie same jak normalny ograniczony user [23:04] i masz mozliwosci wlamania sie i infekcji calego systemu takie same (chyba ze user idiota kliknie na "Tak" guzik) [23:05] jacekowski: jak tam win 8 [23:07] a dziala [23:07] dosyc ladnie i szybko [23:07] lepiej czy gorzej niż 7 [23:08] lepiej [23:09] tak słyszałem, nie miałem jeszcze okazji sprawdzić [23:09] jacekowski, mi tez sie podoba win8 [23:10] jacekowski, ale przyznam ze jestem fanem linux'a i sie przyzwyczailem [23:10] a ja kupiłem maca i nei chce mi się nawet w bootcamp bawić [23:12] jacekowski, mam napisane ze jak jest sticky bit to tylko uzytkownik moze kasowac modyfikowac atrybuty pliku [23:13] albo root [23:23] ja pierdole [23:23] NIE STICKY BIT [23:23] STICKY BIT TO COS INNEGO [23:23] jacekowski, tak ale teraz czytam o sticky bicie [23:23] set user or group ID on execution (s), restricted deletion flag or sticky bit (t). [23:23] -rw------T [23:23] s to setuid, t to sticky bit [23:24] nom [23:24] nie maja nic ze soba wspolnego [23:24] http://en.wikipedia.org/wiki/Sticky_bit#Usage [23:24] jest napisane tak ze /tmp ma sticky [23:24] cetra, zamiast pomoc to wyzywacie wiem bo to czytalem [23:25] buharin: jeszcze nikogo dzisiaj nie zwyzywałem ;-) [23:25] buharin: a jacekowskim się nie przejmuj, on już tak ma [23:26] cetra, tam jest napisane ze normalnie kazdy user z prawami moze manipulowac na pliku [23:26] ale ze sticky bit tylko ten konkretny [23:26] wlasciciel [23:26] zgadza się [23:26] cetra, i sie pytam po co to? [23:26] nie moze [23:26] tak jest napisane [23:26] buharin: bo jeśli ustawisz uprawnienia 777 [23:26] jacekowski, tak napisali na wiki [23:26] moze zmienic i usunac [23:27] zmienic nazwe* [23:27] atrybuty tez [23:27] nie moze [23:27] buharin: to każdy może usunąć plik lub zmienić jego nazwę, ze sticky tylko właściciel lub root [23:27] buharin: natomiast zawartość pluku nadal miożna zmieniać z innego usera [23:27] buharin: uprawnien do pliku dalej nie ma [23:27] buharin: niezaleznie od sticky czy nie [23:28] buharin: za to zmiana nazwy pliku badz usuniecie nie jest operacja na pliku [23:28] buharin: tylko na folderze w ktorym ten plik jest [23:28] buharin: wiec jesli inny uzytkownik ma uprawnienia do folderu, moze z niego usunac dowolny plik badz zmienic mu nazwe [23:29] buharin: jesli teraz NA FOLDERZE ustawisz sticky bit, to uprawnienia beda sprawdzane na pliku rowniez [23:29] problem tylko taki [23:29] że w linksie nie ma folderów ;- [23:29] D [23:29] sa [23:30] jacekowski, sa foldery lol [23:30] nie. są katalogi :P [23:30] jacekowski, a no to co napisales to ma sens [23:30] wedlug tezarusa folder i katalog to synonimy [23:30] folder to nowotwór windowsowy [23:31] akurat nie [23:31] folder przyszedl z systemu unixowego [23:31] ale to windows wypromował takie nazewnictwo [23:31] mniejsza z tym [23:31] spod znaku japka [23:31] a wczesniej byl uzywany na irixie [23:31] czyli pelnoprawnym unixie [23:31] jacekowski, wlasciwie folder i plik to sa wezly do pamieci [23:31] nody [23:32] inodes [23:32] przypomina mi to o książce która leży u mnie na kolumnie i nadal jej nie przeczytałem [23:32] i do tego folderowego inoda sa podpiete inody plikow [23:32] tak jakby [23:32] tutaj masz rozne warstwy [23:32] masz system plikow z jakas struktura na dysku [23:33] dowolna [23:33] jacekowski, mam tez napisane ze jesli w plikach wykonywalnych ustawi sie sticky bit to po zakonczeniu programu nie jest zwalniana pamiec jak to sie wykorzystuje? [23:33] zadaniem systemu plikow (jako oprogramowania) jest przedstawienie tych struktur na dysku kernelowi w postaci inode i dentry [23:33] buharin: co czytasz? [23:33] cetra, wyklady i wikipedie [23:33] :D [23:33] buharin: urban legend [23:34] buharin: kiedys tak bylo na niektorych unixach [23:34] mam tutaj książkę Linu: programowanie systemowe [23:34] Linux* [23:34] buharin: pod linuxem sticky bit na plikach jest ignorowany [23:34] wlaśnie ta której nie dokończyłem [23:34] buharin: a pamiec jest zawsze zwalniana [23:35] buharin: na niektorych unixach sticky bit kontrolowal cachowanie pliku [23:35] cetra, fajna ksiazka jestK&R The C programming language [23:35] buharin: w sensie sticky bit wymuszal ze plik zawsze siedzial w pamieci [23:35] buharin: to klasyka [23:35] jacekowski, o jezusie [23:35] buharin: i uczy ona jedynie ogólnych podstaw C [23:35] no może coś więcej niż jedynie podstyawy [23:36] dość rosrzeżony opic C [23:36] opis [23:36] buharin: ale pod linuxem i windowsem i nowszymi unixami w momencie gdy odpalasz program to on nawet nie jest caly czytany z dysku [23:36] buharin: tylko minimum wymagane przez linker [23:36] ale nie nauczy profilu takiego jak programowanie w linuskie [23:36] buharin: i uzywajac mmap plik jest MAPOWANY do przestrzeni adresowej [23:37] jacekowski, ok dzieki :D ale to co napisales na poczatku mi wystarcza [23:37] buharin: i odczytywany w kawalkach dopiero jak sa potrzebne (i wywalane z pamieci jak jest malo wolnej) [23:37] juz przestalem kumac :P [23:38] chyba w ogole nie zaczales [23:38] 7lelz [23:38] jacekowski, ogolnie z tego co czytalem to zawsze myslalem ze program jest wczytywany w calosci do pamieci [23:39] nie jest wczytywany w ogole [23:39] absolutne minimum [23:39] reszta jest doczytywana jak jest potrzebna [23:40] wyobraz sobie odczytywanie 600MB programow [23:40] i ile pamieci by to marnowalo [23:40] i ile by to trwalo [23:40] jacekowski, czyli jak cos odpalam to nie jest tak ze segment kodu zapisuje sie kodem asm i stos i sterta tez [23:40] zmiennymi [23:41] jacekowski, ale pamiec wirtualna chyba dynamicznie sie poszerzac nie moze [23:41] jak cos odpalasz do kernel odczytuje ELF/PE header [23:42] na podstawie tego linker potem sklada program [23:43] znaczy sie odczytuje ze bajty od 100 do 1000000 to sekcja .text z podstawowym adresem 0x40000000 i entry pointem na 0x40000000 [23:43] potencjalnie moze byc wiecej sekcji ale operacja jest prawie taka sama [23:43] potem jeszcze linker czyta sekcje importow i laduje rozne .dll czy tam .so [23:43] ladowanie polega na dokladnie tym samym [23:44] teraz linker wie co trzeba gdzie [23:44] jacekowski wykłada na #ubuntu-pl 4 fun ™ [23:44] i MAPUJE te pliki do przestrzeni adresowej [23:44] mapowanie czegos do pamieci polega na tym ze [23:44] jacekowski, szkoda ze nie uczysz u nas :P [23:45] idzie linker i mowi do kernela [23:45] otworz /bin/bash [23:45] teraz ten /bin/bash od bajtu 100 do bajtu 100000 ma byc dostepny pod adresem 0x40000000 [23:46] kernel stwierdza ze OK i idzie dalej [23:46] teraz linker robi to samo dla kazdego innego potrzebnego .so czy tam .dll [23:46] i jak skonczy to robi skok do entry pointa odczytanego kilka krokow wczesniej [23:46] chyba j*bnę kawkę :F [23:47] i w tym momencie [23:47] EIP sie nagle robi 0x40000000 [23:47] jacekowski, a gdzie to mozna przeczytac? [23:48] zrodla kernela, x86 developers manual intela, windows internals [23:48] i kilka innych ksiazek ktore maja ilosci stron liczone w tysiacach [23:48] wracajac do EIP 0x4000000000 [23:48] co sie teraz dzieje [23:49] jako ze nic wczesniej tego nie probowalo wykonac/odczytac to mozna zalozyc ze w page table (MMU) nie ma wpisu dla tego adresu (bo kernel nie ustawil) [23:49] to procesor robi page fault i wyskakuje z r3 do r0 [23:49] MMU to jednostka adresujaca [23:50] teraz w r0 siedzi kernel i widzi [23:50] cos sie chcialo dostac do 0x40000000 [23:51] i wtedy zaczyna kopiowac kolejna potrzebna zawartosc [23:51] patrzy teraz kernel w swoje struktury i widzi ze pod tym adresem powinien byc ten /bin/bash (badz nie, jesli adres jakis zly albo inne dziwne rzeczy sie podzialy) [23:51] no to kernel teraz dopiero zaczyna odczytywac /bin/bash w ilosci kontrolowanej przez rozne inne ustawienia (domyslnie chyba 128kB kawalki) [23:52] odczytal te 128kB i wrzucil do pamieci fizycznej [23:52] pod jakims tam 0x1234567 [23:52] jednoczesnie teraz ustawia wpis w page table ze fizyczny adres 0x1234567 ma byc mapowany do wirtualnego 0x40000000 na dlugosci 128kB [23:53] jak rowniez ustawia uprawnienia do odczytu i wykonania (bez uprawnien do zapisu) (jesli procesor ma NX) [23:53] i teraz kernel kaze procesorowi wrocic do r3 [23:54] teraz procesor/MMU znowu sprawdza wpis w page table i widzi ze 0x4000000 gdzie jest zamapowane [23:54] i wykonuje kod [23:54] az do momentu kiedy zamapowane 128kB sie skonczy albo cos innego sie wydarzy [23:54] i laduje kawalek po kawalku [23:55] ostatecznie moze sie skonczyc tym ze zaladuje caly iles MB program do pamieci [23:55] ale rownie dobrze moze sie okazac ze nie [23:55] ide spac [23:55] jeszcze w anglii siedzisz? [23:56] widać jestem niegodzien aby uzyskać odpowiedź [23:57] tak [23:57] i co tam słychać ciekawego? [23:57] nic [23:57] http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html [23:57] (at www.intel.com) [23:58] sporo wiedzy jest tutaj [23:59] jacekowski, mam napisane ze euid moze sie zmienic na nobody