O que significa GID?

13

O que o GID realmente significa?

Eu pesquisei no Google e é isso que linux.about.com disse:

Group identification number for the process. Valid group numbers are given in /etc/group, and in the GID field of /etc/passwd file. When a process is started, its GID is set to the GID of its parent process.

  • Mas o que isso significa?

As permissões que tenho para minha pasta estão atualmente em 0755

Entendo que se eu definir o UID para o proprietário, será 4755

E se eu definir o GID do grupo, será 2755

Se eu definir o Sticky Bit para os outros, será 1755

  • É importante definir essas permissões?
por Kevdog777 23.07.2012 / 12:09

3 respostas

25

Todo processo em um sistema semelhante ao UNIX, assim como todo arquivo, tem um proprietário (o usuário, real ou um "pseudo-usuário" do sistema, como daemon , bin , man , etc ) e um dono de grupo. O proprietário do grupo para os arquivos de um usuário é geralmente o grupo principal desse usuário e, de maneira semelhante, todos os processos que você inicia normalmente pertencem ao seu ID de usuário e ao seu ID de grupo principal.

Às vezes, porém, é necessário ter privilégios elevados para executar determinados comandos, mas não é desejável conceder direitos administrativos completos. Por exemplo, o comando passwd precisa acessar o arquivo de senha de sombra do sistema para poder atualizar sua senha. Obviamente, você não quer dar privilégios de root a todos os usuários, apenas para que eles possam redefinir sua senha - o que, sem dúvida, levaria ao caos! Em vez disso, é preciso haver outra maneira de conceder temporariamente privilégios elevados aos usuários para executar determinadas tarefas. É para isso que servem os bits SETUID e SETGID. É uma maneira de dizer ao kernel para elevar temporariamente os privilégios do usuário, pela duração da execução do comando marcado. Um binário SETUID será executado com os privilégios do proprietário do arquivo executável (geralmente root ), e um binário SETGID será executado com os privilégios de grupo do proprietário do grupo do arquivo executável. No caso do comando passwd , que pertence a root e é SETUID, permite que usuários normais afetem diretamente o conteúdo do arquivo de senha, de maneira controlada e previsível, executando com privilégios de root. Existem vários outros comandos SETUID em sistemas semelhantes ao UNIX ( chsh , screen , ping , su , etc), todos os quais requerem privilégios elevados para funcionar corretamente. Existem também alguns programas SETGID , onde o kernel altera temporariamente o GID do processo, para permitir o acesso a arquivos de log, etc. sendmail é um utilitário desse tipo.

O sticky bit serve um propósito ligeiramente diferente. Seu uso mais comum é garantir que apenas a conta de usuário que criou um arquivo possa excluí-lo. Pense no diretório /tmp . Tem permissões muito liberais, que permitem que qualquer pessoa crie arquivos lá. Isso é bom e permite que os processos dos usuários criem arquivos temporários ( screen , ssh , etc, mantêm informações de estado em /tmp ). Para proteger os arquivos temporários de um usuário, /tmp tem o bit fixo definido, de modo que somente eu possa excluir meus arquivos e somente você pode excluir o seu. Claro, o root pode fazer qualquer coisa, mas temos que esperar que o administrador de sistemas não seja perturbado!

Para arquivos normais (isto é, para arquivos não executáveis), não há muito sentido em configurar os bits SETUID / SETGID. O SETGID nos diretórios de alguns sistemas controla o proprietário do grupo padrão para novos arquivos criados nesse diretório.

    
por 23.07.2012 / 12:49
3

Eu acho que você quer dizer o bit "SGID" de um arquivo, que não é o mesmo que o seu GID.

Aqui está um arquivo típico no meu computador (saída de ls -l):

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

Se você olhar os 10 primeiros símbolos,

(a) -: Este é apenas um arquivo antigo (ao contrário de um diretório, um link simbólico, um canal, etc. ...)

(b) rw-: O proprietário pode ler e gravar este arquivo, mas não executá-lo. O dono é "bristol", como você pode ver mais adiante na linha.

(c) r--: Os membros do grupo ao qual este arquivo pertence ("usuários" no exemplo), além do proprietário, podem ler, mas não escrever ou executar este arquivo.

(d) ---: Qualquer outra pessoa não pode acessar este arquivo (exceto root, é claro).

O campo GID é aquele que informa a que grupo este arquivo pertence - neste caso, "usuários".

O campo que você provavelmente quis dizer, baseado na sua descrição, é o bit SGID, e aqui está uma explicação melhor do que eu poderia fazer:

link

A versão curta é: se um arquivo executável tiver o bit SGID configurado, qualquer pessoa que não esteja no grupo, mas pode executar esse arquivo, ganha temporariamente os direitos desse grupo enquanto o programa estiver sendo executado.

Por exemplo, se você tiver um grupo "spool" que possa ler e gravar arquivos no diretório do spooler de impressão, não desejará que ninguém mexa nesse diretório, mas deseja que eles possam imprimir arquivos, você pode fazer com que algum programa de impressão ou script tenha o grupo "spool" e defina o bit SGID e quando alguém iniciar este programa, o programa pode agora gravar no diretório do spooler sem que a pessoa que o esteja executando tenha acesso total.

    
por 23.07.2012 / 12:48
3

O GID é, como você descobriu, o número de ID de um grupo. É simplesmente uma maneira conveniente para o sistema operacional expressar o grupo (usuário) associado a algo (um processo, um arquivo, etc.); em vez de um identificador de cadeia potencialmente longo, pode ser expresso como um número de tamanho fixo.

Em um valor de permissões de arquivo de quatro dígitos octal (por exemplo, 0755), o terceiro dígito especifica as permissões do grupo para o arquivo. Se você omitir o primeiro dígito, será o segundo dígito que especifica as permissões do grupo. Observe que os arquivos e diretórios são tratados da mesma maneira, mas o significado exato de cada bit de permissão é um pouco não intuitivo no caso de diretórios.

Os dois conceitos estão relacionados, mas têm propósitos muito diferentes.

Quanto à sua pergunta "é importante definir essas permissões?"; eles são sempre definidos como algo , mas como na maioria dos casos o dígito inicial é 0 ("nada especial"), ele tende a ser omitido por brevidade. Se você precisa especificar algum outro valor, depende inteiramente do padrão de uso do arquivo ou diretório em questão.

    
por 23.07.2012 / 12:49