O que GID realmente significa?
Pesquisei no Google e isto é o que linux.about.com disse:
Número de identificação do grupo para o processo. Os números de grupo válidos são fornecidos em
/etc/group
e no campo GID do arquivo/etc/passwd
. Quando um processo é iniciado, seu GID é definido como o GID de seu processo pai.
- 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 defini o Sticky Bit para outros que será 1755
- É mesmo importante definir essas permissões?
Resposta
Todo processo em um sistema tipo UNIX, assim como todo arquivo, tem um proprietário (o usuário, real ou de sistema “pseudo -user “, como daemon
, bin
, man
, etc) e um grupo proprietário. O proprietário do grupo para os arquivos de um usuário é normalmente o grupo primário desse usuário e, de maneira semelhante, todos os processos que você inicia são normalmente propriedade de seu ID de usuário e de seu ID de grupo primário. , entretanto, é 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 de acesso ao arquivo de senha de sombra do sistema, para que possa atualizar sua senha. Obviamente, você não deseja dar privilégios de root a todos os usuários, apenas para que eles possam redefinir suas senhas – isso sem dúvida levaria ao caos! Em vez disso, deve haver outra maneira de conceder temporariamente privilégios elevados aos usuários para realizar certas tarefas. É para isso que servem os bits SETUID e SETGID. É uma maneira de dizer ao kernel para aumentar temporariamente os privilégios do usuário, durante a 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 executável Arquivo. No caso do comando passwd
, que pertence a root
e é SETUID, ele permite que usuários normais afetem diretamente o conteúdo da senha arquivo, de maneira controlada e previsível, executando com privilégios de root. Existem vários outros SETUID
comandos em sistemas semelhantes ao UNIX (chsh
, screen
, ping
, su
, etc), todos os quais requerem privilégios elevados para operar corretamente. Existem também alguns SETGID
programas, onde o kernel muda temporariamente o GID do processo, para permitir o acesso aos arquivos de log, etc. sendmail
é um desses utilitários.
O sticky bit
tem uma finalidade ligeiramente diferente. Seu uso mais comum é garantir que apenas a conta do usuário que criou um arquivo possa excluí-lo. Pense no diretório /tmp
. Tem permissões muito liberais, que permitem a qualquer pessoa criar arquivos lá. Isso é bom e permite aos usuários “processos para criar arquivos temporários (screen
, ssh
, etc, manter as informações de estado em /tmp
). Para proteger os arquivos temporários de um usuário, /tmp
tem o sticky bit definido, para que apenas eu possa excluir meus arquivos, e somente você pode exclua o seu. Claro, o root pode fazer qualquer coisa, mas temos que esperar que o administrador do sistema não esteja “perturbado!
Para arquivos normais (ou seja, para arquivos não executáveis), não faz muito sentido definir o SETUID / SETGID bits. SETGID em diretórios em alguns sistemas controla o proprietário do grupo padrão para novos arquivos criados nesse diretório.
Comentários
- Ah, incrível, obrigado para isso. Portanto, o Sticky Bit é como uma permissão pessoal (do usuário)? Essa resposta foi bem formulada e compreensível.
- Obrigado! O sticky bit fornece um pouco de proteção para arquivos em um diretório com liberal permissões. Ele ‘ não é realmente específico para um determinado usuário, pois o mesmo nível de proteção é oferecido a todos os arquivos, não importa quem seja o proprietário. Ele ‘ uma maneira de permitir que qualquer pessoa crie arquivos e garantir que apenas o proprietário possa destruí-los.
- +1, D_bye, você poderia compartilhar um exemplo para setgid bit definido no diretório.Obrigado
- @Ankit Under Solaris (e quase certamente outros – eu só uso * BSD e Solaris, no entanto), se o bit setgid estiver definido em um diretório, quaisquer novos arquivos criados nesse diretório terão o mesmo proprietário do grupo como o próprio diretório e não herdará o grupo primário (o usuário que está executando) o processo de criação.
Resposta
Acho que você quer dizer o bit” SGID “de um arquivo, que não é o mesmo que 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 para os primeiros 10 símbolos,
(a) -: Este é apenas um arquivo antigo simples (ao contrário para um diretório, link simbólico, canal, etc. …)
(b) rw-: O proprietário pode ler e escrever este arquivo, mas não pode executá-lo. O proprietário é “bristol” como você pode ver posteriormente na linha.
(c) r–: Membros do grupo ao qual este arquivo pertence (“usuários” no exemplo), exceto o proprietário, podem ler, mas não podem escrever ou executar este arquivo.
(d) —: A ninguém mais pode “acessar este arquivo (exceto root, é claro).
O campo GID é aquele que informa a qual grupo este arquivo pertence – neste caso,” usuários “.
O campo a que você provavelmente se referiu, com base na sua descrição, é o bit SGID e aqui está uma explicação melhor do que eu poderia apresentar:
http://www.codecoffee.com/tipsforlinux/articles/028.html
A versão curta é: se um arquivo executável tem o bit SGID definido, então qualquer pessoa que não esteja no grupo, mas pode executar este arquivo temporariamente obtém os direitos deste grupo enquanto o programa está sendo executado.
Por exemplo, se você tem um grupo “spool” que pode ler e gravar arquivos no diretório do spooler de impressão, você não ” Não quero que qualquer um mexa neste diretório, mas você quer que eles imprimam arquivos, você pode fazer algum programa de impressão ou script ter o grupo “spool” e definir o bit SGID e quando alguém iniciar este programa, o programa pode agora escrever no diretório do spooler sem que a pessoa execute obtendo acesso total.
Comentários
- Isso é bom, obrigado por isso. Eu entendo a parte das permissões (a parte abbbcccddd) – mas isso te incomoda 🙂
- Acabo de ver que minhas permissões na pasta tmp são
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. O que significaabbbcccddt
(letter ‘ t ‘)? – Eu entendo que ” d = diretório “, ” rwx = ler, escrever, executar “; mas nunca vi o ‘ t ‘ no final antes. Essa é uma permissão especial para a pasta tmp? - Pequeno t é ” executável (x) e conjunto de bits fixos “. Veja acima uma explicação de por que isso é normal em / tmp.
Resposta
O GID é, como você encontrou, o número de identificação 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 string potencialmente longo, ele pode ser expresso como um número de tamanho fixo.
Em um valor de permissões de arquivo de quatro dígitos octais (por exemplo, 0755), o terceiro dígito especifica as permissões do grupo ao arquivo. Se você omitir o primeiro dígito, é o segundo dígito que especifica as permissões do grupo. Observe que os arquivos e diretórios são tratados da mesma forma a este respeito, mas o significado exato de cada bit de permissão é algo diferente -intuitivo no caso de diretórios.
Os dois conceitos estão relacionados, mas têm finalidades muito diferentes.
Quanto à sua pergunta “é mesmo importante definir essas permissões?”; eles são sempre definidos como algo , mas como na maioria dos casos o dígito inicial é 0 (“nada de especial”), ele tende a ser omitido por questões de brevidade. Se você precisa especificar algum outro valor depende inteiramente de o padrão de uso para o arquivo ou diretório em questão.