bitlvl
SR

Objašnjenje ls -l i stat

Nalepite jedan ili više redova iz ls -l, ili izlaz stat file. Svaka kolona se imenuje i dekodira, uključujući oznake koje većina ljudi ignoriše.

Rezultati i poruke ovog alata prikazuju se na engleskom.

Čitanje ls -l

-rwxr-xr-x. 1 root root 4096 Oct 18 12:00 script.sh
│└┬┘└┬┘└┬┘│ │  │    │    │    └────┬────┘ └───┬───┘
│ │  │  │ │ │  │    │    │         │          └ ime (i -> odredište za simboličke linkove)
│ │  │  │ │ │  │    │    │         └ vreme izmene (godina se prikazuje ako je starije od 6 meseci)
│ │  │  │ │ │  │    │    └ veličina u bajtovima (ili major, minor za uređaje)
│ │  │  │ │ │  │    └ grupa
│ │  │  │ │ │  └ vlasnik
│ │  │  │ │ └ broj hard linkova
│ │  │  │ └ . = SELinux kontekst, + = ACL, @ = prošireni atributi (macOS)
│ │  │  └ ostali: r-x
│ │  └ grupa: r-x
│ └ vlasnik: rwx
└ tip: - datoteka, d direktorijum, l simbolički link, c znakovni uređaj, b blok uređaj, p pipe, s socket

Stvari koje zbunjuju

  • Broj linkova: koliko stavki direktorijuma pokazuje na inode. Za direktorijum je 2 plus broj poddirektorijuma, jer se .. svakog poddirektorijuma računa. Datoteka sa brojem 3 ima još dva hard linka negde.
  • Veličina direktorijuma: veličina njegove liste stavki (4096 na ext4), a ne zbir sadržaja. Za to koristite du -sh.
  • s, S, t, T u stringu dozvola su setuid, setgid i sticky bitovi; malo slovo znači da je postavljen i bit za izvršavanje ispod njega, veliko da nije (obično greška).
  • Dozvole simboličkih linkova su uvek lrwxrwxrwx i ignorišu se; važne su dozvole odredišta.
  • Vremena: ls prikazuje mtime (promenjen sadržaj). stat prikazuje i atime (poslednje čitanje, često isključeno sa noatime), ctime (promenjen inode: chmod, chown, rename) i vreme nastanka na sistemima datoteka koji ga čuvaju.

stat

stat file ispisuje sve što inode sadrži: mod u oktalnom i simboličkom obliku, uid/gid sa imenima, broj inode-a, uređaj, broj blokova (u jedinicama od 512 bajtova, pa retka (sparse) datoteka prikazuje manje blokova nego što bi njena veličina zahtevala) i četiri vremenske oznake. stat -c '%a %U %G %n' * ispisuje samo ono što tražite; stat -f umesto toga opisuje sistem datoteka.

Pitanja

Šta znači tačka na kraju dozvola?

Na datoteci je postavljen SELinux bezbednosni kontekst (viđa se na Fedori, RHEL-u, CentOS-u). ls -Z ga prikazuje. Znak + umesto toga znači da postoji lista kontrole pristupa (ACL); getfacl je prikazuje.

Zašto direktorijum ima broj linkova 2?

Njegova sopstvena stavka u roditelju plus njegova stavka „.“. Svaki poddirektorijum dodaje još jedan kroz svoje „..“. Dakle, direktorijum sa brojem linkova 7 ima pet poddirektorijuma.

Koja je razlika između mtime i ctime?

mtime se menja kad se promeni sadržaj; ctime se menja kad se promeni inode (sadržaj, dozvole, vlasnik, broj linkova). ctime ne možete postaviti sa touch, što ga čini korisnim za forenziku.

Kako da vidim skrivene datoteke i veličine u čitljivim jedinicama?

ls -lah: -a prikazuje dot-datoteke, -h ispisuje veličine kao K, M, G. Dodajte -t za sortiranje po vremenu i -r za obrnuti redosled.