abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 21:00 | IT novinky

    Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.

    Ladislav Hagara | Komentářů: 1
    dnes 15:55 | IT novinky

    Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | IT novinky

    Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.

    Ladislav Hagara | Komentářů: 12
    dnes 10:55 | Nová verze

    V lednu bylo oznámeno, že desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. O víkendu byla vydána první preview verze.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Nová verze

    Minulý týden byl oficiálně vydán Android 17. Detaily na blogu a stránkách věnovaných vývojářům.

    Ladislav Hagara | Komentářů: 5
    včera 20:00 | IT novinky

    Dnes jde do prodeje zařízení Steam Machine. Steam Machine 512 GB za 1 039 EUR a Steam Machine 2 TB za 1 359 EUR. Do čtvrtka 25. června do 19:00 se lze zapsat na seznamy. Ty budou jednorázově náhodně slosovány, čímž bude určeno pořadí rezervací a čekacích listin.

    Ladislav Hagara | Komentářů: 16
    včera 14:44 | Nová verze

    Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.51.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek v oznámení o vydání a také na YouTube a PeerTube.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Nová verze

    Byla vydána nová verze 2026.3.0 "Carousels & Killer Whales" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | IT novinky

    Tento týden (24. a 27. června) vyprší platnost Microsoft certifikátu v UEFI vydaných v roce 2011. Nové certifikáty byly vydány v roce 2023. Kdo na počítačích, i virtuálních, používá zabezpečené spouštění (Secure Boot), měl by si ověřit, že má certifikáty aktualizovány, viz např. články na Red Hat nebo Fedora. Pro stávající systémy se nic nemění. Nadále se budou normálně spouštět. Zavaděče podepsané pouze klíčem z 2023 se ale na počítačích s pouze certifikátem 2011 nespustí. Ve Fedoře je zavaděč shim ve verzi 16.1-6 podepsán klíči 2011 i 2023.

    Ladislav Hagara | Komentářů: 7
    21.6. 19:55 | Zajímavý software

    Uživatelé mobilních telefonů s Linuxem si nyní mohou nainstalovat aplikaci Mobilní Datovka. Díky tomu je přístup k datovým schránkám dostupný i na zařízeních s mobilními linuxovými distribucemi, jako jsou například Mobian, NixOS Mobile, pmOS atd. Aplikace je dostupná na Flathubu.

    David Heidelberg | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (2%)
     (16%)
     (26%)
    Celkem 1972 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Dočasný soubor

    Jardík avatar 24.7.2012 19:30 Jardík | skóre: 40 | blog: jarda_bloguje
    Dočasný soubor
    Přečteno: 754×
    Zdravím. Neporadí někdo o způsobu vytvoření dočasného souboru? Potřebuju vytvořit dočasný soubor a označit ho ke smazání po uzavření. Zatím to řesím s open() s O_EXCL a následným voláním unlink, ale jelikož unlink chce cestu a né deskriptor, tak mám race-condition a pokud by uživatel do daného místa připojil jiný filesystém, smazal bych úplně jiný soubor. Nějaký "tajný" třeba i linux-only flag pro open, který by to udělal atomicky?
    Věřím v jednoho Boha.

    Řešení dotazu:


    Odpovědi

    24.7.2012 19:56 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Dočasný soubor
    pokud by uživatel do daného místa připojil jiný filesystém

    Pokud necháváte uživatele mountovat, co se jim zlíbí a hlavně kam se jim zlíbí, tak to je samo o sobě bezpečnostní problém.

    smazal bych úplně jiný soubor

    Když budete mít jako pracovní adresář ten, ve kterém je příslušná adresářová položka, a syscallu unlink() předáte samotné jméno (bez cesty), tak ne.

    Jardík avatar 25.7.2012 13:17 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Dočasný soubor
    Pokud necháváte uživatele mountovat, co se jim zlíbí a hlavně kam se jim zlíbí, tak to je samo o sobě bezpečnostní problém.
    Měla by to být knihovna, těžko ovlivním, co se pak bude dít na cílovém systému a s něčím takovým musím počítat.
    Když budete mít jako pracovní adresář ten, ve kterém je příslušná adresářová položka, a syscallu unlink() předáte samotné jméno (bez cesty), tak ne.
    Pracovní adresář je bohužel nepoužitelný, musím počítat s vícevláknovým programem.
    Věřím v jednoho Boha.
    24.7.2012 21:44 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Dočasný soubor
    Nějak nechápu, pomocí mktemp vytvořím soubor v /tmp a pak ho normálně smažu, nikdo jiný na adresář tmp nemá co šahat.

    24.7.2012 22:43 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dočasný soubor
    A potřebuješ teda vlastně aby to byl soubor? Si vyrob adekvátně velký swap. :)

    Pokud trváš na popsaném, koukni na unlinkat() a další *at() syscally, jestli to odpovídá tvé potřebě. Linux 2.6.hodně_dávno a asi i jinde (je to nějaký POSIX).
    Jardík avatar 25.7.2012 13:19 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Dočasný soubor
    unlinkat je ono, díky moc. Věděl jsem jen o openat, tohle pomůže, když to zkombinuju.
    Věřím v jednoho Boha.
    Jardík avatar 25.7.2012 13:27 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Dočasný soubor
    I když ... vlastně není. Pokud soubor vytvořím a uživatel ho mezitím smaže a vytvoří jiný, mám zase race.
    Věřím v jednoho Boha.
    25.7.2012 23:22 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dočasný soubor
    Jo, máš pravdu. Ale tohohle se z principu nezbavíš. Mazat musíš podle jména, protože primárně chceš mazat právě to jméno, ne inodu.

    Jediná možnost je atomické ověření inode před samotným mazáním, ale to by musel nabízet kernel. Pokud máš zájem o trochu archeologických vykopávek, koukni sem: http://lcamtuf.coredump.cx/soft/linux-2.4-funlink.diff a přeber si jak chceš. :)
    10.8.2012 17:44 tom
    Rozbalit Rozbalit vše Re: Dočasný soubor
    unlink() maze link na inode z adresare. Racecondition predchazi unlinkat(), ktery umoznuje pouzit fd na adresar, kde se link nachazi a tim predejde chybe pri presunuti adresare pripadne prekryti adresare mountem. P

    Popsany racecondition nelze odstranit, protoze soubor muze byt smazan uzivatelem a pak nalinkovan zpatky, coz nemuzete poznat, proto API neresi, jestli mazane jmeno ukazuje na inode, ktery ocekavate.
    Josef Kufner avatar 25.7.2012 09:30 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Dočasný soubor
    NAME
           tmpfile - create a temporary file
    
    SYNOPSIS
           #include <stdio.h>
    
           FILE *tmpfile(void);
    
    DESCRIPTION
           The  tmpfile()  function  opens  a  unique  temporary  file  in  binary
           read/write (w+b) mode.  The file will be automatically deleted when  it
           is closed or the program terminates.
    
    Hello world ! Segmentation fault (core dumped)
    Jardík avatar 25.7.2012 13:23 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Dočasný soubor
    Asi jsem nebyl pochopen. Tohle NENÍ řešení a tuto fci jsem vyloučil, protože open a unlink není proveden atomicky. Z glibc:
    FILE *
    tmpfile (void)
    {
      char buf[FILENAME_MAX];
      int fd;
      FILE *f;
    
      if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0))
        return NULL;
      int flags = 0;
    #ifdef FLAGS
      flags = FLAGS;
    #endif
      fd = __gen_tempname (buf, 0, flags, __GT_FILE);
      if (fd < 0)
        return NULL;
    
      /* Note that this relies on the Unix semantics that
         a file is not really removed until it is closed.  */
      (void) __unlink (buf);
    
      if ((f = __fdopen (fd, "w+b")) == NULL)
        __close (fd);
    
      return f;
    }
    
    Věřím v jednoho Boha.
    25.7.2012 13:44 Ivan
    Rozbalit Rozbalit vše Re: Dočasný soubor
    Myslim, ze resis problem kterej v realu neexistuje. Pokud nekdo za behu serveru premountuje /tmp resp. /var/tmp tak se pos*re uplne vsechno vcetne DNS resolvingu. Pokud bys' chtel byt hyperkorektni tak muzes pres stat zkontrolovat cislo inody a block device.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.