AIX에서 6비트 파일 모드를 어떻게 디코딩합니까?

AIX에서 6비트 파일 모드를 어떻게 디코딩합니까?

Ruby 메소드에 의해 반환된 AIX 파일의 파일 모드 stat는 6비트입니다.

ruby -e 'puts File::stat("testfile_upload-003").mode.to_s(8)'
100644

FWIW, Ruby 버전은 ruby ​​​​2.1.6p336 (2015-04-13 revision 50298) [powerpc-aix6.1.0.0]이지만 Perl은 정확히 동일한 값을 반환합니다.

perl -e 'use File::stat; printf "%o\n", stat("testfile_upload-003")->mode;'
100644

istat다음은 동일한 파일의 출력입니다.

# /bin/istat testfile_upload-003
Inode 33780 on device 10/7      File
Protection: rw-r--r--
Owner: 0(root)          Group: 0(system)
Link count:   2         Length 51200 bytes

Last updated:   Thu Mar  9 01:13:24 CST 2017
Last modified:  Wed Mar  8 11:52:52 CST 2017
Last accessed:  Wed Mar  8 11:52:52 CST 2017

편집하다:chmod 매뉴얼 페이지그리고이스타매뉴얼 페이지에서는 5번째 및 6번째 숫자에 대한 정보를 제공하지 않습니다.

그리고 파일에 대한 멋진 setuid 비트를 설정하지 않고 다음을 수행합니다.

# ls -l testfile_upload-003
-rw-r--r--    2 root     system        51200 Mar 08 11:52 testfile_upload-003

답변1

다음에서 찾았습니다 <sys/mode.h>.

/*
 *      (stat) st_mode bit values
 */

#define _S_IFMT         0170000         /* type of file */
#define   _S_IFREG      0100000         /*   regular */
#define   _S_IFDIR      0040000         /*   directory */
#define   _S_IFBLK      0060000         /*   block special */
#define   _S_IFCHR      0020000         /*   character special */
#define   _S_IFIFO      0010000         /*   fifo */

앞에 "1"이 붙으면 일반 파일을 나타냅니다.

디렉토리에는 240755, '4'는 디렉토리를 의미하고, '2'는 "일반 파일이 아님"을 의미합니다.

답변2

*NIX 시스템(AIX는 UNIX이지만 Linux, Solaris 및 BSD에도 있음)에는 16비트 긴 파일 모드 정보가 있습니다. 특수 비트(setuid, setgid, t-git 또는 Sticky)용 3비트, 권한용 9비트(소유자 rwx, 그룹 rwx, 기타 rwx - rwx는 읽기-쓰기-실행을 의미함) 표준은 8진 표현을 가능하게 합니다(때때로 쓰여지듯이 앞에 0이 없음). 여기서 처음 한두 개는 파일 유형이고, 다음은 특수 비트이고, 마지막 세 개는 권한입니다.

예(2진수 3개 = 8진수 1개):

Binary 1000000111101101 = Octal 100755 (-rwxr-xr-x)
Binary 0100000110100100 = Octal 40644  (drw-r--r--)
Binary 1010000111111111 = Octal 120777 (lrwxrwxrwx)

The previous examples in parts:

Binary 1/000 000 111/101/101 = Octal 10 0 755 = -rwxr-xr-x
Binary 0/100 000 110/100/100 = Octal 4 0 644  = drw-r--r--
Binary 1/010 000 111/111/111 = Octal 12 0 777 = lrwxrwxrwx

파일 유형:

  • 10 (-) = 일반 파일
  • 4 (d) = 목차
  • 12(l) = 심볼릭 링크
  • 1 (p) = FIFO(명명된 파이프)
  • 14(s) = 소켓
  • 2 (c) = 문자 특수 파일(예: TTY, 예: /dev/tty1)
  • 6 (b) = 특수 파일 차단(예: HDD, 예: /dev/sda)
  • 다른 시스템에는 더 많은 것들이 있습니다(예: Solaris D = 도어, P = 포트 등).

관련 정보