Wat is het AR-bestandsformaat?
Het .ar-archiefformaat dateert uit Unix Version 1 (1971), ontwikkeld bij Bell Labs als de originele Unix-archiveerder. Een .ar-bestand voegt meerdere bestanden samen, elk voorafgegaan door een vaste 60-byte ASCII-header waarin de naam van het lid, de wijzigingstijd, machtigingen en de grootte in bytes worden vastgelegd. Elk archief begint met de 8-byte magic string !<arch> gevolgd door een enkele line feed (0x0A).
Het formaat slaat leden standaard ongecomprimeerd op. Er bestaan twee hoofdvarianten:
- De BSD-variant (gebruikt op macOS) voegt lange bestandsnamen inline toe na elke header.
- De System V/GNU-variant (gebruikt op Linux) slaat lange namen op in een speciaal
//-lid en voegt een/-symboolindex toe voor efficiënt opzoeken tijdens het linken.
Tegenwoordig wordt .ar het meest aangetroffen als .a statische bibliotheken op Linux en macOS, waar de ar-tool van GNU binutils de standaardimplementatie is. Debian .deb-pakketten zijn ook ar-archieven - het hernoemen van een .deb en het uitpakken ervan onthult de interne control.tar- en data.tar-bestanden. Veelvoorkomende ar-commando's: ar rcs libfoo.a *.o maakt een archief aan, ar t archive.ar toont de inhoud, en ar x archive.ar pakt ze uit.
Beveiliging & veiligheid
RISICO: LOWAR-archieven zelf zijn containers zonder uitvoerbare semantiek - ze kunnen niet automatisch code uitvoeren. De leden binnenin kunnen echter gecompileerde objectbestanden of uitvoerbare bestanden zijn die kwaadaardig kunnen zijn. Inspecteer bij het uitpakken van een ar-archief van een niet-vertrouwde bron de uitgepakte bestanden voordat u ze uitvoert. Statische bibliotheken die in uw binaire bestanden zijn gelinkt, worden onderdeel van die bestanden; een gemanipuleerde statische bibliotheek is een aanvalsvector voor de toeleveringsketen (bijv. gecompromitteerde toolchain-archieven). Verifieer altijd checksums bij het downloaden van toolchain-tarballs die .a/.ar-bibliotheken bevatten.
Formaatdetails
in een notendop- Debian-pakket (.deb) - Een .deb-bestand is een ar-archief dat control.tar.* en data.tar.* leden bevat; de ar-container is transparant voor eindgebruikers (dpkg handelt dit af).
- .a statische bibliotheek (hetzelfde formaat, andere extensie) - Op Linux/macOS is .a de gebruikelijke extensie voor statische bibliotheken in ar-formaat; .ar is minder gebruikelijk maar identiek.
Programma's die AR-bestanden openen
Technische details
diepe specificaties| Magic bytes | 21 3C 61 72 63 68 3E 0A - ASCII-string !<arch> plus newline (0x0A) op offset 0 |
| MIME-type | application/x-archive |
| Headergrootte per lid | 60 bytes (vaste breedte, ASCII-gecodeerde velden) |
| Lay-out header-velden | Bestandsnaam 16 B, wijzigingstijd 12 B, UID 6 B, GID 6 B, modus 8 B, grootte 10 B, magic 2 B |
| Uitlijning van leden | 2-byte grens; leden met een oneven lengte worden opgevuld met een enkel newline-teken (0x0A) |
| Compressie | Standaard geen - bestanden van leden worden letterlijk en ongecomprimeerd opgeslagen |
| Integriteitscontrole | Geen checksums per lid of op archiefniveau in het ar-formaat |
| Limiet bestandsnaam | 16 tekens in vaste header; onbeperkt via BSD inline-extensie of System V //-ledentabel |
| Formaatvarianten | BSD (macOS): inline uitgebreide namen; System V/GNU (Linux): //-ledentabel voor lange namen |
| GNU-symboolindex | GNU ar voegt een /-symbooltabel-lid toe aan .a-archieven voor efficiënt opzoeken van symbolen tijdens het linken |
| Ondersteuning voor dunne archieven | GNU thin archives gebruiken magic 21 3C 74 68 69 6E 3E 0A (!<thin>) en slaan bestandspaden op, geen gegevens |
| Primair gebruik | .a statische bibliotheken (Linux, macOS), .deb Debian-pakketten, .ipk OpenWrt-pakketten |
| Platformen | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Uitgebracht | 1971 (Unix v1, as the original Unix archiver) |
| Laatste versie | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Open standaard | Ja · royaltyvrij |
| Specificatie | pubs.opengroup.org |
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over AR-bestanden.