Index
Szklarski Alfred 4 Tomek na tropach Yeti
abc.com.pl 9
Szklarski Alfred 3 Tomek na wojennej sciezce
Sacha ZaÂświaty i krainy mityczne
468 11
Russell Boski plan wieków
rozdzial 29 (21)
Michael Cremo Zakazana archeologia
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • szarlotka.pev.pl

  • [ Pobierz całość w formacie PDF ]
    .6.10.2 Funkcja chmod()Do spisu tresci tematu 66.10.2 Funkcja chmod()Spis tresciWstep.Opis struktury danychFunkcja chmod i funkcje pomocniczeZrodla informacjiWstepFunkcja chmod nalezy do funkcji obslugujacych i-wezly.Umozliwia ona zmiane trybu dostepu do pliku.Nie mozna jej jednak uzyc do zmiany rodzaju pliku.Obowiazujacy identyfikator uzytkownikaprocesu wywolujacego te funkcje musi byc rowny identyfikatorowi wlasciciela pliku lub procesem wywolujacymmusi byc nadzorca systemu.Opis struktur danychPonizej jest przedstawione znaczenie bitow slowadostepu do pliku zapisanego w i-wezle na polu mode.bit setuid - bit nadawania efektywnego identyfikatora uzytkownika dla procesu wykonujacego plik,bit setgid - bit nadawania efektywnego identyfikatora grupy dla procesu wykonujacego plikbit przyklejania - gdy 1, to w pamieci zostaje kopia pliku po jego wykonaniutyp pliku (4 bity z lewej, osemkowo):Struktura iattrstruct iattr {unsigned int ia_valid; /* bity mowia, co chcemy zmienic */umode_t ia_mode; /* nowy tryb dostepu dla i-wezla */uid_t ia_uid; /* nowy uid */gid_t ia_gid; /* nowy gid */.(i inne, np.czas dostepu i modyfikacji i-wezla)};Ta struktura sluzy do wymiany atrybutow i-wezla miedzy funkcjami wirtualnego(np.chmod), a konkretnego file-systemu (np.inode_change_ok).W Linuxie pewne pliki moga miec szczegolne wlasciwosci, o ktorych mowipole inode->flags.Naleza do nich:immutable - nikt nie dostaje do niegoprawa do pisania, moga byc tylko czytaneappend-only - moga byc otwierane wtrybie pisania, ale dane sa zawsze dodawane na koncu pliku.Pliki te niemoga byc usuwane, ani ich nazwy zmienianeFunkcja chmod i funkcjepomocniczeFunkcja chmod:DEFINICJA: int chmod (const char *filename, mode_t mode);WYNIK: blad lub 0errno=EPERM(nie mozna zmienic praw dostepuwlasciciela lub grupy z powodu nie spelnienia ktoregokolwiek z warunkow opisanychponizej w fukcji inode_change_ok)Implementacja funkcji:{Przeksztalc nazwe sciezkowa pliku w i-wezel;Jesli system plikow jest zamontowany tylko do czytanialub i-wezel jest immutable lub append-only,to: zwolnij i wezel (pobrany w namei) - funkcja iput - i wyjdz;Jesli mode=-1, to ustaw mode na stary inode->modeWez cztery bity z lewej (oznaczajace typ pliku) ze starego slowa praw dostepu z i-wezlaa reszte bitow z argumentu mode.Nowo uformowane slowo wpisz na pole iattr->ia_modeNa polu iattr->a_valid ustaw bity mowiace, ze chcemy zmienic tryb dostepu i czasostatniej modyfikacji i-wezlaZaznacz w i-wezle ze jest brudny(inode->i_dirt)Ustaw czas ostatniej modyfikacji i-wezla (iattr->ia_ctime) na obecnySprawdz czy mozna zmienic prawa wykonujacfunkcje inode_change_okJesli inode_change_ok nie zwrocila bledu to zmien i-wezel (wykonujemy procedure inode_setattr)Zwolnij i-wezel (iput) pobrany w nameiZwroc blad z inode_change_ok}/*koniec chmod*/Funkcja inode_change_ok:DEFINICJA: int inode_change_ok (inode *inode, struct iattr *iattr);WYNIK: 0 lub bladerrno=EPERM(nie mozna zmienic praw, uzytkownika lub grupy)Opis algorytmu:{Zerowa zasada: superuser dla systemu plikow moze wszystko! Jest tak,gdy fsuid procesu (efektywny identyfikator uzytkownika dla systemu plikow)jest rowny 0.Pozostale zasady: (o tym, co chcemy zmieniac mowi pole iattr->ia_valid)Jesli chcesz zmienic:uid pliku - musisz zmieniac wlasciciela swojego plikuna siebie (nie mozna plikow komus oddawac, jesli nie jest superuserem)grupe (gid) dla pliku, musisz nalezec do grupy docelowej(nie musisz byc wlascicielem) lub zmieniac na grupe dotychczasowa.slowo dostepu, musisz byc wlascicielem.Uwaga:jesli nie nalezysz do grupy, na ktora chcesz zmienic, to bit setgidzostanie wyzerowany.Stanie sie tak rowniez, gdy nie chcesz zmieniac grupy(ale chcesz prawa dostepu) i nie nalezysz do dotychczasowej grupy pliku.czas modyfikacji pliku (mtime) lub dostepu do pliku (atime),musisz posiadac ten plik.}/*koniec inode_change_ok*/Zrodla informacjiPliki zrodlowe linuxa:linux/fs/open.clinux/fs/inode.cAutor:Andrzej Silaczuk [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aceton.keep.pl
  • 
    Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl.