Vládní CERT upozorňuje (𝕏) na sérii bezpečnostních záplat (CVSS 9.9) v produktech Cisco řešících kritické zranitelnosti umožňující obejití autentizace, eskalaci oprávnění, vzdálené spuštění kódu a odepření služby. Úspěšné zneužití může útočníkům umožnit získat neoprávněný přístup k dotčeným systémům, kompromitovat zařízení Cisco Catalyst SD-WAN a Cisco IOS XE, spustit libovolný kód, zpřístupnit citlivé informace nebo narušit dostupnost postižených systémů.
Soud v americkém státě Nové Mexiko ve čtvrtek nařídil internetové společnosti Meta Platforms zaplatit 567 milionů dolarů (téměř 12 miliard Kč) za újmy, které její platformy působí mladým lidem. S přihlédnutím k dřívějšímu verdiktu tak má společnost celkem zaplatit 942 milionů dolarů, což je malý zlomek jejího ročního výnosu, který loni činil 60 miliard dolarů. Čtvrteční verdikt firmě také nařizuje, aby změnila způsob, jakým její
… více »Mark Russinovich (CTO v Microsoft Azure) se na LinkedIn pochlubil svým projektem MS Paint Doom napsaným pomocí Claude. Hru Doom umožňuje hrát v programu Malování (Microsoft Paint). Malování funguje jako monitor. Herní engine (ViZDoom) běží na pozadí a každý vykreslený snímek hry vkládá automaticky přes schránku (clipboard) do Malování.
Platformy ChatGPT i Roblox by mohly být zařazeny na seznam mimořádně velkých on-line platforem nebo internetových vyhledávačů, na něž se vztahují zvláštní podmínky podle nařízení o digitálních službách (DSA). Vzhledem k tomu, že ChatGPT i Roblox oznámily počet uživatelů nad prahovou hodnotou DSA, je toto označení „rozhodně možné“ a mohlo by „přijít dříve či později“. On-line platformy a vyhledávače zařazené na seznamy DSA musejí
… více »Společnost Cloudflare představila Cloudflare OS (GitHub), tj. open source platformu navrženou pro integraci umělé inteligence (agentů) přímo do pracovních procesů organizací.
Byla vydána nová verze 5.13 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Vedle zdrojových kódů je k dispozici také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).
Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost NVIDIA.
Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.
Kermit, tj. protokol pro přenos souborů, vznikl před 45 lety. Při této příležitosti byla po 15 letech od vydání poslední stabilní verze 9.0.302 vydána nová stabilní verze 11 implementace C-Kermit. S podporou IPv6.
/dev, vybírám zařízení s názvy sg<číslo>, otevřu a přes ioctl pošlu SCSI_INQUIRY a pak testuju vrácená inquiry data, byte 1, bity 0-5 na hodnotu 0x05.
Jenže prohledávání /dev adresáře je docela pomalé, dochází tam k neustálému kopírování řetězců, a tak hledám nějaký lepší způsob.
Řešení dotazu:
/sys musí stačit.
GetLogicalDrives() dostanu zařízení a funkcí GetVolumeType() dostanu info, jestli jde o CD-ROM, aniž by se požadavek posílal mechanice, protože to už Windows "ví".
Tak mi tedy řekněte, kde v /sys ty mechaniky najdu, sice něco najdu, ale ať tam hledám jak divej, nikde nenalézám symlink na zařízení /dev/sg*
find /sys/devices -name 'media' | while read media; do [[ "$(<$media)" == "cdrom" ]] && echo "$media" done
find /sys/devices -name 'media' mi tu nenajde vůbec nic ...
hal-device $(hal-find-by-capability --capability storage.cdrom) | grep sysfs
tak mi cdrom najde podle "capabilities". Je jich více: { 'storage', 'block', 'storage.cdrom' }
Ve vygrepovaném adresáři v sysfs sice také existuje soubor capabilities, ale tam je jen "19". Kdyby to znamenalo cdrom (nedaří se mi najít význam toho souboru či čísla) tak by to mohlo pomoct:
find /sys/devices -name 'capability' | while read capability; do
[[ "$(<$capability)" == "19" ]] && echo "$capability"
done
ale bohužel jsem z toho jinak jelen :(
hal-device $(hal-find-by-property --key storage.drive_type --string cdrom) | grep sysfs
ale jinak tomu vůbec nerozumím (to asi nemusím říkat).
/sys/bus/scsi/. Jsou tam adresy zařízení ve tvaru A:B:C:D. Když do toho kouknu, jsou tam mimo jiné i údaje z inquery struktury (vendor, model, rev, ...) včetně type (5 = CD-ROM). Dále v tom adresáři je adresář scsi_generic, v něm adresář sg1 atd. Jenže tam nikde nevidím link na soubor s zařízením, který bych byl schopen otevřít a posílat SCSI příkazy, což je můj cíl (tak trochu si hraju a chci se dopracovat ke smazání cédéčka).
/sys/devices. HAL vám nenutím, měl sloužit jen k identifikaci problému.
Zatím je rozdíl v tom, že vy máte scsi a já ide cd-rom.
Chcete říct, že vám ten hal to zařízení v /sys/devices nenašel?
Osobně mám v /sys/devices jak ide tak scsi zařízení.
/sys/devices/pci0000:00/0000:00:1f.2/host1/target11:0:0/1:0:0:0/block/sr0, ale z toho taky nedostanu cestu k zařízení. Navíc zařízení /dev/sr0 nemůžu SCSI příkazy posílat, jeho otevřením se totiž otevře to médium, co tam je, musí se otevřít generické scsi zařízení /dev/sgX.
Škoda, že se kvůli debilní licenci nemůžu podívat do zdrojáků cdrecordu nebo wodimu. Zkusím naně strace ... á, někdo si může stěžovat na můj přístup, co dělá wodim. Zkouší otevírat všechna zařízení /dev/hda až /dev/hdz, /dev/scd1 až /dev/scd255 a pokud se je podaří otevřít, posílá jim SCSI příkazy. Takže opravdu zůstanu u svého způsobu, když to jinak očividně nejde.
Taky nechápu, proč wodim používá flag O_EXCL pro volání open() bez O_CREAT, když manuálová stránka píše, že je pak výsledek nedefinovaný.
[petr@nt /sys/devices]$ hal-device $(hal-find-by-property --key storage.drive_type --string cdrom) | grep sysfs linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:11.0/host1/target1:0:0/1:0:0:0/block/sr0' (string) [petr@nt /sys/devices]$
Link tam nie je (pretoze moze byt lubovolny pocet suborov, ktore reprezentuju toto zariadenie) - ale v adresari block najdes subor dev, v ktorom je MAJOR a MINOR.vám sice následně ruply nervy, ale osobně nepovažuji za velký problém projít těch pár AKTIVNÍCH sg zařízení, otevřít pár souborů dev a přečíst si major a minor, čímž mám /dev/srX (v případě scsi). Zkuste mrknout na sg_map, v nové verzi pracuje se sysfs.
$ sg_map # Note: the devfs pseudo file system is present /dev/sg0 /dev/sda /dev/sg1 /dev/sr0 /dev/sg2 /dev/sr1Samozřejmě je pořád možnost dělat to postaru, pokud jste pod tlakem.
)), tak smůla.
A může mi někdo ještě osvětlit atribut O_EXCL u open(), když není uveden O_CREAT? V manuálové stránce se popisuje nedefinované chování, ale wodim/cdrecord ho tak používají.
Hledání CD-ROM mechanik a jejich vložení do seznamu má ve Windows verzi 34 řádků (počítám i řádky, které mají jen otevírací/uzavírací závorky {,}).
V Linuxové verzi jsem teď na 174 řádcích a teď zbývá ještě dopsat kód na prohledání celého /dev pro případ, že zařízení /dev/jméno_co_se_našlo_v_sysfs neexistuje, nebo se jeho major/minor neshoduje s tím v /sys.
Kdyby někoho zajímalo, jak to vypadá ve Windows:
TSCSIDrive *drive;
TSCSIDrive tmpDrive;
uint8_t device_type;
/*
* Using GetLogicalDrives() could speed up things, but there is always
* possibility, that drive has no letter assigned, is mounted to NTFS
* folder or it is not even mounted. This way we handle all these cases.
*/
HANDLE hVolumeSearch;
/*
* Volume name is in "\\?\Volume{ITS_GUID}\" format,
* GUID's format is AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
*/
WCHAR volumeName[MAX_PATH];
hVolumeSearch = FindFirstVolumeW(volumeName, MAX_PATH);
if (hVolumeSearch != INVALID_HANDLE_VALUE)
{
do
{
volumeName[MAX_PATH-1] = 0;
if (GetDriveTypeW(volumeName) == DRIVE_CDROM)
{
tmpDrive._open_fn = volumeName;
// remove trailing slash so that we open drive itself and not
// the medium inserted
if (tmpDrive._open_fn[tmpDrive._open_fn.size()-1] == '\\')
{
tmpDrive._open_fn.erase(tmpDrive._open_fn.size()-1);
}
if (tmpDrive.openDrive())
{
tmpDrive.setTimeout(10);
// request inquiry data and make sure OS didn't lie to us
if (tmpDrive.inquiry(tmpDrive._inqData, TSCSIDrive::INQUIRY_DATA_SIZE))
{
device_type = (tmpDrive._inqData[0] & 0x1F);
if (device_type == 0x05 /* CD-ROM */)
{
drive = new TSCSIDrive();
tmpDrive.readScsiAddress(drive->_address);
drive->_open_fn = std::move(tmpDrive._open_fn);
memcpy(drive->_inqData, tmpDrive._inqData, TSCSIDrive::INQUIRY_DATA_SIZE);
_drives.push_back(drive);
}
}
tmpDrive.closeDrive();
}
tmpDrive._open_fn.clear();
}
} while (FindNextVolumeW(hVolumeSearch, volumeName, MAX_PATH));
FindVolumeClose(hVolumeSearch);
}
system("lsscsi | grep ...") :)
)
Documentation/sysfs-rules.txt a další.
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i cd
libcdt libcdt - Container DataType library
libudf libudf - UDF library of libcdio
libcdio++ libcdio++ - C++ OO Portable CD-ROM I/O library
libcdio libcdio - Portable CD-ROM I/O library
libiso9660++ libiso9660++ - C++ OO ISO-9660 library of libcdio
libiso9660 libiso9660 - ISO-9660 library of libcdio
gstreamer-cdda-0.10 GStreamer CDDA Library - CDDA base classes
libcdio_cdda libcdio_cdda - CD paranoia CD-DA library from libcdio
libcdio_paranoia libcdio_paranoia - CD paranoia library from libcdio
libcddb libcddb - CDDB server access library
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i devic
libgphoto2_port libgphoto2_port - Device-independent access to serial, USB, and other ports
devkit-power-gobject devkit-power-gobject - DeviceKit-power is a system daemon for installing stuff.
gnome-bluetooth-1.0 gnome-bluetooth-1.0 - Widgets for Bluetooth device selection
usbutils usbutils - USB device database
libmtp libmtp - libmtp is a library for accessing Media Transfer Protocol devices
devmapper-event devmapper-event - device-mapper event library
pciaccess pciaccess - Library providing generic access to the PCI bus and devices.
libsynce libsynce - A helper library for SynCE, a framework to sync WinCE devices
libavdevice libavdevice - FFmpeg device handling library
DeviceKit-disks DeviceKit-disks - DeviceKit-disks daemon
blkid blkid - Block device id library
devmapper devmapper - device-mapper library
libv4l2 libv4l2 - v4l2 device access library
hal-storage hal-storage - hal library for storage devices and volumes
libudev libudev - Library to access udev device information
vojta|vojta-dell ~ $> pkg-config --list-all | grep -i dvd
dvdread libdvdread - Low level DVD access library
dvdnavmini libdvdnavmini - DVD Navigation mini library
libdvdcss libdvdcss - DVD access and decryption library.
dvdnav libdvdnav - DVD Navigation library
vojta|vojta-dell ~ $>
Především ta prostřední skupina mi přijde zajímavá.
/sys/devices.
Utilita tu už taky byla, jmenuje se sg_map. Nová verze sg_map26 překvapivě funguje nad /sys... Takže pokud nepoužíváš jádro 2.4...
Hovoříš o linuxu a máš něco proti souborům? Dobré ráno. V linuxu je všechno důležité soubor, a pokud ne soubor, tak alespoň virtuální filesystém. sysfs je standardní rozhraní a má světlou budoucnost (TM).
V linuxu to takto prostě funguje, filesystém a soubory jsou rozhraní k jádru, zařízením a dalším věcem. Je to základní princip fungování, ne něco špatného či nevhodného. Není lepší způsob, protože sysfs není špatný způsob.
Pět minut je fakt málo.
find někde na /proc nebo /sys, to je prostě blbost.
Tiskni
Sdílej: