SUID
De sticky bit toegepast op uitvoerbare programmas die het systeem markeren om een afbeelding van het programma te behouden in het geheugen nadat het programma is afgelopen.
Maar ik weet niet wat het in het geheugen is opgeslagen. En hoe ik ze in dit geval kan zien?
Reacties
- Hier is een goede tutorial met uitgewerkte voorbeelden en uitleg. De sleutel om dit te begrijpen is het betrokken octale systeem. Linux Sticky Bits-zelfstudie met uitgewerkte voorbeelden .
Antwoord
Dit is waarschijnlijk een van mijn meest vervelende dingen die mensen de hele tijd verknoeien. De SUID / GUID-bit en de sticky-bit zijn 2 totaal verschillende dingen.
Als je een man chmod
doet, kun je lezen over de SUID en sticky-bits. De man-pagina is hier ook beschikbaar .
achtergrond
uittreksel
De letters rwxXst selecteren bits voor bestandsmodus voor de getroffen gebruikers: lees (r), schrijf (w), voer uit (of zoek naar mappen) (x), voer alleen uit / zoek alleen als het bestand een map is of al uitvoerrechten heeft voor een gebruiker (X), stel gebruikers- of groeps-ID in voor uitvoering (en) , vlag voor beperkte verwijdering of vastgeplakt bit ( t) .
SUID / GUID
Wat de bovenstaande manpage is proberen te zeggen is dat de positie die het x-bit inneemt in de rwxrwxrwx voor de gebruiker octaal (1e groep van rwx) en de groep octaal (2e groep van rwx) een extra toestand kan aannemen waar de x een s wordt. Wanneer dit gebeurt, zal dit bestand wanneer het wordt uitgevoerd (als het een programma is en niet alleen een shellscript) draaien met de toestemming van de eigenaar of de groep van het bestand.
Dus als het bestand eigendom is van root en de SUID-bit is ingeschakeld, zal het programma als root draaien. Zelfs als u het uitvoert als een gewone gebruiker. Hetzelfde geldt voor de GUID-bit.
fragment
SETUID EN SETGID BITS
chmod wist de set-group-ID bit van een gewoon bestand als de groeps-ID van het bestand komt niet overeen met de effectieve groeps-ID van de gebruiker of een van de aanvullende groeps-IDs van de gebruiker, tenzij de gebruiker de juiste rechten heeft. Extra beperkingen kunnen ertoe leiden dat de set-user-ID en set-group-ID bits van MODE of RFILE worden genegeerd. Dit gedrag is afhankelijk van het beleid en de functionaliteit van de onderliggende chmod-systeemaanroep. Controleer bij twijfel het onderliggende systeemgedrag.
chmod bewaart de set-user-ID en set-group-ID bits van een directory, tenzij u expliciet anders specificeert. U kunt de bits instellen of wissen met symbolische modi zoals u + s en gs, en u kunt de bits instellen (maar niet wissen) met een numerieke modus.
SUID / GUID-voorbeelden
no suid / guid – alleen de bits rwxr-xr-x zijn ingesteld .
$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid & uitvoerbare bit van de gebruiker ingeschakeld (kleine letters) – de bits rwsr-xrx zijn ingesteld.
$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid ingeschakeld & uitvoerbaar bit uitgeschakeld (hoofdletter S) – de bits rwSr-xr-x zijn ingesteld.
$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
guid & group “s uitvoerbare bit enabled (kleine letters) – de bits rwxr-sr-x zijn ingesteld.
$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
guid ingeschakeld & uitvoerbaar bit uitgeschakeld (hoofdletter S) – de bits rwxr-Sr-x zijn ingesteld.
$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
sticky bit
De sticky bit op de andere kant wordt aangeduid als t
, zoals met de /tmp
directory:
$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
Dit bit had altijd de “beperkte verwijderingsbit” moeten heten, gezien dat “is wat het werkelijk inhoudt. Wanneer deze modusbit is ingeschakeld, maakt het een map zodanig dat gebruikers alleen bestanden & mappen erin kunnen verwijderen waarvan ze de eigenaren zijn.
uittreksel
BEPERKTE VERWIJDERINGSVLAG OF STICKY BIT
De beperkte verwijderingsvlag of plakkerige bit is een enkele bit, waarvan interpretatie hangt af van het bestandstype. Voor mappen
voorkomt dat onbevoegde gebruikers een bestand in de map verwijderen of hernoemen, tenzij ze eigenaar zijn van het bestand of de map; dit wordt de beperkte verwijderingsvlag voor de map genoemd, en wordt vaak aangetroffen op wereldwijd beschrijfbare mappen zoals / tmp.Voor gewone bestanden op sommige oudere systemen, slaat de bit de tekstafbeelding van het programma op het swap-apparaat op, zodat het sneller wordt geladen wanneer het wordt uitgevoerd; dit wordt de sticky bit genoemd.
Opmerkingen
- Eigenlijk kon de sticky-bit eerder worden toegepast op uitvoerbare bestanden, waardoor deze in de swap bleven staan nadat ze voor het eerst waren geladen. veel onnodig schijf- / netwerk- (NFS) en CPU-gebruik voor programmas die veel werden gebruikt. Noch Linux, noch de meeste (alle?) Unix-systemen ondersteunen dit echter nog langer (het is verwijderd uit de kernel). Het ' s " sticky ", omdat het uitvoerbare bestand vastzit in swap. Bovendien werd het gebruikt voor mappen als je beschrijft.
- Eigenlijk zou " veel gebruikt of erg groot " een betere beschrijving zijn. Onthoud dat mijn universiteit de Netscape-webbrowser als " plakkerig " op hun HP-UX-computer in 1995. Dus kleine programmas die heel vaak werden gebruikt (bijv. systeemcommandos die vaak door cron werden uitgevoerd) en grote programmas (bijv. Netscape) waren de belangrijkste kandidaten om " plakkerig " te maken. In beide gevallen zou het constant herladen van schijf / NFS verspilling zijn.
- Sticky-bit-programmas waren bedoeld om in het RAM-geheugen te blijven, niet in swap (het laden van een afbeelding uit een swapbestand is niet ' t dat veel sneller is dan het laden vanaf een bestandssysteemschijf). Het was bedoeld voor essentiële commandos op OS-niveau, zoals
ls
. Het is duidelijk dat alleen de superuser het plakkerige bit op een bestand kan instellen. Het werd minder belangrijk nadat virtueel geheugen en gedeelde bibliotheken werden geïntroduceerd, en vooral omdat semafoons slimmer werden en dynamisch kunnen beslissen welke paginas ze resident moeten houden. - En aangezien de sticky-eigenschap geen zin had voor een directory, hetzelfde een deel van het toestemmingsmasker werd later geïnterpreteerd om de traditionele semantiek voor het maken van bestanden voor mappen te wijzigen.
- @alexis: Oorspronkelijk werden plakkerige bitprogrammas in swapruimte bewaard. Dit was veel sneller dan het lezen van het bestandssysteem, omdat het lezen van swap-bestandsafbeeldingen aaneengesloten sectoren waren en dus grotendeels asynchroon konden worden gelezen. Met de vroege bestandssystemen waren er geen sector " runlengtes " en de meeste vroege bestandssysteemstuurprogrammas lazen één sector tegelijk, zelfs als de sectoren gebeurde opeenvolgend. Het resultaat op een PDP-40 was dat plakkerige programmas onmiddellijk leken te laden, terwijl niet-plakkerige programmas de gebruikelijke seconden of twee duurden. Ik denk dat we alleen
ed
plakkerig hadden.
Antwoord
“De sticky bit toegepast op uitvoerbare programmas die het systeem markeren om een afbeelding van het programma in het geheugen te houden nadat het programma is uitgevoerd.”
Ik denk dat “tamelijk verouderde informatie is, tegenwoordig negeren de meeste moderne Unixen dat. In Linux is de plakkerige bit alleen relevant voor mappen. Zie hier en het vrij informatieve Wikipedia-artikel .
Hoe dan ook, in dat oude gedrag zou de afbeelding (alleen de “code”, niet de gegevens) werd alleen in virtueel geheugen bewaard -normaal verwisseld, niet in echt geheugen, om het de volgende keer sneller te laten werken.
Answer
Wat zijn sticky bits?
Een sticky bit is een toestemmingsbit dat is ingesteld op een map waarin alleen de eigenaar van het bestand binnen t hat directory of de root-gebruiker om het bestand te verwijderen of hernoemen. Geen enkele andere gebruiker heeft de benodigde rechten om het bestand te verwijderen dat door een andere gebruiker is gemaakt.
Dit is een veiligheidsmaatregel om te voorkomen dat essentiële mappen en hun inhoud (submappen en bestanden) worden verwijderd, hoewel andere gebruikers dat wel hebben gedaan. volledige rechten.
Opmerkingen
- Dat ' s niet juist: en.wikipedia.org/wiki/Sticky_bit
- @AB Het lijkt me vrij nauwkeurig, bijna tot het punt dat het het begin van het Wikpedia-artikel dat je citeert, parafraseert. Wat is ' er mis mee?
- Ik zou zeggen dat het antwoord onvolledig is. " Sticky " geeft ook aan dat het uitvoerbare bestand in de swap-ruimte wordt bewaard om het sneller te laten werken. Dit is een oude geschiedenis, maar in oudere bestandssystemen werden stuurprogrammas gebruikt om één sector tegelijk te lezen, zelfs als de sectoren toevallig opeenvolgend waren. Dit maakte niet-plakkerige uitvoerbare bestanden traag, plakkerigheid was op dat moment heel logisch.