Come funziona lo sticky bit?

SUID

Il bit appiccicoso applicato ai programmi eseguibili che contrassegnano il sistema per mantenere unimmagine del programma in memoria dopo che il programma è terminato.

Ma non so che cosa sia immagazzinato in memoria. E come posso vederli, in questo caso.?

Commenti

Risposta

Questa è probabilmente una delle cose più fastidiose che le persone rovinano tutto il tempo. Il bit SUID / GUID e lo sticky-bit sono 2 cose completamente diverse.

Se fai un man chmod puoi leggere informazioni su SUID e sticky-bit. Anche la pagina man è disponibile qui .

background

estratto

Le lettere rwxXst selezionano i bit della modalità file per utenti interessati: lettura (r), scrittura (w), esecuzione (o ricerca directory) (x), esecuzione / ricerca solo se il file è una directory o dispone già dellautorizzazione di esecuzione per alcuni utenti (X), imposta lID utente o gruppo sulle esecuzioni , flag di eliminazione limitata o sticky bit ( t) .

SUID / GUID

Cosè la pagina man sopra cercando di dire è che la posizione che il bit x assume in rwxrwxrwx per lutente ottale (1 ° gruppo di rwx) e il gruppo ottale (2 ° gruppo di rwx) possono assumere uno stato aggiuntivo in cui x diventa una s. Quando si verifica questo file quando viene eseguito (se “è un programma e non solo uno script di shell) verrà eseguito con i permessi del proprietario o del gruppo del file.

Quindi se il file è di proprietà di root e il bit SUID è attivato, il programma verrà eseguito come root. Anche se lo si esegue come utente normale. La stessa cosa vale per il bit GUID.

estratto

SETUID E SETGID BITS

chmod cancella il bit set-group-ID di un file normale se lID gruppo del file lo fa non corrisponde allID gruppo effettivo dellutente o a uno degli ID gruppo supplementari dellutente, a meno che lutente non disponga dei privilegi appropriati. Ulteriori restrizioni possono far sì che i bit set-user-ID e set-group-ID di MODE o RFILE vengano ignorati. Questo comportamento dipende dalla politica e dalla funzionalità della chiamata di sistema chmod sottostante. In caso di dubbio, controlla il comportamento del sistema sottostante.

chmod preserva i bit set-user-ID e set-group-ID di una directory a meno che tu non specifichi esplicitamente diversamente. Puoi impostare o cancellare i bit con simbolico modalità come u + se gs, e puoi impostare (ma non cancellare) i bit con una modalità numerica.

Esempi SUID / GUID

no suid / guid – sono impostati solo i bit rwxr-xr-x .

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

suid & user “bit eseguibile abilitato (lettere minuscole) – i bit rwsr-xrx sono impostati.

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

suid attivato & bit eseguibile disattivato (S maiuscola) – i bit rwSr-xr-x sono impostati.

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

guid & bit eseguibile del gruppo ” abilitato (lettere minuscole) – i bit rwxr-sr-x sono impostati.

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

guid abilitato & bit eseguibile disabilitato (S maiuscola) – i bit rwxr-Sr-x sono impostati.

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

sticky bit

Il bit sticky sul laltra mano è indicata come t, ad esempio con la directory /tmp:

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

Questo bit avrebbe dovuto essere sempre chiamato “bit di cancellazione limitato” dato che “è ciò che realmente connota. Quando questo bit di modalità è abilitato, crea una directory in modo che gli utenti possano eliminare solo i file & directory al suo interno di cui sono proprietari.

estratto

BANDIERA DI CANCELLAZIONE LIMITATA O BIT STICKY

Il flag di cancellazione limitata o sticky bit è un singolo linterpretazione dipende dal tipo di file. Per le directory,
impedisce agli utenti non privilegiati di rimuovere o rinominare un file nella directory a meno che non siano i proprietari del file o della directory; questo è chiamato flag di cancellazione limitata per la directory, e si trova comunemente su directory scrivibili in tutto il mondo come / tmp.Per i file normali su alcuni sistemi meno recenti, il bit salva limmagine di testo del programma sul dispositivo di scambio in modo che venga caricato più rapidamente quando viene eseguito; questo è chiamato sticky bit.

Commenti

  • In realtà lo sticky-bit poteva essere precedentemente applicato agli eseguibili, il che faceva sì che questi rimanessero in swap dopo il primo caricamento. Questo potrebbe salvare un sacco di disco / rete (NFS) e utilizzo della CPU non necessari per i programmi che erano molto utilizzati. Tuttavia, né Linux né la maggior parte (tutti?) i sistemi Unix lo supportano più (è stato rimosso dal kernel). ' s " sticky ", perché leseguibile si bloccava nello scambio. Inoltre, veniva utilizzato per le directory come descrivi.
  • In realtà " molto usato o molto grande " sarebbe una descrizione migliore. Ricorda che il mio college aveva il browser web Netscape come " appiccicoso " sul loro computer HP-UX nel 1995. Quindi piccoli programmi che venivano usati molto spesso (es. comandi di sistema eseguiti frequentemente da cron) e programmi di grandi dimensioni (es. Netscape) erano i principali candidati da rendere " sticky ". In entrambi i casi, ricaricarli costantemente da disco / NFS sarebbe uno spreco.
  • I programmi sticky-bit dovevano rimanere residenti nella RAM, non in swap (caricare unimmagine da un file di scambio non è ' molto più veloce che caricarlo da un disco del filesystem). Era concepito per i comandi essenziali a livello di sistema operativo come ls. Ovviamente, solo il superutente può impostare lo sticky bit su un file. È diventato meno importante dopo lintroduzione della memoria virtuale e delle librerie condivise, e soprattutto quando i cercapersone sono diventati più intelligenti e possono decidere dinamicamente quali pagine mantenere residenti.
  • E poiché la proprietà sticky non aveva senso per una directory, lo stesso una parte della maschera dei permessi è stata più tardi interpretata per modificare la semantica tradizionale di creazione di file per le directory.
  • @alexis: originariamente, i programmi sticky bit erano tenuti nello spazio di swap. Questo era molto più veloce della lettura dal filesystem perché la lettura delle immagini dei file di scambio erano settori contigui e quindi potevano essere lette per lo più in modo asincrono. Con i primi filesystem, non cerano " lunghezze di esecuzione " e la maggior parte dei primi driver del filesystem legge un settore alla volta anche se i settori è successo essere consecutivi. Il risultato su un PDP-40 era che i programmi appiccicosi sembravano caricarsi istantaneamente mentre i programmi non appiccicosi impiegavano il solito secondo o due. Penso che avessimo solo ed appiccicoso.

Risposta

“Il bit sticky applicato ai programmi eseguibili che segnalano il sistema per mantenere unimmagine del programma in memoria al termine dellesecuzione del programma.”

Penso che siano informazioni abbastanza obsolete, oggi la maggior parte degli Unix moderni lo ignora. In Linux, lo sticky bit è rilevante solo per le directory. Vedi qui e il piuttosto informativo articolo di Wikipedia .

Comunque, in quel vecchio comportamento limmagine (solo il “codice”, non i dati) erano conservati solo nella memoria virtuale, scambiati normalmente, non nella memoria reale, in modo da eseguirlo più velocemente la prossima volta.

Answer

Cosa sono i bit appiccicosi?

Uno sticky bit è un bit di autorizzazione impostato su una directory che consente solo al proprietario del file allinterno di t hat o lutente root per eliminare o rinominare il file. Nessun altro utente ha i privilegi necessari per eliminare il file creato da un altro utente.

Questa è una misura di sicurezza per evitare leliminazione di cartelle critiche e del loro contenuto (sottodirectory e file), sebbene altri utenti abbiano autorizzazioni complete.

Commenti

  • Questo ' non è corretto: en.wikipedia.org/wiki/Sticky_bit
  • @AB Mi sembra abbastanza accurato, quasi al punto da parafrasare linizio dellarticolo di Wikpedia che citi. Cosa ' cè di sbagliato?
  • Direi che la risposta è incompleta. " Sticky " denota anche che leseguibile verrà mantenuto nello spazio di swap per farlo funzionare più velocemente. Ora, questa è storia antica, ma nei vecchi file system i driver leggevano un settore alla volta anche se i settori erano consecutivi. Ciò rendeva gli eseguibili non appiccicosi lenti, la viscosità aveva molto senso in quel momento.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *