getobjattrs 하위 루틴

용도

도메인에 할당된 개체 데이터베이스에서 여러 개체 보안 속성을 검색합니다.

라이브러리

보안 라이브러리libc.a

구문

#include <usersec.h>
int getobjattrs ( Obj, Attributes, Count)
char * Obj;
dbattr_t *Attributes;
int Count;

설명

Getobjattrs 하위 루틴은 도메인에 할당된 개체 데이터베이스에서 하나 이상의 속성을 읽습니다. 속성 배열에는 읽을 각 속성에 대한 정보가 들어 있습니다. ' 속성 ' 배열의 각 요소는 ' getobjattrs 서브루틴 호출이 성공하면 ' 속성 ' 배열이 성공적으로 검색되었는지 여부를 확인하기 위해 검사해야 합니다. SEC_CHAR 또는 SEC_LIST 유형의 속성은 할당된 메모리에 해당 값이 반환됩니다. 호출자는 이 메모리를 해제해야 합니다. Dbattr_t 데이터 구조에는 다음 필드가 포함되어 있습니다:

대상 개체 속성의 이름입니다. Getobjattrs 하위 루틴에 대한 다음과 같은 유효한 객체 속성은 usersec.h 파일에 정의되어 있습니다:
attr_name
이름을 지정합니다.
aTTR_IDX
이 속성은 getobjattrs 서브루틴에서 내부적으로 사용됩니다.
attr_type
대상 속성의 유형입니다.
aTTR_FLAG
요청의 결과는 대상 속성을 읽는 것입니다. 성공적으로 완료되면 0 값이 반환됩니다. 그렇지 않으면 제로가 아닌 값이 리턴됩니다.
attr_un
요청된 쿼리에 대해 반환된 값을 포함하는 유니온입니다.
다음 표에는 attr_name 속성의 다양한 값이 나와 있습니다:
이름 설명 유형
S_DOMAINS 객체의 도메인 목록입니다. SEC_LIST
S_CONFSETS 개체의 충돌 집합에 정의된 도메인 목록입니다. SEC_LIST
S_TYPE 객체의 유형입니다. 유효한 값은 다음과 같습니다: S_device, s_file, s_netport, s_netint SEC_CHAR
S_SECFLAGS 객체와 연결된 보안 플래그입니다. 유효한 값은 다음과 같습니다: FSF_DOM_ALL 및 FSF_DOM_ANY. SEC_INT
다음 유니온 멤버는 usersec.h 파일에 있는 attr_char, attr_int, attr_longattr_llong 매크로의 정의에 해당합니다:
au_char
SEC_CHAR 및 SEC_LIST 유형의 속성은 속성이 성공적으로 검색되면 반환된 값에 대한 포인터를 이 멤버에 저장합니다. 호출자는 이 메모리를 해제할 책임이 있습니다.
au_int
SEC_INT 유형의 속성에 대한 저장 위치입니다.
au_long
SEC_LONG 유형의 속성에 대한 저장 위치입니다.
au_llong
SEC_LLONG 유형의 속성에 대한 저장 위치입니다.

Obj 매개변수에 ALL이 지정된 경우, 속성 배열에 표시할 수 있는 유일한 유효한 속성은 S_DOMAINS 속성입니다. 도메인 이름이 ALL인 다른 속성을 지정하면 getobjattrs 하위 루틴이 실패합니다.

매개변수

OBJ
읽을 속성 배열의 개체 이름을 지정합니다.
속성
Dbattr_t 유형의 0개 이상의 요소로 구성된 배열에 대한 포인터입니다. 도메인에 할당된 개체 속성 목록은 usersec.h 헤더 파일에 정의되어 있습니다.
개수
속성 배열에 있는 배열 요소의 수입니다.

보안

액세스되는 파일:
/etc/security/domains
모드: R

리턴 값

Obj 매개변수로 지정된 개체가 도메인에 할당된 개체 데이터베이스에 있는 경우 getobjattrs 하위 루틴은 0 값을 반환합니다. 성공적으로 완료되면 속성 배열에 있는 각 요소의 attr_flag 속성을 검사하여 성공적으로 검색되었는지 확인해야 합니다. 지정된 객체가 존재하지 않으면 -1 값이 반환되고 오류를 나타내는 errno 값이 설정됩니다.

오류 코드

Getobjattrs 서브루틴이 -1 반환하면 다음 errno 값 중 하나가 설정됩니다:
EINVAL

오브젝트 매개변수는 NULL입니다.

Count 매개 변수가 0보다 작습니다.

Attributes 배열이 NULL이고 Count 매개변수가 0보다 큽니다.

오브젝트 매개변수는 ALL이지만 속성 항목에 S_DOMAINS 이외의 속성이 포함되어 있습니다.

ENOENT
Obj 매개 변수에 지정된 객체가 존재하지 않습니다.
ENOMEM
메모리를 할당할 수 없습니다.
EPERM
조작이 허용되지 않습니다.
EACCES
데이터 요청에 대한 액세스 권한이 거부되었습니다.
Getobjattrs 하위 루틴이 속성을 쿼리하지 못하면 해당 속성 요소의 attr_flag 필드에 다음 오류 중 하나가 반환됩니다:
EACCES
호출자는 attr_name 필드에 지정된 속성에 액세스할 수 없습니다.
EINVAL

속성 항목의 attr_name 필드는 인식되는 개체 속성이 아닙니다.

속성 항목의 attr_type 필드에 유효하지 않은 유형이 포함되어 있습니다.

속성 항목의 attr_un 필드가 유효한 버퍼를 가리키지 않습니다.

ENOATTR

속성 항목의 attr_name 필드에 유효한 속성이 지정되어 있지만 이 개체에 대해 정의된 값이 없습니다.