umask를 적용하기 전에 각 파일 형식에 대한 일반적인 파일 권한은 무엇입니까

umask를 적용하기 전에 각 파일 형식에 대한 일반적인 파일 권한은 무엇입니까

umask를 적용하기 전에 모든 다른 파일 형식에 대한 일반 파일 권한을 지정하는 목록을 찾고 있습니다.

man 1p touch일반 파일의 기본값은 다음과 같습니다 .

    S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

또한 디렉토리와 심볼릭 링크의 기본값이 다음과 같다고 추측할 위험이 있습니다.

   S_IRWXU | S_IRWXG | S_IRWXO

stat.h그러나 매뉴얼 페이지에서는 소켓, FIFO, 블록 장치 및 Char 장치에 대한 기본 권한이 무엇인지 찾을 수 없습니다 mknod.h. mknod일반 파일과 동일합니까? 아니면 이것을 설명하는 매뉴얼 페이지가 없는 걸까요?

답변1

꽤 명확하게 이해하신 것 같습니다. 더 자세히 논의해 보세요.여기. 당신이 놓쳤을 수도 있는 것은 매뉴얼 페이지에서 touch(1)에 대한 명령문을 찾았 creat(2)지만 (심볼릭 링크를 제외하고) 에 대한 명령문을 찾았다는 것입니다.시스템 수준기본값 ​​- 각 프로그램에는 고유한 기본값이 있습니다. 전부는 아니지만 대부분의 프로그램이 동일한 규칙을 따르는 경우가 있습니다.

답변2

파일의 권한은 다음 umask과 같습니다.open파일이 처음 생성될 때 호출됩니다. 존재하다fopen, 권한은 0666으로 설정되지만 여기에는 스트림 I/O가 포함됩니다. 파일을 생성하는 응용 프로그램에 따라 낮은 수준의 열기/읽기/쓰기를 사용할 수도 있고 사용하지 않을 수도 있습니다.

특수장비를 사용하게 됩니다mknod, 다시 애플리케이션이 초기 권한을 지정하도록 합니다. 예를 들어,mkfifoLinux 및 Linux에서 사용되는 명령OSX권한을 설정하는 옵션이 있습니다. 다시 말하지만, [mknod][6]명령에는 권한 설정 옵션이 있습니다. 이에 대한 매뉴얼은 초기 권한을 지정하지 않습니다.

흥미롭게도 POSIX에 대한 설명은 다음과 같습니다.mkfifo또한 특정 권한 집합을 나타내지도 않습니다(설정 옵션을 문서화하는 것 제외).

구체성이 부족하기 때문에 이러한 명령의 일부 구현에서는 권한에 0666을 사용하지 않을 수 있지만 이 가정의 구현이 더 느슨하거나 더 제한적인지는 확실하지 않습니다. 내용을 확인해 보면 /dev일반적으로 전역적으로 쓰기 가능한 특수 장치를 찾을 수 없습니다. 이는 특정 구현에 의해 시행될 수 있습니다. 예를 들어, 특정 장치에구현하다허가, 그렇지 않을 수도 있습니다좋은 것, 그 내용은 (보통) 일반 파일과 다르며 "실행"되면 예상치 못한 일이 발생할 수 있기 때문입니다.

문서가 없습니다.전통적인액세스는 특정 구현을 관찰하는 것으로 제한되어야 합니다. 0666 권한은 실행 불가능한 파일에 널리 사용되지만 이것이 보편적인 사실이라는 보장은 없습니다.

허가심볼릭 링크반면에 이는 분명히 시스템별로 다릅니다. 이것symlink(7)Linux 매뉴얼 페이지에는 항상 0777이 표시됩니다.

Linux에서는 심볼릭 링크의 권한이 어떤 작업에도 사용되지 않습니다. 권한은 항상 0777(모든 사용자 클래스에 대해 읽기, 쓰기 및 실행)이며 변경할 수 없습니다.

BSD와 같은 다른 시스템에서는 이것이 가능할 수도 있습니다.FreeBSD그리고OSX해당 호출에 대한 문서 -h에도 불구하고 권한을 수정하는 데 사용할 수 있는 옵션을 문서화합니다 (symlink(2)FreeBSD,OSX)에는 초기 권한이 언급되어 있지 않습니다.

추가 자료:

답변3

대부분의 시스템에서 umask를 적용하기 전 디스크 파일에 대한 기본 권한은 일반 파일과 동일합니다. (0666)

관련 정보