putdevattr Subroutine

Propósito

Modifica as informações de segurança do dispositivo no banco de dados de dispositivos privilegiados.

Biblioteca

Biblioteca de segurançalibc.a)

Sintaxe

#include <usersec.h>

int putdevattr (Device, Attribute, Value, Type)
    char *Device;
    char *Attribute;
    void *Value;
    int Type;

Descrição

A sub-rotina putdevattr grava um atributo especificado no banco de dados do dispositivo. Se o banco de dados não estiver aberto, esta subroutine faz um aberto implícito para leitura e escrita. Os dados alterados pelas sub-rotinas putdevattr e putdevattrs devem ser confirmados explicitamente chamando a sub-rotina putdevattr com um parâmetro Type especificando SEC_COMMIT. Até que todos os dados sejam confirmados, somente as sub-rotinas dentro do processo retornam os dados gravados.

Novas entradas nos bancos de dados de dispositivos devem ser criadas primeiro invocando a sub-rotina putdevattr com o tipo SEC_NEW.

As alterações feitas no banco de dados de dispositivos privilegiados não afetam as considerações de segurança até que todo o banco de dados seja enviado para as tabelas de segurança do kernel por meio do dispositivo setkst ou até que o sistema seja reinicializado.

Parâmetros

Item Descrição
Dispositivo O nome do dispositivo. O valor deve ser o caminho completo para o dispositivo no sistema. Esse parâmetro deve ser especificado, a menos que o parâmetro Type seja SEC_COMMIT.
Atributo Especifica que atributo é escrito. Os seguintes atributos possíveis são definidos no arquivousersec.h :
S_READPRIVS
Privilégios necessários para ler a partir do dispositivo. Oito privilégios podem ser definidos. Um processo com qualquer um dos privilégios de leitura é permitido ler a partir do dispositivo. O tipo de atributo é SEC_LIST.
S_WRITEPRIVS
Privilégios necessários para escrever para o dispositivo. Oito privilégios podem ser definidos. Um processo com qualquer um dos privilégios de gravação é permitido para gravar no dispositivo. O tipo de atributo é SEC_LIST.
Valor Especifica um buffer, um ponteiro para um buffer ou um ponteiro para um ponteiro, dependendo dos parâmetros Attribute e Type. Consulte o parâmetro Type para obter mais detalhes.
Tipo Especifica o tipo de atributo esperado. Os tipos válidos são definidos no arquivo usersec.h e incluem:
SEC_INT
O formato do atributo é um inteiro. O usuário deve fornecer um número inteiro.
SEC_CHAR
O formato do atributo é uma cadeia de caracteres terminada nula. O usuário deve fornecer um ponteiro de caracteres.
SEC_LISTA
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. O usuário deve fornecer um ponteiro de caracteres.
SEC_COMMIT
Especificado que alterações no dispositivo nomeado devem ser comprometidas com o armazenamento permanente. Os parâmetros Attribute e Value são ignorados. Se nenhum dispositivo for especificado, as alterações em todos os dispositivos modificados estão comprometidas com o armazenamento permanente.
SEC_DELETE
Se o parâmetro Attribute for especificado, o atributo correspondente será excluído do banco de dados do dispositivo privilegiado. Se nenhum parâmetro Attribute for especificado, toda a definição do dispositivo será excluída do banco de dados de dispositivos com privilégios.
SEC_NOVA
Cria um novo dispositivo no banco de dados de dispositivos privilegiados quando ele é especificado com a sub-rotina putdevattr.

Segurança

Arquivos acessados:
Arquivo Modo
/etc/security/privdevs rw

Valores De Retorno

Se for bem-sucedida, a sub-rotina putdevattr retornará zero. Caso contrário, um valor de -1 é retornado e o valor global errno é definido para indicar o erro.

Códigos De Erro

Se a sub-rotina putdevattr falhar, um dos seguintes valores errno poderá ser definido:

Item Descrição
EINVAL O parâmetro Device é NULL e o parâmetro Type não é SEC_COMMIT.
EINVAL O parâmetro Device é padrão ou ALL.
EINVAL O parâmetro Attribute não contém um dos atributos definidos ou é NULL.
EINVAL O parâmetro Type não contém um dos valores definidos.
EINVAL O parâmetro Value não aponta para um buffer válido ou para dados válidos para esse tipo de atributo.
ENOENTE O dispositivo especificado pelo parâmetro Device não existe.
EPERM A operação não é permitida.