Kuinka tahmea terä toimii?

SUID

tahmea bitti sovellettiin suoritettaviin ohjelmiin, jotka merkitsivät järjestelmän pitämään kuvan ohjelmasta muistiin, kun ohjelma on suoritettu loppuun.

Mutta en tiedä, mitä se on tallentanut muistiin. Ja miten näen ne tässä tapauksessa?

kommentit

Vastaa

Tämä on luultavasti yksi ikävimmistä asioistani, jota ihmiset sekoittavat koko ajan. SUID / GUID-bitti ja tahmea bitti ovat kaksi täysin erilaista asiaa.

Jos teet man chmod, voit lukea SUID: sta ja tahmea bitistä. -sivusivu on myös täällä .

tausta

ote

Kirjaimet rwxXst valitse tiedostotilan bitit vaikutusalaan kuuluvat käyttäjät: lue (r), kirjoita (w), suorita (tai etsi hakemistoja) (x), suorita / etsi vain, jos tiedosto on hakemisto tai sillä on jo suoritusoikeus jollekin käyttäjälle (X), aseta käyttäjän tai ryhmän tunnus suorituksiin , rajoitetun poiston lippu tai tahmea bitti ( t) .

SUID / GUID

Mikä yllä oleva man-sivu on Yritetään sanoa, että x-bitin sijainti rwxrwxrwx käyttäjän oktaalille (rwx: n ensimmäinen ryhmä) ja ryhmän oktaalille (rwx: n toinen ryhmä) voi ottaa ylimääräisen tilan, jossa x: stä tulee s. Kun näin tapahtuu, tämä tiedosto suoritettaessa (jos se on ohjelma eikä vain komentosarjakomentosarja) suoritetaan tiedoston omistajan tai ryhmän luvilla.

Joten jos tiedosto on rootin omistuksessa ja SUID-bitti on päällä, ohjelma toimii pääkäyttäjänä. Vaikka suoritat sen tavallisena käyttäjänä. Sama koskee myös GUID-bittiä.

ote

SETUID- JA SETGID-BITIT

chmod tyhjentää tavallisen tiedoston set-group-ID-bitin, jos tiedoston ryhmätunnus ei eivät täsmää käyttäjän todellisen ryhmätunnuksen tai jonkin käyttäjän lisäryhmätunnuksen kanssa, ellei käyttäjällä ole asianmukaisia oikeuksia. Lisärajoitukset voivat aiheuttaa MODE- tai RFILE-asetustunnuksen käyttäjän asetustunnuksen ja ryhmätunnuksen bittien ohittamisen. Tämä käyttäytyminen riippuu taustalla olevan chmod-järjestelmän kutsun käytännöstä ja toiminnallisuudesta. Jos olet epävarma, tarkista taustalla oleva järjestelmän käyttäytyminen.

chmod säilyttää hakemiston set-user-ID- ja set-group-ID-bitit, ellet nimenomaisesti toisin määrittele. Voit asettaa tai tyhjentää bitit symbolisella tilassa, kuten u + s ja gs, ja voit asettaa bitit (mutta et tyhjentää niitä) numerotilassa.

SUID / GUID -esimerkkejä

no suid / guid – vain bitit rwxr-xr-x asetetaan .

$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid & käyttäjän suoritettava bitti käytössä (pienet kirjaimet) – bitit rwsr-xrx on asetettu.

$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid käytössä & suoritettava bitti pois käytöstä (isot kirjaimet S) – bitit rwSr-xr-x on asetettu.

$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

guid & ryhmän suoritettava bitti käytössä (pienet kirjaimet) – bitit rwxr-sr-x on asetettu.

$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl 

opas käytössä & suoritettava bitti pois käytöstä (isot kirjaimet S) – bitit rwxr-Sr-x on asetettu.

$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl 

tahmea bitti

toista kättä merkitään nimellä t, kuten hakemiston /tmp kanssa:

$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp 

Tätä bittiä olisi pitänyt kutsua aina ”rajoitetuksi poistobitiksi”, koska se tarkoittaa sitä. Kun tämä tilabitti on käytössä, se tekee hakemistosta sellaisen, että käyttäjät voivat poistaa vain sen sisällä olevat tiedostot &, joiden omistajat he ovat.

ote

RAJOITETTU POISTOLIPPU TAI TIKKIPITKÄ

Rajoitettu poistolippu tai tahmea bitti on yksi bitti, jonka tulkinta riippuu tiedostotyypistä. Hakemistoissa se
estää käyttäjiä poistamasta tai nimeämästä tiedostoa hakemistossa, elleivät he omista tiedostoa tai hakemistoa. Tätä kutsutaan hakemiston rajoitetuksi poistolipuksi, ja se löytyy yleisesti maailman kirjoitettavista hakemistoista, kuten / tmp.Joissakin vanhemmissa järjestelmissä tavallisissa tiedostoissa bitti tallentaa ohjelman tekstikuvan vaihtolaitteeseen, joten se latautuu nopeammin suoritettaessa; tätä kutsutaan tahmeaksi bitiksi.

kommentit

  • Itse asiassa tahmeaa bittiä voitiin aiemmin soveltaa suoritettaviin tiedostoihin, mikä aiheutti niiden pysyvän vaihdossa sen jälkeen, kun ne oli ensin ladattu. Tämä voisi säästää paljon tarpeetonta levyä / verkkoa (NFS) ja suorittimen käyttöä ohjelmille, joita käytettiin paljon. Linux eikä useimmat (kaikki?) Unix-järjestelmät eivät kuitenkaan tue tätä enää (se poistettiin ytimestä). Se ' s " sticky ", koska suoritettava tiedosto juuttui vaihtoon. Lisäksi sitä käytettiin hakemistoihin kuvaat.
  • Oikeastaan " paljon käytetty tai erittäin suuri " olisi parempi kuvaus. Muista, että yliopistollani oli Netscape-verkkoselain nimellä " tahmea " HP-UX-tietokoneellaan jo vuonna 1995. Joten pieniä ohjelmia, joita käytettiin hyvin usein (esim. cron juoksi usein järjestelmän komentoja) ja suuret ohjelmat (esim. Netscape) olivat pääehdokkaita, jotka tehtiin " tahmeaksi ". Molemmissa tapauksissa niiden jatkuva lataaminen levyltä / NFS: ltä olisi tuhlaavaa.
  • Sticky-bit-ohjelmien oli tarkoitus pysyä RAM-muistissa, ei vaihdossa (kuvan lataaminen swap-tiedostosta ei ole ' t paljon nopeammin kuin lataamalla se tiedostojärjestelmän levyltä). Se oli tarkoitettu välttämättömille käyttöjärjestelmäkomennoille, kuten ls. Ilmeisesti vain pääkäyttäjä pystyi asettamaan tahmean bitin tiedostoon. Se muuttui vähemmän tärkeäksi sen jälkeen, kun virtuaalimuisti ja jaetut kirjastot otettiin käyttöön, ja varsinkin kun hakulaitteet tuli älykkäämpiä ja voivat dynaamisesti päättää, mitkä sivut pidetään asukkaina.
  • Ja koska tahmealla omaisuudella ei ollut mitään järkeä hakemistolle, sama bitti käyttöoikeusmaskista myöhemmin tulkittiin muuttamaan hakemistojen perinteistä tiedostojen luontisemantiikkaa.
  • @alexis: Alun perin tahmeat bittiohjelmat pidettiin vaihtotilassa. Tämä oli paljon nopeampi kuin lukeminen tiedostojärjestelmästä, koska swap-tiedostojen lukeminen oli vierekkäisiä sektoreita, joten ne voitiin lukea enimmäkseen asynkronisesti. Varhaisissa tiedostojärjestelmissä ei ollut sektorin " juoksupituuksia ", ja useimmat varhaiset tiedostojärjestelmäohjaimet lukivat sektorin kerrallaan, vaikka sektorit sattui olemaan peräkkäinen. Tulos PDP-40: llä oli tahmeita ohjelmia näytti latautuvan heti, kun ei-tahmeat ohjelmat ottivat tavallisen toisen tai kaksi. Luulen, että meillä oli vain ed tahmea.

Vastaus

”Järjestelmän merkitseviin suoritettaviin ohjelmiin sovellettu tahmea bitti, joka pitää kuvan ohjelmasta muistissa, kun ohjelma on suoritettu.”

Luulen, että tiedot ovat melko vanhentuneita, nykyään useimmat modernit Unixit jättävät tämän huomiotta. Linuxissa tahmea bitti koskee vain hakemistoja. Katso täältä ja varsin informatiivinen Wikipedia-artikkeli .

Joka tapauksessa siinä vanhassa käyttäytymisessä kuva (vain ”koodi”, ei tiedot) pidettiin vain virtuaalimuistissa – normaalisti vaihdettuna, ei todellisessa muistissa, jotta se suoritettaisiin nopeammin seuraavalla kerralla.

Vastaa

Mitä ovat tahmeat bitit?

Tahmea bitti on asetettu käyttöoikeusbitti hakemistoon, joka sallii vain tiedoston omistajan alueella t hat-hakemiston tai pääkäyttäjän poistaa tai nimetä tiedosto uudelleen. Kenelläkään muulla käyttäjällä ei ole tarvittavia oikeuksia toisen käyttäjän luoman tiedoston poistamiseen.

Tämä on turvatoimi välttääksesi kriittisten kansioiden ja niiden sisällön (alihakemistot ja tiedostot) poistamisen, vaikka muilla käyttäjillä on täydet käyttöoikeudet.

Kommentit

  • Että ' ei ole oikein: fi.wikipedia.org/wiki/Sticky_bit
  • @AB Minusta se näyttää melko tarkalta, melkein siinä määrin, että muotoilet mainitsemasi Wikpedia-artikkelin alun. Mikä ' siinä vikaa?
  • Sanon, että vastaus on puutteellinen. " Tahmea " tarkoittaa myös, että suoritettava tiedosto pidettäisiin vaihtotilassa, jotta se toimisi nopeammin. Nyt tämä on muinaista historiaa, mutta vanhemmissa tiedostojärjestelmissä ajurit käyttivät lukemaan yksi sektori kerrallaan, vaikka sektorit sattuisivatkin olemaan peräkkäisiä. Tämä teki tahmattomista ajettavista tiedostoista hitaita, tahmeudella oli tuolloin paljon järkeä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *