Que signifie GID?

14

Que signifie GID?

Je l'ai googlé et c'est ce que linux.about.com a dit:

Numéro d'identification de groupe pour le processus. Les numéros de groupe valides sont indiqués dans /etc/groupet dans le champ GID du /etc/passwdfichier. Lorsqu'un processus est démarré, son GID est défini sur le GID de son processus parent.

  • Mais qu'est ce que ça veut dire?

Les autorisations que j'ai pour mon dossier sont actuellement sur 0755

Je comprends que si je définis l'UID pour le propriétaire, ce sera 4755

Et si je règle le GID du groupe, ce sera 2755

Si je mets le Sticky Bit pour les autres, ce sera 1755

  • Est-il même important de définir ces autorisations?
Kevdog777
la source

Réponses:

27

Chaque processus dans un système de type UNIX, comme tous les fichiers, a un propriétaire (l'utilisateur, qu'il soit réel ou un système de « pseudo-utilisateur », tels que daemon, bin, man, etc.) et un propriétaire du groupe. Le propriétaire du groupe pour les fichiers d'un utilisateur est généralement le groupe principal de cet utilisateur et, de la même manière, tous les processus que vous démarrez appartiennent généralement à votre ID utilisateur et à votre ID de groupe principal.

Parfois, cependant, il est nécessaire d'avoir des privilèges élevés pour exécuter certaines commandes, mais il n'est pas souhaitable de donner des droits administratifs complets. Par exemple, la passwdcommande doit avoir accès au fichier de mots de passe cachés du système pour pouvoir mettre à jour votre mot de passe. Évidemment, vous ne voulez pas donner à chaque utilisateur des privilèges root, juste pour qu'ils puissent réinitialiser leur mot de passe - cela conduirait sans aucun doute au chaos! Au lieu de cela, il doit y avoir un autre moyen d'accorder temporairement des privilèges élevés aux utilisateurs pour effectuer certaines tâches. C'est à cela que servent les bits SETUID et SETGID. C'est un moyen de dire au noyau d'augmenter temporairement les privilèges de l'utilisateur, pendant la durée de l'exécution de la commande marquée. Un binaire SETUID sera exécuté avec les privilèges du propriétaire du fichier exécutable (généralementroot), et un binaire SETGID sera exécuté avec les privilèges de groupe du propriétaire du groupe du fichier exécutable. Dans le cas de la passwdcommande, qui appartient à rootet est SETUID, elle permet aux utilisateurs normaux d'affecter directement le contenu du fichier de mot de passe, de manière contrôlée et prévisible, en s'exécutant avec les privilèges root. Il existe de nombreuses autres SETUIDcommandes sur UNIX comme les systèmes ( chsh, screen, ping, su, etc.), qui tous exigent des privilèges élevés pour fonctionner correctement. Il existe également quelques SETGIDprogrammes, où le noyau modifie temporairement le GID du processus, pour permettre l'accès aux fichiers journaux, etc. sendmailest un tel utilitaire.

Le sticky bitsert un but légèrement différent. Son utilisation la plus courante consiste à s'assurer que seul le compte d'utilisateur qui a créé un fichier peut le supprimer. Pensez au /tmprépertoire. Il a des autorisations très libérales, qui permettent à n'importe qui de créer des fichiers là-bas. Ce qui est bon et permet aux processus des utilisateurs de créer des fichiers temporaires ( screen, ssh, etc, conserver les informations d'état /tmp). Pour protéger les fichiers temporaires d'un utilisateur, /tmple bit collant est défini, de sorte que moi seul puisse supprimer mes fichiers et que vous seul puissiez supprimer le vôtre. Bien sûr, root peut tout faire, mais nous devons espérer que le sysadmin n'est pas dérangé!

Pour les fichiers normaux (c'est-à-dire pour les fichiers non exécutables), il est inutile de définir les bits SETUID / SETGID. SETGID sur les répertoires de certains systèmes contrôle le propriétaire du groupe par défaut pour les nouveaux fichiers créés dans ce répertoire.

D_Bye
la source
2
Ah génial, merci pour ça. Donc, le Sticky Bit est comme une autorisation personnelle (utilisateur)? Cette réponse était bien formulée et compréhensible.
Kevdog777
1
Je vous remercie! Le bit collant offre une petite protection pour les fichiers dans un répertoire avec des autorisations libérales. Ce n'est pas vraiment spécifique à un utilisateur donné, car le même niveau de protection est accordé à tous les fichiers, quel que soit le propriétaire. C'est un moyen de permettre à quiconque de créer des fichiers et de s'assurer que seul le propriétaire peut les détruire.
D_Bye
+1, D_bye, pourriez-vous s'il vous plaît partager un exemple de bit setgid défini sur le répertoire. Merci
Ankit
1
@Ankit sous Solaris (et presque certainement d'autres - j'utilise uniquement * BSD et Solaris, cependant), si le bit setgid est défini sur un répertoire, tous les nouveaux fichiers créés sous ce répertoire auront le même propriétaire de groupe que le répertoire lui-même, et n'héritera pas du groupe principal (l'utilisateur exécutant) le processus de création.
D_Bye
3

Je pense que vous voulez dire le bit "SGID" d'un fichier, qui n'est pas le même que son GID.

Voici un fichier typique sur mon ordinateur (sortie de ls -l):

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

Si vous regardez les 10 premiers symboles,

(a) -: Il s'agit simplement d'un ancien fichier (par opposition à un répertoire, un lien symbolique, un tuyau, etc. ...)

(b) rw-: Le propriétaire peut lire et écrire ce fichier, mais pas l'exécuter. Le propriétaire est "bristol" comme vous pouvez le voir plus loin dans la ligne.

(c) r--: les membres du groupe auquel appartient ce fichier ("utilisateurs" dans l'exemple) autres que le propriétaire peuvent lire, mais pas écrire ou exécuter ce fichier.

(d) ---: Personne d'autre ne peut accéder à ce fichier (sauf root bien sûr).

Le champ GID est celui qui vous indique à quel groupe ce fichier appartient - dans ce cas "utilisateurs".

Le champ que vous vouliez probablement, sur la base de votre description, est le bit SGID, et voici une meilleure explication que je ne pourrais trouver:

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

La version courte est: si un fichier exécutable a le bit SGID défini, alors toute personne qui ne fait pas partie du groupe mais qui peut exécuter ce fichier obtient temporairement les droits de ce groupe pendant l'exécution du programme.

Par exemple, si vous avez un groupe "spool" qui peut lire et écrire des fichiers dans le répertoire du spouleur d'impression, vous ne voulez pas que n'importe qui puisse jouer avec ce répertoire mais vous voulez qu'ils puissent imprimer des fichiers, vous pouvez faire certains programmes ou scripts d'impression ont le groupe "spool" et définissent le bit SGID et lorsque quelqu'un lance ce programme, le programme peut désormais écrire dans le répertoire du spouleur sans que la personne qui l'exécute n'ait un accès complet.

Bristol
la source
C'est bien, merci pour ça. Je comprends la partie des autorisations, (la partie abbbcccddd) - mais ça vous :) :)
Kevdog777
Je viens de voir mes autorisations sur le dossier tmp drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Que signifie la abbbcccddt(lettre 't')? - Je comprends que "d = répertoire", "rwx = lire, écrire, exécuter"; mais je n'ai jamais vu le «t» à la fin auparavant. Est-ce une autorisation spéciale pour le dossier tmp?
Kevdog777
Le petit t est "exécutable (x) et ensemble de bits collants". Voir ci-dessus pour une explication de la raison pour laquelle ceci est habituel sur / tmp.
Bristol le
3

Le GID est, comme vous l'avez trouvé, le numéro d'identification d'un groupe. C'est simplement un moyen pratique pour le système d'exploitation d'exprimer le groupe (d'utilisateur) associé à quelque chose (un processus, un fichier, etc.); au lieu d'un identificateur de chaîne potentiellement long, il peut être exprimé sous la forme d'un nombre de taille fixe.

Dans une valeur d'autorisations de fichier de quatre chiffres octaux (par exemple, 0755), le troisième chiffre spécifie les autorisations du groupe sur le fichier. Si vous omettez le premier chiffre, c'est le deuxième chiffre qui spécifie les autorisations du groupe. Notez que les fichiers et répertoires sont traités de la même manière à cet égard, mais que la signification exacte de chaque bit d'autorisations est quelque peu non intuitive dans le cas des répertoires.

Les deux concepts sont liés, mais servent à des fins très différentes.

Quant à votre question "est-il même important de définir ces autorisations?"; ils sont toujours définis sur quelque chose , mais comme dans la plupart des cas, le chiffre initial est 0 ("rien de spécial"), il a tendance à être omis par souci de concision. La nécessité de spécifier une autre valeur dépend entièrement du modèle d'utilisation du fichier ou du répertoire en question.

un CVn
la source