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
Descrição
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 :
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 ):
|
| Tipo | Especifica o tipo de atributo esperado. Os valores válidos são definidos no arquivo usersec.h e incluem:
|
| 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
Essas subroutines falham se o seguinte for verdadeiro:
| Item | Descrição |
|---|---|
| EACCES | A permissão de acesso é negada para a solicitação de dados. |
| 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. |