stickybit-suid-sgid-permessi-speciali-su-file-directory | Linuxiano.it
Privacy Policy

stickybit-suid-sgid-permessi-speciali-su-file-directory

stickybit-suid-sgid-permessi-speciali-su-file-directory

In questo articolo, spieghierò come permessi speciali funzionano su file e directory denominati come stickybit-suid-sgid

Il stickybit-suid-sgid funziona solo sulle directory. Se un utente desidera creare o eliminare un file / directory, ha bisogno dell’autorizzazione alla scrittura su tale directory. Il permesso di scrittura offre a un utente il privilegio di creare un file e il privilegio di rimuoverlo.

La directory / tmp è la directory per i file temporanei. Questa directory ha tutti i diritti su tutti e tre i livelli perché tutti gli utenti devono creare / cancellare i loro file temporanei. Gli utenti hanno il permesso sia di scrittura che di cancellazione su queste directory. Le autorizzazioni di quel file non hanno alcun effetto sulla cancellazione.

Sticky bit

Nei sistemi operativi Unix e Unix-like, ed in generale nei sistemi POSIX, lo sticky bit è un permesso speciale che può essere associato ad un file (tipicamente ai file eseguibili) o ad una directory.

Uso

Al giorno d’oggi lo sticky bit viene comunemente usato per le directory destinate a contenere file temporanei di più utenti: se impostato su una directory esso indica che i file e subdirectory in essa contenuti possono essere cancellati o rinominati solo dal proprietario, o dal proprietario della directory che lo contiene o dall’utente root, anche se si dispongono di tutti gli altri permessi di scrittura necessari. Questo permesso viene spesso impostato sulle directory /tmp e /var/tmp per evitare che utenti ordinari cancellino o spostino i file temporanei appartenenti agli altri utenti, pur consentendo a chiunque di creare nuovi file e directory. Questo comportamento venne introdotto nel 4.3BSD (1986) ed è tuttora presente in molti sistemi Unix.

Su Solaris, a partire da SunOS 2.5, lo sticky bit può essere impostato dall’amministratore (root) su file non eseguibili per indicare al kernel di non mantenere in cache i dati di tali file. L’uso è tipico con i file di swap, per evitare che le operazioni di accesso a tali file finiscano con l’occupare la cache a scapito di altri dati più importanti. Questo comportamento viene occasionalmente sfruttato anche per effettuare dei test che misurano le prestazioni del sistema (benchmark).

Setuid e setgid

Nei sistemi operativi Unix e Unix-like, setuid (abbreviazione di set user id, assegna l’identificativo utente) e setgid (abbreviazione di set group id, assegna l’identificativo di gruppo) sono dei permessi speciali attribuibili a file e directory che modificano il comportamento del sistema nei loro confronti.

Ma con il bit sticky impostato su una directory, chiunque può creare un file / directory, ma può cancellare solo i propri file. I file di proprietà di altri utenti non possono essere cancellati.

stickybit – visualizzare e impostare

Da notare il tag t aggiunto alla directory / tmp e significa che il bit è impostato per questa directory:

Terminale

ls -ld /tmp/

In Linux il bit sticky può essere impostato con il comando chmod. Puoi usare il tag + t per aggiungere e -t tag per eliminare il bit adesivo:

Terminale

chmod o-t dir1
ls -l

Risultato

totale 156

drwxr-xr-x 2 daniel daniel 4096 Jun 8 09:20 dir1Alternativa:

chmod 1777 dir1/
ls -l

Nota: nei SO con sistema operativo Unix, il Sticky bit ha uno scopo diversoche vedremo succesivamente.

Cosa è SUID Bit e come impostarlo

Quando viene eseguito un file eseguibile, viene eseguito con la proprietà dell’utente che lo ha eseguito. Significa che quando l’utente esegue il comando ls, il processo corrispondente verrà eseguito sotto la proprietà dell’ stutente. Il bit SUID, noto anche come bit Set User ID, sovrascrive questo comportamento. Se il bit SUID è impostato su un programma, quel programma verrà eseguito come proprietario di quel file, indipendentemente da chi lo sta eseguendo.

Il comando passwd in Linux ha impostato il bit SUID:

Terminale

ls -l /usr/bin/passwd

Questo può essere visto nel terzo campo di permessi. La ‘s’ al posto della ‘x’ indica che il bit SUID è impostato. Con il bit SUID impostato, quando un utente normale (ad esempio uno studente) esegue il comando passwd, il comando viene eseguito con la proprietà di “root” e non come studente, poiché root è il proprietario di questo file. Questo comportamento è necessario perché le password sono memorizzate nel file / etc / shadow, che non dispone di autorizzazione per il gruppo o altro livello.

Terminale

ls -l /etc/shadow

Dovrai comprendere che per tutti gli utenti non è possibile fornire i permessi di lettura o scrittura su questo file per motivi di sicurezza; in caso contrario, leggeranno / modificheranno le password di altri utenti. Quindi questo causa un problema che se gli utenti non hanno il permesso su questo file, come cambieranno le loro password? Bit SUID risolverà il problema. Il comando passwd ha il bit SUID impostato, quindi quando gli utenti normali eseguono questo comando, lo eseguono con la proprietà di root, ovvero il proprietario del comando passwd.

Come impostare e rimuovere il bit SUID

Notiamo che il bit SUID funziona solo su file. Per impostare il bit SUID su un file, utilizzare il comando chmod:

Terminale

chmod u+s ciao.sh
ls -l

Risultato

totale 160

drwsr-xr-x 2 daniel daniel 4096 Jun 8 09:37 ciao.sh

Possiamo anche utilizzare il metodo numerico per modificare le autorizzazioni. Supponiamo che le normali autorizzazioni per un file siano 744, quindi con il bit SUID impostato, queste diventeranno 4744. Il bit SUID ha valore 4:

Terminale

ls -l

Risultato

drwsr-xr-x 2 daniel daniel 4096 Jun 8 09:37 ciao.sh

Terminale

chmod 4744 ciao.sh
ls -l

Risultato

drwsr–r– 2 daniel daniel 4096 Jun 8 09:37 ciao.sh

Come funziona SGID Bit su file e directory

A differenza del bit SUID, il bit SGID funziona sia su file che su directory, ma ha un significato diverso in entrambi i casi.

Sui file:

File ha un significato simile al bit SUID, cioè quando un utente esegue un file con il bit SGID impostato su di esso, verrà sempre eseguito con la proprietà del gruppo di quel file, indipendentemente da chi lo sta eseguendo. Ad esempio, il file / sbin / netreport ha il bit SGID impostato, che può essere visto nelle “s” anziché “x” nelle autorizzazioni di gruppo:

Terminale

ls -l /sbin/netreport

Questo file ha la proprietà di gruppo del gruppo radice. Quindi, quando un utente (ad esempio uno studente) lo esegue, il processo corrispondente non avrà la proprietà di gruppo dello studente, ma quella del gruppo radice.

Sulle directory

Ora parliamo di SGID sulle directory. Lo SGID nelle directory viene utilizzato per creare directory collaborative. Per comprendere il bit SGID nelle directory, considerare il seguente scenario:

Supponiamo che tre utenti jack, jones e jenny stiano lavorando insieme su qualche progetto. Tutti appartengono a un gruppo chiamato javaproject. Per il corso del progetto, hanno bisogno di condividere tutti i file relativi al progetto. Tutti loro devono essere in grado di vedere il file dell’altro. Questo può essere fatto semplicemente fornendo il permesso di lettura a livello di gruppo. Inoltre, supponiamo che la directory utilizzata per il progetto sia “/ javaproject”.

Qui, si pone il problema che quando viene creato un file, esso appartiene al gruppo principale dell’utente che ha creato il file. Quindi, quando diversi utenti creano i loro file in questa directory, quei file non avranno la proprietà di gruppo del gruppo javaproject.

Quello che facciamo per il nostro problema è che impostiamo il gruppo di / directory javaproject come gruppo javaproject e impostiamo il bit SGID impostato su di esso. Quando il bit SGID è impostato su una directory, tutti i file e la directory creati al suo interno hanno la proprietà di gruppo del gruppo associato a tale directory. Significa che dopo aver impostato il bit SGID nella directory / javaproject, tutti i file e le directory creati in questa directory avranno la proprietà del gruppo “javaproject”. Inoltre, questo comportamento è ricorsivo, cioè le directory create in questa directory avranno anche il bit SGID impostato. Le autorizzazioni per la nuova directory saranno uguali a quelle della directory / javaproject.

Il bit SGID può essere impostato con il comando chmod come segue:

Terminale

ls -ld /javaproject
chmod g+s /javaproject
ls -ld /javaproject

Ora, quando l’utente Mario crea un file in questa directory, viene creato sotto la proprietà del gruppo javaproject:

Terminale

touch /javaproject/jones1.txt
mkdir /javaproject/jones1dir
ls -l /javaproject/

Il valore numerico corrispondente al bit SGID è 2. Quindi per aggiungere il bit SGID numericamente, utilizzare il seguente comando:

Terminale

ls -ld /shared/
chmod 2775 /shared/
ls -ld /shared/

Grazie! per l’utilizzo della Guida di Linuxiano.

Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Iscriviti al sito

Il tuo nome (richiesto)

La tua email (richiesto)

Oggetto

Il tuo messaggio


Ho letto

l’informativa Privacy

e autorizzo il trattamento dei miei dati personali per le finalità ivi indicate.

Risolvi il reCAPTCHA per dimostrare che non sei un robot:
[recaptcha]

clicca qui per tornare a Linuxiano