Qual è la lettera "t" nell'output di "ls -ld / tmp"?


94

Quando si esegue il comando  ls -ld /tmp, l'output sarebbe:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Quindi ho due domande principali:

  • Qual è la lettera tdopo le autorizzazioni?
  • Per quanto ne so, /tmpviene utilizzato per creare file temporanei relativi a diversi utenti nel sistema, quindi come mai ha l'autorizzazione rwxrwxrwx(777)?

Questo sembra sbagliato per me. Per favore, ho bisogno del tuo aiuto per capire cosa sta succedendo qui.


8
Leggi l' articolo di Wikipedia , è piuttosto meglio delle risposte qui.
Gilles,


OK Perché quindi, quando installo un aggiornamento o un nuovo pacchetto rpm da / tmp, il bit sticky viene rimosso?

Risposte:


112

Allora, qual è la parte appiccicosa?

Un bit permanente è un bit di autorizzazione impostato su una directory che consente solo al proprietario del file all'interno di quella directory, al proprietario della directory o all'utente root di eliminare o rinominare il file. Nessun altro utente dispone dei privilegi necessari per eliminare il file creato da un altro utente.

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

Perché /tmpha la parte tadesiva?

La /tmpdirectory può essere utilizzata da diversi utenti Linux per creare file temporanei. Ora, cosa succede se un utente elimina / rinomina un file creato da un altro utente in questa directory?

Bene, per evitare questo tipo di problemi, viene utilizzato il concetto di sticky bit. Quindi per quello a 777è dato ma preservare la parte adesiva non è una cattiva idea.

Come posso impostare il bit sticky per una directory?

Metterò un po 'appiccicoso su una directory chiamata testsul mio desktop.

Modo simbolico ( trappresenta il bit appiccicoso):

chmod o+t ~/Desktop/test

o

chmod +t ~/Desktop/test

Modo numerico / ottale (1, bit di bit appiccicoso come valore 1 nella prima posizione)

chmod 1757 ~/Desktop/test

Ora proviamo i risultati:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Per eliminare / rimuovere un bit appiccicoso

chmod o-t ~/Desktop/test

Ora proviamo i risultati:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Fonte: "Cos'è un Bit appiccicoso e come impostarlo in Linux?" In The Linux Juggernaut


13
Questo utilizzo del bit appiccicoso si applica solo alle directory, non ai file. In un lontano passato, il suo significato sui file eseguibili era quello di salvare il segmento di testo del programma da scambiare invece di scartarlo in modo che eseguirlo di nuovo sarebbe più veloce, ma al giorno d'oggi non ha alcun significato sui file regolari.
psusi,

qual era il segmento di testo di un programma e come lo avrebbe reso più veloce?
BluePython

@BluePython Il segmento 'text' di un file eseguibile è la parte che include tutto il codice macchina: il bit eseguibile effettivo. Altri segmenti comuni sono "dati" per dati statici e "bss" per dati che sono tutti pari a zero (e quindi non è necessario memorizzarli nell'eseguibile).
Miles Rout,

1
c'è qualche differenza tra 't' e 'T' per il permesso della directory ?? @ psusi
Afshin

1
@Afshin: poiché tnasconde l' xindicazione se tutti gli utenti possono eseguire il file / directory, abbiamo bisogno di un altro modo per indicarlo. La solita cosa è che tutti possono eseguirlo, nel qual caso si ottiene un normale t(anziché un x). In caso contrario, otterrai una maiuscola T(anziché una -). Fonte: Wikipedia
Toby Bartels,

25

Un bit Sticky è un bit di autorizzazione impostato su un file o una directory che consente solo al proprietario del file / directory o all'utente root di eliminare o rinominare il file. A nessun altro utente vengono concessi i privilegi per eliminare il file creato da un altro utente.

A volte capita che ti serva una directory Linux che può essere utilizzata da tutti gli utenti del sistema Linux per creare file. Gli utenti possono creare, eliminare o rinominare i file in base alla loro convenienza in questa directory.

Ora, cosa succede se un utente elimina (o rinomina) accidentalmente o deliberatamente un file creato da un altro utente in questa directory?

Bene, per evitare questo tipo di problemi, viene utilizzato il concetto di sticky bit. Poiché / tmp viene utilizzato per questo scopo. Quindi, per evitare lo scenario sopra, / tmp usa un po 'di sticky.

Per esempio:

mkdir demo
chmod 777 demo

Ho anche creato due file con utenti diversi in questa cartella con l'autorizzazione 777.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

Ora attiva la parte adesiva su questo

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Ora cosa succede se un utente (abhi) vuole rinominare il secondo utente (anshu)

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

L'origine della parte adesiva

Su Linux, la parte adesiva ha solo l'uso descritto sopra, nelle directory. Storicamente, è stato usato per qualcosa di completamente diverso nei file normali, ed è qui che deriva il nome.

Quando viene eseguito un programma, ci vuole tempo per caricare il programma in memoria prima che l'utente possa effettivamente iniziare ad usarlo. Se un programma, ad esempio un editor viene utilizzato frequentemente dagli utenti, il ritardo di avvio era un sovraccarico allora.

Per migliorare questo ritardo, è stata introdotta la parte adesiva. Il sistema operativo ha verificato che se il bit appiccicoso su un eseguibile è ON, il segmento di testo dell'eseguibile è stato mantenuto nello spazio di scambio. Ciò ha reso semplice il caricamento dell'eseguibile nella RAM quando il programma è stato eseguito di nuovo, riducendo così al minimo il ritardo.

I sistemi moderni come Linux gestiscono automaticamente la loro cache di file eseguibili e altri file e non hanno bisogno di qualcosa di appiccicoso.

Fonte: "Il concetto di Linux Sticky Bit spiegato con esempi" in The Geek Stuff


2

Un stickybit è un metodo di soluzione alternativa per le directory condivise che non devono essere eliminate accidentalmente. Quando una directory ha un stickybit, solo il proprietario o il root possono eliminarlo, anche se ogni utente può ottenere tutte le altre autorizzazioni.

/tmpè la directory più condivisa tra processi e utenti e per questo contiene stickybit per garantire che nessun utente possa eliminare la directory, anche se lo è l'autorizzazione 777, e deve essere tale da consentire agli utenti e ai processi di utilizzare la directory senza conflitto di autorizzazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.