Open source webový aplikační framework Django slaví 20. narozeniny.
V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.
Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.
Řešení dotazu:
r
(read), w
(write) a x
(eXecute). Na souborech znamená právo r
právo číst obsah souboru, právo w
právo soubor editovat, a právo x
právo soubor spustit (jako spustitelnou binárku – nevztahuje se to na skripty, tam spouštíte binárku interpretu a ta pouze čte soubor se skriptem). Na adresáři znamená právo r
právo vypsat seznam souborů v adresáři, právo w
znamená možnost vytvářet, přejmenovávat a mazat soubory v adresáři, právo x
znamená právo vstoupit do adresáře (udělat do něj cd
) – bez toho práva se nedostanete ani do podadresářů (když uděláte cd /a/b/c
a nemáte právo x
na /a
, dovnitř se nedostanete, interně se to provádí jako tři postupné skoky vždy o jeden adresář.)
Pozor na to, že i běžný uživatel potřebuje oprávnění číst na spoustu souborů v /etc
, na druhou stranu v běžných distribucích jsou výchozí práva nastavena rozumně, takže běžný uživatel nebude mít práva zapisovat třeba nikam do /etc
.
Omezovat přístup až na úrovni konkrétních programů, jak tady píšou ostatní, je spíš taková obezlička, vždycky v tom programu může být nějaká chyba nebo si neuvědomíte nějakou interakci a uživatel vám z toho omezení uteče. To, co jsem popsal já, jsou oprávnění přímo na úrovni operačního systému, ty žádný program neobejde, i kdyby se na hlavu stavěl.
a právo x
právo soubor spustit (jako spustitelnou binárku – nevztahuje se to na skripty, tam spouštíte binárku interpretu a ta pouze čte soubor se skriptem).
No ale to myslíš snad jen skripty, které spouštíš např. perl skript.pl
, ale když máš skript script
na jehož začátku mám #!/usr/bin/perl
a potom pokračuje kód v perlu, tak mu musíš přiřadit x
jinak ti shell oznámí, že ho nespustí. (a tomuto říkáme také skript). Tedy alespoň u mne. To co napsal mne překvapilo a tak jsem zkusil skriptům odebrat x.
~$ cat kecas.sh #!/bin/sh echo Kecas ~$ ls -l kecas.sh -rw-rw-r-- 1 user user 21 led 28 13:01 kecas.sh ~$ bash kecas.sh Kecas
./kecas.shTo, že ručně spustíš interpret je o něčem jiném. Navíc v tomto případě spouštíš jiný interpret, než jaký je uveden ve skriptu.
x
skriptu nezabráníte jeho spuštění. Interpretaci #!
na začátku skriptu dělá shell, takže si klidně můžete napsat shell, který vám ./script.pl
spustí, i když nebude mít právo x
. Na druhou stranu když máte nějaký binární program bez práva x
, ale s právem r
, taky vám nic nebrání udělat si jeho kopii a té právo x
nastavit a program spustit. Takže ve výsledku je to vlastně stejné.
Interpretaci #! na začátku skriptu dělá shell, [...]Ne. Tu interpretaci dělá jádro.
fork()
a pak nový proces zalidní execve("./test.csh"...)
. Do teď jsem byl přesvědčen, že systémová volání nejsou zpracovávána shellem. Takže si nejsem jistý ani správností ani obecností tvrzení, že to dělá shell.
man bash
COMMAND EXECUTION If the command name contains no slashes, the shell attempts to locate it. […] If the name is neither a shell function nor a builtin, and contains no slashes, bash searches each element of the PATH for a directory containing an executable file by that name. […] If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execution environment. Argument 0 is set to the name given, and the remaining arguments to the command are set to the arguments given, if any. If this execution fails because the file is not in executable format, and the file is not a directory, it is assumed to be a shell script, a file containing shell commands. A subshell is spawned to execute it. This subshell reinitializes itself, so that the effect is as if a new shell had been invoked to handle the script, with the exception that the locations of commands remembered by the parent (see hash below under SHELL BUILTIN COMMANDS) are retained by the child. If the program is a file beginning with #!, the remainder of the first line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this executable format themselves. The arguments to the interpreter consist of a single optional argument following the interpreter name on the first line of the program, followed by the name of the program, followed by the command arguments, if any.
man zshmisc
COMMAND EXECUTION If a command name contains no slashes, the shell attempts to locate it. […] Otherwise, the shell searches each element of $path for a directory containing an executable file by that name. If the search is unsuccessful, the shell prints an error message and returns a nonzero exit status. If execution fails because the file is not in executable format, and the file is not a directory, it is assumed to be a shell script. /bin/sh is spawned to execute it. If the program is a file beginning with `#!', the remainder of the first line specifies an interpreter for the program. The shell will execute the specified interpreter on operating systems that do not handle this executable format in the kernel.(Až k té části „pokud to nedělá kernel“ jsem poprvé nedočetl, proto jsem byl přesvědčen, že to dělá jenom shell.)
login
a bůhví, jak by to pak fungovalo.
Tiskni
Sdílej: