Byla vydána Java 27 / JDK 27. Nových vlastností (JEP - JDK Enhancement Proposal) je 9.
Byl vydán Mozilla Firefox 156.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vestavěný prohlížeč PDF se nyní spouští o 45 % rychleji. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 156 bude brzy k dispozici také na Flathubu a Snapcraftu.
Článek na Raspberry Pi představuje nový vzhled desktopu operačního systému Raspberry Pi OS v aktuálním vydání 2026-09-15.
Nové verze Roundcube Webmailu 1.6.19 a 1.7.4 řeší několik zranitelností.
Na Kickstarteru běží kampaň na podporu hloupého (jenom volání a SMS) tlačítkového DIY telefonu MAKERphone 2.0 od společnosti CircuitMess postaveného na ESP32-S3 a volitelně také s hodinkami MAKERband. S možností psaní vlastních aplikací. S volitelnými HW rozšiřujícími moduly.
Byla vydána nová verze 10.7 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přibyly balíčky HomeBox a Scrypted.
OpenRGB (GitLab) dospěl do verze 1.0 (YouTube). OpenRGB (dříve OpenAuraSDK) je svobodný multiplatformní software umožňující nastavení podsvícení celé řady různých „herních“ komponent a periferií.
Dnes startuje prodej headsetu Steam Frame. Počínaje dneškem se tedy můžete zapsat na seznam pro jeden z následujících modelů: Steam Frame 256 GB za 1 049 EUR a Steam Frame 1 TB za 1 279 EUR.
Vládní CERT upozorňuje na kritickou zranitelnost v GitLab Community Edition (CE) a Enterprise Edition (EE). Zranitelnost CVE-2026-85706 typu path traversal v Repository Commits API dosahuje skóre CVSS 10.0. Kvůli nedostatečnému omezení cest a chybějícímu vynucení autentizace může za určitých podmínek neautentizovaný útočník číst libovolné soubory ze serveru GitLab, a získat tak přístup k citlivým datům a konfiguraci instance.
Linux může běžet nativně na ESP32-S3 – bez emulace a rovnou s 9,7″ e-paperem.
chrootu můžete posoudit třeba s takovýmto programem:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#define CHROOT_TEMP "chroot_temp"
int ls(char *dirname) {
DIR *dir = opendir(dirname);
struct dirent *dirent;
char tmp[4096];
struct stat st;
if (dir == NULL) return -1;
printf("Výpis adresáře '%s'\n", dirname);
while ((dirent = readdir(dir))) {
strcpy(tmp, dirname);
strcat(tmp, "/");
strcat(tmp, dirent->d_name);
lstat(tmp, &st);
if (S_ISDIR(st.st_mode)) printf("d"); else
if (S_ISLNK(st.st_mode)) printf("l"); else
if (S_ISBLK(st.st_mode)) printf("b"); else
if (S_ISCHR(st.st_mode)) printf("c"); else
if (S_ISFIFO(st.st_mode)) printf("p"); else
if (S_ISSOCK(st.st_mode)) printf("s"); else
if (S_ISREG(st.st_mode)) printf("-"); else printf("?");
if (st.st_mode & 00400) printf("r"); else printf("-");
if (st.st_mode & 00200) printf("w"); else printf("-");
if (st.st_mode & 04000)
if (st.st_mode & 00100)
printf("s");
else printf("S");
else
if (st.st_mode & 00100)
printf("x");
else
printf("-");
if (st.st_mode & 00040) printf("r"); else printf("-");
if (st.st_mode & 00020) printf("w"); else printf("-");
if (st.st_mode & 02000)
if (st.st_mode & 00010)
printf("s");
else
printf("S");
else
if (st.st_mode & 00010)
printf("x");
else
printf("-");
if (st.st_mode & 00004) printf("r"); else printf("-");
if (st.st_mode & 00002) printf("w"); else printf("-");
if (st.st_mode & 01000)
if (st.st_mode & 00001)
printf("t");
else
printf("T");
else
if (st.st_mode & 00001)
printf("x");
else
printf("-");
printf(" %2u %6u %6u %10lu %s", st.st_nlink, st.st_uid,
st.st_gid, st.st_size, dirent->d_name);
if (S_ISLNK(st.st_mode)) {
tmp[readlink(tmp, tmp, sizeof(tmp))] = 0;
printf(" -> %s", tmp);
}
printf("\n");
}
return 0;
}
int main() {
int d;
int i;
struct stat fi;
char buf[1024];
printf("Aktuální adresář: %s\n", getcwd(buf, sizeof(buf)));
ls(".");
if (stat("chroot_temp", &fi) < 0)
mkdir("chroot_temp", 0700); /* uděláme si podadresář */
else
if ((fi.st_mode & S_IFDIR) == 0) {
printf("Dočasný adresář '" CHROOT_TEMP "' nelze vytvořit.\n");
return 1;
}
d = open(".", O_RDONLY); /* vytvoříme si návratový bod */
chroot("chroot_temp"); /* zanoříme se do podadresáře */
fchdir(d); /* vyskočíme zpět a chroot pokazíme */
for (i = 0; i < 10000; i++) /* utečeme */
chdir("..");
chroot("."); /* a potvrdíme to */
printf("Aktuální adresář: %s\n", getcwd(buf, sizeof(buf)));
ls(".");
return 0;
}
Prográmek se přeloží a vyzkouší takto:
gcc -static -o chroot_test chroot_test.c chroot `pwd` /chroot_testFungovat to však bude jen se správcovskými právy - to je koneckonců napsáno i v manuálové stránce:
man 2 chroot.
O této problematice najdete více tady a ještě tady.
If the user is root or the program is setuid root, special care must be taken. The setuid function checks the effec- tive uid of the caller and if it is the superuser, all process related user ID's are set to uid. After this has occurred, it is impossible for the program to regain root privileges.
book:/# chroot /tmp/ /chroot_test Aktuální adresár: / Výpis adresáre '.' drwxr-xr-x 3 0 0 42 . drwxr-xr-x 3 0 0 42 .. -rwxr-xr-x 1 1000 100 502147 chroot_test drwx------ 2 0 0 6 chroot_temp Aktuální adresár: / Výpis adresáre '.' drwx------ 2 0 0 6 . drwx------ 2 0 0 6 ..
Tiskni
Sdílej: