Cosa significa GID?


14

Cosa significa effettivamente GID?

L'ho cercato su Google e questo è quello che ha detto linux.about.com :

Numero di identificazione del gruppo per il processo. Vengono indicati i numeri di gruppo validi /etc/groupe nel campo GID del /etc/passwdfile. Quando viene avviato un processo, il suo GID è impostato sul GID del processo principale.

  • Ma cosa significa?

Le autorizzazioni che ho per la mia cartella sono attualmente disponibili 0755

Capisco se imposto l'UID per il proprietario sarà 4755

E se imposto il GID del gruppo lo sarà 2755

Se imposto il Sticky Bit per gli altri lo sarà 1755

  • È anche importante impostare tali autorizzazioni?

Risposte:


27

Ogni processo in un sistema UNIX-like, proprio come ogni file, ha un proprietario (l'utente, sia reale o un sistema di "pseudo-utente", come ad esempio daemon, bin, man, ecc) e proprietario di un gruppo. Il proprietario del gruppo per i file di un utente è in genere il gruppo principale dell'utente e, in modo simile, tutti i processi avviati sono in genere di proprietà dell'ID utente e dell'ID del gruppo primario.

A volte, tuttavia, è necessario disporre di privilegi elevati per eseguire determinati comandi, ma non è desiderabile fornire diritti amministrativi completi. Ad esempio, il passwdcomando deve accedere al file della password shadow del sistema, in modo che possa aggiornare la password. Ovviamente, non vuoi dare a tutti gli utenti i privilegi di root, solo per poter reimpostare la loro password - questo indubbiamente porterebbe al caos! Invece, deve esserci un altro modo per concedere temporaneamente privilegi elevati agli utenti per eseguire determinate attività. Ecco a cosa servono i bit SETUID e SETGID. È un modo per dire al kernel di aumentare temporaneamente i privilegi dell'utente, per la durata dell'esecuzione del comando contrassegnato. Un binario SETUID verrà eseguito con i privilegi del proprietario del file eseguibile (di solitoroot) e un binario SETGID verrà eseguito con i privilegi di gruppo del proprietario del gruppo del file eseguibile. Nel caso del passwdcomando, che appartiene a rooted è SETUID, consente agli utenti normali di influenzare direttamente il contenuto del file di password, in modo controllato e prevedibile, eseguendo con i privilegi di root. Ci sono numerosi altri SETUIDcomandi UNIX-like sistemi ( chsh, screen, ping, su, ecc), i quali richiedono privilegi elevati per funzionare correttamente. Esistono anche alcuni SETGIDprogrammi, in cui il kernel modifica temporaneamente il GID del processo, per consentire l'accesso ai file di log, ecc. sendmailÈ una tale utilità.

Lo sticky bitha uno scopo leggermente diverso. Il suo uso più comune è garantire che solo l'account utente che ha creato un file possa eliminarlo. Pensa alla /tmpdirectory. Ha autorizzazioni molto liberali, che consentono a chiunque di creare file lì. Questo è un bene, e permette processi agli utenti di creare i file temporanei ( screen, ssh, ecc, mantenere le informazioni di stato a /tmp). Per proteggere i file temporanei di un utente, /tmpè impostato il bit appiccicoso, in modo che solo io possa eliminare i miei file e solo tu puoi eliminare i tuoi. Ovviamente, root può fare qualsiasi cosa, ma dobbiamo sperare che l'amministratore di sistema non sia squilibrato!

Per i file normali (vale a dire per i file non eseguibili), è poco utile impostare i bit SETUID / SETGID. SETGID su directory su alcuni sistemi controlla il proprietario del gruppo predefinito per i nuovi file creati in quella directory.


2
Ah fantastico, grazie per quello. Quindi, Sticky Bit è come un'autorizzazione personale (utente)? Quella risposta era ben formulata e comprensibile.
Kevdog777,

1
Grazie! Il bit appiccicoso fornisce una piccola protezione per i file in una directory con permessi liberali. Non è proprio specifico per un determinato utente, poiché lo stesso livello di protezione è offerto a tutti i file, indipendentemente dal proprietario. È un modo per consentire a chiunque di creare file e garantire che solo il proprietario possa distruggerli.
D_Bye,

+1, D_bye, potresti condividere un esempio di bit setgid impostato nella directory. Grazie
Ankit,

1
@Ankit Sotto Solaris (e quasi sicuramente altri - io uso solo * BSD e Solaris, però), se il bit setgid è impostato su una directory, tutti i nuovi file creati in quella directory avranno lo stesso proprietario del gruppo della directory stessa, e non erediterà il gruppo primario di (l'utente che esegue) il processo di creazione.
D_Bye,

3

Penso che intendi il bit "SGID" di un file, che non è lo stesso del suo GID.

Ecco un tipico file sul mio computer (output di ls -l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Se guardi i primi 10 simboli,

(a) -: questo è solo un semplice file vecchio (al contrario di una directory, un link simbolico, una pipe ecc ...)

(b) rw-: il proprietario può leggere e scrivere questo file, ma non eseguirlo. Il proprietario è "bristol" come puoi vedere più avanti nella riga.

(c) r--: i membri del gruppo a cui appartiene questo file ("utenti" nell'esempio) diversi da quelli che il proprietario può leggere, ma non scrivere o eseguire questo file.

(d) ---: chiunque altro non può accedere a questo file (tranne ovviamente root).

Il campo GID è quello che ti dice a quale gruppo appartiene questo file - in questo caso "utenti".

Il campo che probabilmente intendevi, in base alla tua descrizione, è il bit SGID, ed ecco una spiegazione migliore di quella che potrei trovare:

http://www.codecoffee.com/tipsforlinux/articles/028.html

La versione breve è: se un file eseguibile ha il bit SGID impostato, chiunque non sia nel gruppo ma può eseguire questo file acquisisce temporaneamente i diritti di questo gruppo mentre il programma è in esecuzione.

Ad esempio, se si dispone di un "spool" di gruppo in grado di leggere e scrivere file nella directory dello spooler di stampa, non si desidera che nessuno si incasini con questa directory ma si desidera che siano in grado di stampare file, è possibile creare alcuni programmi o script di stampa hanno il gruppo "spool" e impostano il bit SGID e quando qualcuno avvia questo programma, il programma può ora scrivere nella directory dello spooler senza che la persona che lo esegue abbia pieno accesso.


Va bene, grazie per quello. Capisco la parte dei permessi, (la parte abbbcccddd) - ma grazie :)
Kevdog777,

Ho appena visto i miei permessi sulla cartella tmp drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Cosa significa la abbbcccddt(lettera 't')? - Capisco che "d = directory", "rwx = read, write, execute"; ma non ho mai visto la 't' alla fine prima. È un permesso speciale per la cartella tmp?
Kevdog777,

La piccola t è "eseguibile (x) e set di bit appiccicosi". Vedi sopra per una spiegazione del perché questo è solito su / tmp.
Bristol,

3

Il GID è, come hai trovato, il numero ID di un gruppo. È semplicemente un modo comodo per esprimere il gruppo (utente) associato a qualcosa (un processo, un file, ecc.); invece di un identificatore di stringa potenzialmente lungo, può essere espresso come un numero di dimensione fissa.

In un valore di autorizzazioni file di quattro cifre ottali (ad esempio, 0755), la terza cifra specifica le autorizzazioni del gruppo per il file. Se si omette la prima cifra, è la seconda cifra che specifica le autorizzazioni del gruppo. Si noti che i file e le directory sono trattati allo stesso modo in questo senso, ma che il significato esatto di ciascun bit di autorizzazione è in qualche modo non intuitivo nel caso delle directory.

I due concetti sono correlati, ma servono a scopi molto diversi.

Per quanto riguarda la tua domanda "è anche importante impostare tali autorizzazioni?"; sono sempre impostati su qualcosa , ma poiché nella maggior parte dei casi la cifra iniziale è 0 ("niente di speciale"), tende ad essere omessa per brevità. La necessità di specificare qualche altro valore dipende interamente dal modello di utilizzo del file o della directory in questione.

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.