Snažím se zkopírovat celý /
adresář na nějaké jiné místo. Při rekurzivním provádění cp selže u některých souborů jako:-
/ # ls -lrt /sys/module/nf_conntrack_ipv4/uevent
--w------- 1 root root 4096 Mar 7 06:29 /sys/module/nf_conntrack_ipv4/uevent
/ #
/ # cat /sys/module/nf_conntrack_ipv4/uevent
cat: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
/ # cp /sys/module/nf_conntrack_ipv4/uevent /tmp
cp: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
Pokud vytvořím nějaký soubor pouze s w
oprávnění a zkuste to zkopírovat/cat, neviděl jsem tam žádné problémy. U některých souborů, jako je ten zmíněný výše, je však nemohu zkopírovat nebo zkopírovat, i když se snažím jako uživatel root. Zvláštní je také to, že velikost výše uvedeného souboru je uvedena jako 4096, což je podobné tomu, který máme pro adresář. Je to nějaký speciální soubor?
Myslím, že mi zde něco chybí a potřebuji nějaký vstup, abych se dozvěděl více o takových souborech nebo takovém chování. Laskavě mi pomozte pochopit, proč nemám povoleno kočkovat obsah takových souborů.
Přijatá odpověď:
V běžném souborovém systému, např. ext4
, pokud máte pouze w
oprávnění v souboru, nebudete moci číst (cat
), musíte si jej přečíst (r
) trochu na to. Všimněte si, že root
může číst jakýkoli soubor bez ohledu na bity oprávnění.
Nyní /sys
je přípojný bod speciálního sysfs
poskytuje linuxové jádro, které je ve skutečnosti virtuálním souborovým systémem a funguje jinak než běžné souborové systémy. /sys
obsahuje informace o systému související se zařízením.
Úprava něčeho v /sys
by přímo změnilo vnitřní datovou strukturu jádra, takže záleží na jádru, co povolí nebo zakáže.
Pro /sys/module/nf_conntrack_ipv4/uevent
, máte pouze w
bit nastavený pro vlastníka (root
), i když přidáte r
bit pro root
(což je velmi špatný nápad ), při čtení souboru byste dostali I/O chybu, protože podle návrhu by jádro nikomu neumožňovalo číst uevents pro nf_conntrack_ipv4
modul.