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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 1
včera 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 26
včera 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 8
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 14
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 15
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 5
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 774 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 593×
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: 79 | 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 | Švédsko
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 | Švédsko
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.
Řešení 1× (Filip Jirsák)
Josef Kufner avatar 25.7.2012 09:30 Josef Kufner | skóre: 66
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.