putdevattrs 서브루틴

용도

특권 장치 데이터베이스에서 여러 장치 속성을 수정합니다.

라이브러리

보안 라이브러리libc.a

구문

#include <usersec.h>

int putdevattrs(Device, Attributes, Count)
    char *Device;
    dbattr_t *Attributes;
    int Count;

설명

Putdevattrs 서브루틴은 권한이 있는 디바이스 데이터베이스에서 하나 이상의 속성을 수정합니다. 데이터베이스가 열려 있지 않은 경우, 이 서브루틴은 읽기 및 쓰기를 위한 내재적 열기를 수행합니다. Device 매개변수로 지정된 디바이스는 디바이스의 전체 경로를 포함해야 하며 권한이 있는 디바이스 데이터베이스에 존재해야 합니다.

Putdevattrs 서브루틴은 데이터베이스에 있는 기존 디바이스의 속성을 수정하는 데만 사용됩니다. 디바이스 항목을 만들거나 제거하려면 putdevattr 하위 루틴을 대신 사용하세요. Putdevattrs 서브루틴에 의해 변경된 데이터는 SEC_COMMIT을 지정하는 Type 매개변수와 함께 putdevattr 서브루틴을 호출하여 명시적으로 커밋해야 합니다. 모든 데이터가 커밋될 때까지 프로세스 내의 getdevattrgetdevattrs 서브루틴만 수정된 데이터를 반환합니다. 권한이 있는 장치 데이터베이스에 대한 변경 사항은 전체 데이터베이스가 setkst 장치를 사용하여 커널 보안 테이블로 전송될 때까지 보안 고려 사항에 영향을 미치지 않습니다.

속성 매개변수에는 업데이트할 각 속성에 대한 정보가 포함되어 있습니다. ' 속성 매개변수에 지정된 각 값은 ' putdevattrs ' 하위 루틴을 성공적으로 호출할 때 검사하여 ' 속성 ' 매개변수가 성공적으로 작성되었는지 확인해야 합니다. Dbattr_t 데이터 구조에는 다음 필드가 포함되어 있습니다:
항목 설명
attr_name 업데이트할 디바이스 속성의 이름입니다.
aTTR_IDX 이 속성은 putdevattrs 서브루틴에서 내부적으로 사용됩니다.
attr_type 업데이트되는 속성의 유형입니다.
aTTR_FLAG 원하는 속성을 업데이트하기 위한 요청의 결과입니다. 성공 시 0값이 리턴됩니다. 그렇지 않으면 제로가 아닌 값이 리턴됩니다.
attr_un 요청된 속성을 업데이트하는 데 사용할 값을 포함하는 유니온입니다.
attr_domain 이 필드는 putdevattrs 서브루틴에서 무시됩니다.
Putdevattrs 하위 루틴에 대한 다음과 같은 유효한 권한 있는 디바이스 속성이 usersec.h 파일에 정의되어 있습니다:
이름 설명 유형
S_READPRIVS 디바이스에서 읽는 데 필요한 권한입니다. 8개의 특권을 정의할 수 있습니다. 읽기 권한이 있는 프로세스는 디바이스에서 읽을 수 있습니다. SEC_LIST
S_WRITEPRIVS 디바이스에 쓰는 데 필요한 권한입니다. 8개의 특권을 정의할 수 있습니다. 쓰기 권한이 있는 프로세스는 디바이스에 쓸 수 있습니다. SEC_LIST
이어지는 유니온 멤버는 각각 usersec.h 파일에 있는 attr_char, attr_int, attr_longattr_llong 매크로의 정의에 해당합니다.
항목 설명
au_char SEC_CHARSEC_LIST 유형의 속성에 대해 기록할 값에 대한 문자 포인터입니다.
au_int SEC_INT 타입의 어트리뷰트에 대해 기록할 정수 값입니다.
au_long SEC_LONG 타입의 속성에 대해 기록할 긴 값입니다.
au_llong SEC_LLONG 유형의 속성에 대해 기록할 긴 긴 값입니다.

매개변수

항목 설명
디바이스 속성을 갱신할 장치 이름을 지정합니다.
속성 Dbattr_t 유형의 0개 이상의 요소로 구성된 배열에 대한 포인터입니다. 디바이스 속성 목록은 usersec.h 헤더 파일에 정의되어 있습니다.
개수 Attributes 매개변수에 있는 배열 요소의 수입니다.

보안

액세스되는 파일:
파일 모드
/etc/security/privdevs rw

리턴 값

Device 매개변수에 지정된 장치가 권한 있는 장치 데이터베이스에 있는 경우, 속성 매개변수의 속성이 성공적으로 업데이트되지 않은 경우에도 putdevattrs 하위 루틴은 0을 반환합니다. 성공하면 속성 매개변수에 있는 각 요소의 attr_flag 속성을 검사하여 업데이트가 성공적으로 이루어졌는지 확인해야 합니다. 실패하면 -1 값이 반환되고 오류를 나타내는 errno 값이 설정됩니다.

오류 코드

Putdevattrs 하위 루틴이 -1 반환하면 다음 errno 값 중 하나를 설정할 수 있습니다:
항목 설명
EINVAL Device 매개변수는 NULL, 기본값 또는 ALL입니다.
EINVAL Count 매개변수가 0보다 작습니다.
EINVAL 속성 매개변수는 NULL이고 카운트 매개변수는 0보다 큽니다.
EINVAL Attributes 매개변수가 요청된 속성에 대해 유효한 데이터를 가리키지 않습니다.
ENOENT 장치 매개 변수에 지정된 장치가 존재하지 않습니다.
EPERM 조작이 허용되지 않습니다.
Putdevattrs 하위 루틴이 속성을 업데이트하지 못하면 속성 항목에 지정된 값에 해당하는 attr_flag 필드에 다음 오류 중 하나가 반환됩니다:
항목 설명
EACCES 호출자에게 특권 장치 데이터베이스에 대한 쓰기 액세스 권한이 없습니다.
EINVAL 속성 항목의 attr_name 필드는 인식된 권한 있는 장치 속성이 아닙니다.
EINVAL 속성 항목의 attr_type 필드에 유효하지 않은 유형이 포함되어 있습니다.
EINVAL 속성 항목의 attr_un 필드가 이 유형의 속성에 대해 유효한 버퍼 또는 유효한 데이터를 가리키지 않습니다.