getgroupattr, IDtogroup, nextgroup ou putgroupattr Subroutine

Propósito

Acessa as informações do grupo no banco de dados do usuário.

Biblioteca

Biblioteca de Segurança (libc.a).

Sintaxe

#include <usersec.h>
int getgroupattr (GroupAttributeValueType)
char * Group;
char * Attribute;
void * Value;
int  Type;
int putgroupattr (GroupAttributeValue, Type)
char *Group;
char *Attribute;
void *Value;
int Type;
char *IDtogroup ( GID)
gid_t GID;
char *nextgroup ( Mode Argument)
int ModeArgument;

Descrição

Atenção: Estas subroutines e as subroutines setpwent e setgrent não devem ser usadas simultaneamente. Os resultados podem ser imprevisíveis.

Essas subroutines acessam informações do grupo. Devido à sua maior granularidade e extensibilidade, você deve usá-los em vez do getgrent, putgrent, getgrnam, getgrgid, setgrent, e subroutines de endgrent .

A subroutine getgroupattr lê um atributo especificado da base de dados do grupo. Se o banco de dados já não estiver aberto, a subroutine fará um implícito aberto para leitura.

Da mesma forma, o subroutine putgroupattr grava um atributo especificado no banco de dados do grupo. Se o banco de dados já não estiver aberto, a subroutine faz um aberto implícito para leitura e escrita. Os dados alterados pelo putgroupattr devem ser explicitamente confirmados chamando a subroutina putgroupattr com um parâmetro Type especificando o valor SEC_COMMIT . Até que os dados sejam confirmados, apenas get subroutine chamadas dentro do processo retornarão os dados escritos.

Novas entradas nos bancos de dados do usuário e do grupo devem primeiramente ser criadas invocando putgroupattr com o tipo SEC_NEW .

A subroutina IDtogroup traduz um ID de grupo em um nome de grupo.

A subroutine nextgroup retorna o próximo grupo em uma busca linear da base de dados do grupo. A consistência das buscas consecutivas depende do mecanismo de acesso ao armazenamento subjacente e não é garantida por esta subroutine.

As subroutines setuserdb e enduserdb devem ser usadas para abrir e fechar o banco de dados do usuário.

Parâmetros

Item Descrição
Argumento Atualmente não utilizado e deve ser especificado como nulo.
Atributo Especifica qual atributo é lido. Os valores possíveis a seguir são definidos no arquivo usersec.h :
S_ID
ID do Grupo. O tipo de atributo é SEC_INT.
S_USUÁRIOS
Membros do grupo. O tipo de atributo é SEC_LIST.
S_ADMS
Administradores do grupo. O tipo de atributo é SEC_LIST.
S_ADMIN
Status administrativo de um grupo. Tipo: SEC_BOOL.
S_GRPEXPORT
Especifica se o registro do DCE pode sobrescrever as informações do grupo local com as informações do grupo DCE durante uma operação de exportação do DCE. O tipo de atributo é SEC_BOOL.

Atributos adicionais definidos pelo usuário podem ser usados e serão armazenados no formato especificado pelo parâmetro Type .

GID Especifica o ID do grupo a ser traduzido em um nome de grupo.
Grupo Especifica o nome do grupo para o qual um atributo deve ser lido.
Modo Especifica o modo de pesquisa. Também pode ser usado para delimitar a busca a um ou mais bancos de dados de credencial de usuário. Especificar um valor de Modo não nulo rebate implicitamente a busca. Um modo nulo continua a busca sequencialmente através do banco de dados. Este parâmetro especifica um dos seguintes valores como uma máscara de bits (definida no arquivo usersec.h ):
S_LOCAL
A base de dados local de grupos está incluída na pesquisa.
S_SISTEMA
Todos os servidores credenciados para o sistema são pesquisados.
Tipo Especifica o tipo de atributo esperado. Os valores válidos são definidos no arquivo usersec.h e incluem:
SEC_INT
O formato do atributo é um inteiro. O buffer retornado pela subroutine getgroupattr e o buffer fornecido pela subroutine putgroupattr são definidos para conter um inteiro.
SEC_CHAR
O formato do atributo é uma cadeia de caracteres terminada nula.
LISTA_SEC
O formato do atributo é uma série de strings concatenadas, cada uma terminada nula. A última sequência na série é finalizada por dois caracteres nulos sucessivos.
SEC_BOOL
Um ponteiro para um inteiro (int *) que foi escalado para um ponteiro nulo.
SEC_COMMIT
Para a subroutine putgroupattr , este valor especificado por si mesmo indica que mudanças no grupo nomeado estão comprometidas com o armazenamento permanente. Os parâmetros Atributos e Valor são ignorados. Se nenhum grupo for especificado, as alterações em todos os grupos modificados são comprometidas com o armazenamento permanente.
SEC_DELETE
O atributo correspondente é excluído do banco de dados.
SEC_NOVA
Se estiver usando a subroutine putgroupattr , atualiza todos os arquivos do banco de dados do grupo com o novo nome do grupo.
Valor Especifica o endereço de um ponteiro para a subroutine getgroupattr . A subroutine getgroupattr retornará o endereço de um buffer no ponteiro. Para a subroutine putgroupattr , o parâmetro Value especifica o endereço de um buffer no qual o atributo é armazenado. Veja o parâmetro Tipo para obter mais detalhes.

Segurança

Item Descrição
Arquivos acessados:  
Modo Arquivo
rw /etc/group (acesso de gravação para putgroupattr)
rw /etc/security/group (acesso de gravação para putgroupattr)

Valores De Retorno

As subroutines getgroupattr e putgroupattr , quando concluídas com sucesso, retornam um valor de 0. Caso contrário, um valor de -1 é retornado e a variável global errno é definida para indicar o erro.

As subroutines IDtogroup e nextgroup retornam um ponteiro de caracteres para um buffer contendo o nome do grupo solicitado, se concluído com sucesso. Caso contrário, um ponteiro nulo é retornado e a variável global errno é configurada para indicar o erro.

Códigos De Erro

Nota: Todas essas subroutines retornam erros de outras subroutines.

Essas subroutines falham se o seguinte for verdadeiro:

Item Descrição
EACCES A permissão de acesso é negada para a solicitação de dados.
A subroutine getgroupattr falha se o seguinte for retornado:
Item Descrição
EIO Falha ao acessar banco de dados do grupo remoto.

As subroutines getgroupattr e putgroupattr falham se uma ou mais das seguintes são verdadeiras:

Item Descrição
EINVAL O parâmetro Valor não aponta para um buffer válido ou para dados válidos para este tipo de atributo. O teste limitado é possível e todos os erros podem não ser detectados.
EINVAL O parâmetro Type contém mais do que um dos SEC_INT, SEC_BOOL, SEC_CHAR, SEC_LIST, ou atributos SEC_COMMIT .
EINVAL O parâmetro Type especifica que um atributo individual deve ser cometido e o parâmetro Group é nulo.
ENOENTE O parâmetro Group especificado não existe ou o atributo não está definido para este grupo.
EPERM Operação não é permitida.

A subroutina do IDtogroup falha se o seguinte for verdadeiro:

Item Descrição
ENOENTE O parâmetro GID não poderia ser traduzido em um nome de grupo válido no sistema.

A subroutine nextgroup falha se uma ou mais das seguintes forem verdadeiras:

Item Descrição
EINVAL O parâmetro Mode não é nulo, e não especifica nem S_LOCAL ou S_SYSTEM.
EINVAL O parâmetro Argumento não é nulo.
ENOENTE O fim das buscas foi alcançado.