chmod

CHMOD(2)                          리눅스 프로그래머 메뉴얼                         CHMOD(2)



이름
       chmod, fchmod - 파일의 권한 변경.

사용법
       #include <sys/types.h>
       #include <sys/stat.h>

       int chmod(const char *path, mode_t mode);
       int fchmod(int fildes, mode_t mode);

설명
       path나 fildes참조에 의해 주어진 파일의 모드를 바꾼다.

       모드는 아래와 같이 or'ing에의해 설명할 수 있다;


              S_ISUID   04000 실행을 위한 사용자 ID설정.

              S_ISGID   02000 실행을 위한 그룹 ID설정.

              S_ISVTX   01000 스티키 비트.

              S_IRUSR (S_IREAD)
                        04000 읽기.

              S_IWUSR (S_IWRITE)
                        02000 쓰기.

              S_IXUSR (S_IEXEC)
                        00100 실행/찾기

              S_IRGRP   00040 그룹에 의한 읽기

              S_IWGRP   00020 그룹에 의한 쓰기.


              S_IXGRP   00010 그룹에 의한 실행/찾기.


              S_IROTH   00004 다른사람이 읽기 00004 read by others

              S_IWOTH   00002 다른사람이 쓰기

              S_IXOTH   00001 다른사람이 실행/찾기.


       프로세스의 유효 UID는 0이거나 파일의 소유자와 같아야 한다.

       프로세스의 유효UID가 0이 아니고 파일의 그룹이 프로세스의 그룹 유효ID나 추가 그룹 ID중 하나가 다르다면 S_ISGID 비트가
       꺼질것이다. 하지만 이것은 에러를 유발하지 않는다.

       NFS파일 시스템에서 접근제어는 서버가 하기 때문에 권한 제한은 이미 열린 파일에 영 향을 줄것이지만, 열린 파일은 클라이언트가
       다루게 된다.

반환값
       성공시, 0을 반환한다. 실패시, -1을 반환하고 errno가 적절히 설정된다.

에러
       EPERM  유효 UID가 파일의 소유자와 같지 않고 0이 아니다.

       EROFS  파일이 read-only 파일시스템상에 위치했다.

       EFAULT path 가 접근 불가 공간에 있다.

       ENAMETOOLONG
              path 가 너무 길다.

       ENOENT 파일이 없다.

       ENOMEM 커널 메모리가 부족하다.

       ENOTDIR
              path가 디렉토리가 아니다.

       EACCES 찾기 권한이 없다.

       ELOOP  링크가 너무 많다.  path.

       EIO    I/O 에러.

       fchmod의 일반적인 에러는 아래와 같다:

       EBADF  파일 디스크립터 fildes가 적절하지 않다.

       EROFS  위 참고.

       EPERM  위 참고.

       EIO    위 참고.

호환
       chmod 명령은 SVr4, SVID, POSIX, X/OPEN, 4.4BSD에 따른다.  SVr4, EINTR, ENOLINK,
       EMULTIHOP는 반환하지만  ENOMEM은 반환하지 않는다.

       fchmod 명령은 4.4BSD와 SVr4에 따른다.

관련 항목
       open(2), chown(2), execve(2), stat(2)

역자
       ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29일



리눅스 2.0.32                        1997년 12월 10일                         CHMOD(2)