STRMODE(3)

명칭
strmode - inode 스테이터스 정보를 심볼 캐릭터 라인에 변환

프로그램 라이브러리
libc

서식
<string.h> void strmode(mode_t mode, char *bp)

해설
strmode() 함수는, 파일 mode (inode 에 결합되는 타입과 퍼미션의 정보에 대해서는, stat(2) (을)를 참조)를 심볼 캐릭터 라인으로 변환해, 그것을 bp 그리고 참조되는 장소에 보존합니다. 보존되는 이 캐릭터 라인은, 길이가 11 캐릭터로 마지막에 눌 캐릭터가 붙습니다.

최초의 캐릭터는 inode 타입으로, 다음의 어느 쪽인가에 됩니다 :

-   통상 파일
b   블록형 특수 파일
c   캐릭터형 특수 파일
d   디렉토리
l   기호 연결
p   fifo
s   소켓
w   whiteout
?   미지의 inode 타입

다음에 계속되는 9 개의 캐릭터는, 3 캐릭터마다 3 개의 퍼미션 세트를 코드화합니다. 최초의 3 개의 캐릭터는 파일 소유자를 위한 퍼미션으로, 2 번째의 3 캐릭터는 파일이 소속하는 그룹을 위한 것, 그리고 3 번째의 3 캐릭터는 ``다른 사람''또는 디폴트의 유저 세트용입니다.

퍼미션 체크는, 할 수 있는 한 명확하게 한정해 행해집니다. 최초의 퍼미션 세트로 파일의 소유자에 대해서 독해 허가가 거부되었을 경우는, 파일의 소유자는 그 파일을 읽어낼 수가 없습니다. 이것은, 그 소유자가 파일의 그룹에 들어가 있어 그 그룹 퍼미션에 의해 독해 허가가 주어지고 있는 경우, 또는 독해를 허가하는 ``다른 사람''의 퍼미션이 주어지고 있는 경우에서도 들어맞읍니다.

3 캐릭터 세트의 최초의 캐릭터가 ``r''인 경우는, 그 파일은 그 유저 세트에 대해서 읽어내 가능합니다. 캐릭터가 데쉬 ``-''경우는, 독해할 수 없습니다.

3 캐릭터 세트의 2 번째의 캐릭터가 ``w''인 경우는, 그 파일은 그 유저 세트에 대해서 기입해 가능합니다. 캐릭터가 데쉬 ``-''인 경우는, 기입할 수 없습니다.

3 번째의 캐릭터는, 다음의 해당하는 캐릭터입니다 :

S   캐릭터가 소유자 퍼미션의 일부이며, 파일이 실행 가능하지 않는지, 또는 디렉토리가 소유자에 의해 검색 가능하지 않고, set-user-id 비트가 설정되어 있는 경우.

S   캐릭터가 그룹 퍼미션의 일부이며, 파일이 실행 가능하지 않는지, 또는 디렉토리가 그룹에 의해 검색 가능하지 않고, set-group-id 비트가 설정되어 있는 경우.

T   캐릭터가 다른 사람의 퍼미션의 일부이며, 파일이 실행 가능하지 않는지, 또는 디렉토리가 다른 사람의 것에 의해 검색 가능하지 않고, ``sticky'' (S_ISVTX) 비트가 설정되어 있는 경우.

s   캐릭터가 소유자 퍼미션의 일부이며, 파일이 실행 가능한가, 또는 디렉토리가 소유자에 의해 검색 가능하고, set-user-id 비트가 설정되어 있는 경우.

s   캐릭터가 그룹 퍼미션의 일부이며, 파일이 실행 가능한가, 또는 디렉토리가 그룹에 의해 검색 가능하고, set-group-id 비트가 설정되어 있는 경우.

t   캐릭터가 다른 사람의 퍼미션의 일부이며, 파일이 실행 가능한가, 또는 디렉토리가 다른 사람의 것에 의해 검색 가능하고, ``sticky'' (S_ISVTX) 비트가 설정되어 있는 경우.

x   파일이 실행 가능한가, 또는 디렉토리가 검색 가능.

-   위의 어느 것에도 해당하지 않는다.

마지막 캐릭터는 inode 에 결합된 다른 액세스 제어 방법이 무엇인가 있는 경우는, 플러스 기호 ``+''입니다. 그 이외의 경우는, 캐릭터는 스페이스가 됩니다.

반환값
strmode() 함수는, 항상 0 을 돌려줍니다.

참조
chmod(1), find(1), stat(2), getmode(3), setmode(3)

역사
strmode() 함수는 4.4BSD 그리고 처음으로 등장했습니다.