Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
Skriptovací programovací jazyk PHP (PHP: Hypertext Preprocessor, původně Personal Home Page) dnes slaví 30 let. Přesně před třiceti lety, 8. června 1995, oznámil Rasmus Lerdorf vydání PHP Tools (Personal Home Page Tools) verze 1.0.
Ve středu v 17:00 byl ve Francii zablokován přístup k PornHubu a dalším webům pro dospělé. K 17:30 došlo k nárůstu počtu registrací Proton VPN o 1 000 % [𝕏]. Dle nového francouzského zákona jsou provozovatelé těchto webů povinni ověřovat věk uživatelů prostřednictvím průkazu totožnosti nebo platební karty.
Před 32 lety, 6. června 1993, byl spuštěn první český WWW server (ještě pod TLD .cs), pro potřeby fyziků zabývajících se problematikou vysokých energií.
Střílečku Borderlands 2 lze v rámci výprodeje série Borderlands na Steamu získat zdarma napořád, když aktivaci provedete do 8. června 19:00.
Ř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: