CHOWN(2)

명칭
chown, fchown, lchown - 파일의 소유자와 그룹을 변경한다

프로그램 라이브러리
libc

서식
<unistd.h> int chown(const char *path, uid_t owner, gid_t group) int fchown(int fd, uid_t owner, gid_t group) int lchown(const char *path, uid_t owner, gid_t group)

해설
path 그리고 지정된, 또는 fd 그리고 참조된 파일의 소유자 ID 및 그룹 ID 를, 인수로 지정되었다 owner 및 group (으)로 변경합니다. 파일의 소유자는, group 에 자신이 소속해 있는 임의의 그룹을 지정할 수 있습니다. 그러나, owner (을)를 변경할 수가 있는 것은 슈퍼 유저만입니다.

chown() (은)는, 슈퍼 유저에 의해 실행되는 경우를 들여다 봐, 파일상의 set-user-id 비트와 set-group-id 비트를 클리어 합니다. 이것은, set-user-id 혹은 set-group-id 된 프로그램이 우연히, 또는 장난으로 작성되는 것을 방지하기 (위해)때문입니다. chown() (은)는, 기호 연결을 더듬어, 링크 자체는 아니고 링크의 타겟으로 작용합니다.

fchown() 하지만 특히 편리한 것은, 파이르록킹프리미티브와 함께 사용할 때입니다 (flock(2) (을)를 참조).

lchown() (은)는, chown() 에 유사하고 있습니다만, 기호 연결을 더듬지 않습니다.

소유자 ID 또는 그룹 ID 로서 -1 를 지정했을 경우, 그 ID 는 변경되지 않습니다.

반환값

에러
chown() (와)과 lchown() (은)는, 다음의 경우에 처리를 실패해, 파일은 변경되지 않습니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 패스명 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    지정된 파일이 존재하지 않습니다.

[EACCES]
    지정된 패스에는, 검색이 허가되어 있지 않은 디렉토리가 포함되어 있습니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[EPERM]
    실효 유저 ID 가 슈퍼 유저이지 않습니다.

[EROFS]
    지정된 파일은 읽기 전용 파일 시스템상에 있습니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

[EIO]
    파일 시스템에 읽고 쓰기하고 있는 동안에 입출력 에러가 발생했습니다.

Fchown() (은)는 다음의 경우에 실패합니다.

[EBADF]
    fd 하지만 유효한 기술자가 아닙니다.

[EINVAL]
    fd 하지만 파일은 아니고 소켓을 참조하고 있습니다.

[EPERM]
    실효 유저 ID 가 슈퍼 유저가 아닙니다.

[EROFS]
    지정의 파일은 읽기 전용 파일 시스템에 상주하고 있습니다.

[EIO]
    파일 시스템에 읽고 쓰기하고 있는 동안에 입출력 에러가 발생했습니다.

관련 항목
chgrp(1), chmod(2), flock(2), chown(8)

표준
chown() 함수는 p1003.1-90 에 준거하고 있습니다.

역사
chown() 함수는 AT&T UNIX 그리고 등장했습니다. fchown() 함수는 4.2BSD 그리고 등장했습니다.

chown() 함수는 4.4BSD 그리고 기호 연결을 더듬도록(듯이) 변경되었습니다. lchown() 함수는, 기능의 결핍을 보충하기 위해서 FreeBSD 3.0 그리고 추가되었습니다.