inode(7) - wariua/manpages-ko GitHub Wiki

NAME

inode - 파일 μ•„μ΄λ…Έλ“œ 정보

DESCRIPTION

각 νŒŒμΌμ—λŠ” κ·Έ νŒŒμΌμ— λŒ€ν•œ 메타데이터λ₯Ό 담은 μ•„μ΄λ…Έλ“œ(inode)κ°€ μžˆλ‹€. stat ꡬ쑰체λ₯Ό λ°˜ν™˜ν•˜λŠ” stat(2)을 (λ˜λŠ” μœ μ‚¬ ν˜ΈμΆœμ„) μ΄μš©ν•΄μ„œ, λ˜λŠ” statx ꡬ쑰체λ₯Ό λ°˜ν™˜ν•˜λŠ” statx(2)λ₯Ό μ΄μš©ν•΄μ„œ μ‘μš©μ—μ„œ κ·Έ 메타정보λ₯Ό 얻을 수 μžˆλ‹€.

λ‹€μŒμ€ 일반적으둜 파일 μ•„μ΄λ…Έλ“œ 내에 μžˆκ±°λ‚˜ 연계돼 μžˆλŠ” μ •λ³΄λ“€μ˜ λͺ©λ‘μ΄λ‹€. stat(2) 및 statx(2)μ—μ„œ λ°˜ν™˜ν•˜λŠ” λŒ€μ‘ ꡬ쑰체 ν•„λ“œμ˜ 이름이 μ ν˜€ μžˆλ‹€.

μ•„μ΄λ…Έλ“œκ°€ μœ„μΉ˜ν•œ μž₯치

stat.st_dev. statx.stx_dev_minor 및 statx.stx_dev_major.

각 μ•„μ΄λ…Έλ“œλŠ” (μ—°κ΄€λœ 파일과 λ§ˆμ°¬κ°€μ§€λ‘œ) μ–΄λ–€ μž₯치 μƒμ˜ 파일 μ‹œμŠ€ν…œμ— μœ„μΉ˜ν•œλ‹€. (일반적 μž₯치 λΆ„λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ”) μ£Ό ID와 (κ·Έ 일반 λΆ„λ₯˜ λ‚΄μ—μ„œ νŠΉμ • μΈμŠ€ν„΄μŠ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ”) λΆ€ ID의 μ‘°ν•©μœΌλ‘œ κ·Έ μž₯치λ₯Ό μ‹λ³„ν•œλ‹€.

μ•„μ΄λ…Έλ“œ 번호

stat.st_ino. statx.stx_ino.

파일 μ‹œμŠ€ν…œμ˜ 각 νŒŒμΌμ—λŠ” κ³ μœ ν•œ μ•„μ΄λ…Έλ“œ λ²ˆν˜Έκ°€ μžˆλ‹€. μ•„μ΄λ…Έλ“œ λ²ˆν˜ΈλŠ” ν•œ 파일 μ‹œμŠ€ν…œ λ‚΄μ—μ„œλ§Œ μœ μΌμ„±μ΄ 보μž₯λœλ‹€. (즉 λ‹€λ₯Έ 파일 μ‹œμŠ€ν…œμ—μ„œ 같은 μ•„μ΄λ…Έλ“œ 번호λ₯Ό μ“Έ 수 있으며, κ·Έλž˜μ„œ ν•˜λ“œ 링크가 파일 μ‹œμŠ€ν…œ 경계λ₯Ό λ„˜μ–΄κ°ˆ 수 μ—†λ‹€.) 이 ν•„λ“œλŠ” 파일의 μ•„μ΄λ…Έλ“œ 번호λ₯Ό λ‹΄κ³  μžˆλ‹€.

파일 μ’…λ₯˜ 및 λͺ¨λ“œ

stat.st_mode. statx.stx_mode.

μ•„λž˜μ˜ 파일 μ’…λ₯˜ 및 λͺ¨λ“œ μ„€λͺ… μ°Έκ³ .

링크 수

stat.st_nlink. statx.stx_nlink.

이 ν•„λ“œλŠ” νŒŒμΌμ— λŒ€ν•œ ν•˜λ“œ 링크 수λ₯Ό λ‹΄κ³  μžˆλ‹€. link(2)λ₯Ό μ¨μ„œ κΈ°μ‘΄ νŒŒμΌμ— λŒ€ν•œ 링크λ₯Ό μΆ”κ°€λ‘œ λ§Œλ“ λ‹€.

μ‚¬μš©μž ID

stat.st_uid. statx.stx_uid.

이 ν•„λ“œλŠ” 파일 μ†Œμœ μžμ˜ μ‚¬μš©μž IDλ₯Ό κΈ°λ‘ν•œλ‹€. 파일이 μƒˆλ‘œ 생성될 λ•Œ 파일 μ‚¬μš©μž IDλŠ” 생성 ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€νš¨ μ‚¬μš©μž IDλ‹€. chown(2)을 μ¨μ„œ 파일의 μ‚¬μš©μž IDλ₯Ό λ°”κΏ€ 수 μžˆλ‹€.

κ·Έλ£Ή ID

stat.st_gid. statx.stx_gid.

μ•„μ΄λ…Έλ“œμ— 파일 κ·Έλ£Ή μ†Œμœ μžμ˜ IDλ₯Ό 기둝해 λ‘”λ‹€. 파일이 μƒˆλ‘œ 생성될 λ•Œ 파일 κ·Έλ£Ή IDλŠ” λΆ€λͺ¨ 디렉터리에 set-group-ID λΉ„νŠΈκ°€ 섀정돼 μžˆλŠ”μ§€ 여뢀에 따라 λΆ€λͺ¨ λ””λ ‰ν„°λ¦¬μ˜ κ·Έλ£Ή IDκ±°λ‚˜ 호좜 ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€νš¨ κ·Έλ£Ή IDλ‹€. (μ•„λž˜ μ°Έκ³ .) chown(2)을 μ¨μ„œ 파일의 κ·Έλ£Ή IDλ₯Ό λ°”κΏ€ 수 μžˆλ‹€.

이 μ•„μ΄λ…Έλ“œκ°€ λ‚˜νƒ€λ‚΄λŠ” μž₯치

stat.st_rdev. statx.stx_rdev_minor 및 statx.stx_rdev_major.

이 파일이 (μ•„μ΄λ…Έλ“œκ°€) μž₯치λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²½μš°μ— μ•„μ΄λ…Έλ“œμ— κ·Έ μž₯치의 μ£Ό ID와 λΆ€ IDλ₯Ό 기둝해 λ‘”λ‹€.

파일 크기

stat.st_size. statx.stx_size.

이 ν•„λ“œλŠ” (μ •κ·œ νŒŒμΌμ΄λ‚˜ 심볼릭 링크인 경우) 파일 크기λ₯Ό λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ•Œλ € μ€€λ‹€. 심볼릭 링크의 ν¬κΈ°λž€ λ‹΄κ³  μžˆλŠ” (μ’…λ£Œ 널 λ°”μ΄νŠΈ μ—†λŠ”) 경둜λͺ…μ˜ 길이닀.

μ„ ν˜Έ I/O 블둝 크기

stat.st_blksize. statx.stx_blksize.

이 ν•„λ“œλŠ” 효율적인 파일 μ‹œμŠ€ν…œ I/Oλ₯Ό μœ„ν•œ "μ„ ν˜Έ" 블둝 크기λ₯Ό μ•Œλ € μ€€λ‹€. (더 μž‘μ€ 크기둜 νŒŒμΌμ— μ“°κΈ°λ₯Ό ν•˜λ©΄ λΉ„νš¨μœ¨μ μΈ 읽기-λ³€κ²½-재기둝이 일어날 수 μžˆλ‹€.)

νŒŒμΌμ— ν• λ‹Ήλœ 블둝 수

stat.st_blocks. statx.stx_blocks.

이 ν•„λ“œλŠ” νŒŒμΌμ— ν• λ‹Ήλœ 512λ°”μ΄νŠΈ λ‹¨μœ„ 블둝 수λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. (νŒŒμΌμ— ꡬ멍이 μžˆμ„ λ•ŒλŠ” st_size/512보닀 μž‘μ„ μˆ˜λ„ μžˆλ‹€.)

POSIX.1 ν‘œμ€€μ—μ„œλŠ” stat ꡬ쑰체의 st_blocks λ©€λ²„μ˜ λ‹¨μœ„λ₯Ό ν‘œμ€€μ—μ„œ κ·œμ •ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  μ–ΈκΈ‰ν•œλ‹€. λ§Žμ€ κ΅¬ν˜„μ—μ„œλŠ” κ·Έ 값이 512 λ°”μ΄νŠΈλ‹€. λͺ‡λͺ‡ μ‹œμŠ€ν…œμ—μ„œλŠ” 1024 같은 λ‹€λ₯Έ λ‹¨μœ„λ₯Ό μ“΄λ‹€. λ”λΆˆμ–΄ 파일 μ‹œμŠ€ν…œμ— 따라 κ·Έ λ‹¨μœ„κ°€ λ‹€λ₯Ό μˆ˜λ„ μžˆλ‹€.

졜근 μ ‘κ·Ό νƒ€μž„μŠ€νƒ¬ν”„ (atime)

stat.st_atime. statx.stx_atime.

파일의 졜근 μ ‘κ·Ό νƒ€μž„μŠ€νƒ¬ν”„λ‹€. execve(2), mknod(2), pipe(2), utime(2), (0 λ°”μ΄νŠΈλ³΄λ‹€ 큰) read(2) λ“±μ˜ 파일 접근에 μ˜ν•΄ 바뀐닀. mmap(2) 같은 λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λŠ” atime νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό κ°±μ‹ ν•  μˆ˜λ„ 있고 ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€.

일뢀 파일 μ‹œμŠ€ν…œ νƒ€μž…μ—μ„œλŠ” 파일 및/λ˜λŠ” 디렉터리 접근이 atime νƒ€μž„μŠ€νƒ¬ν”„ 갱신을 μΌμœΌν‚€μ§€ μ•Šλ„λ‘ 마운트 ν•˜λŠ” 게 κ°€λŠ₯ν•˜λ‹€. (mount(8)의 noatime, nodiratime, relatime, 그리고 mount(2)의 κ΄€λ ¨ 정보 μ°Έκ³ .) λ”λΆˆμ–΄ O_NOATIME ν”Œλž˜κ·Έλ₯Ό μ¨μ„œ νŒŒμΌμ„ μ—΄λ©΄ atime νƒ€μž„μŠ€νƒ¬ν”„κ°€ κ°±μ‹ λ˜μ§€ μ•ŠλŠ”λ‹€. open(2) μ°Έκ³ .

파일 생성 (탄생) νƒ€μž„μŠ€νƒ¬ν”„ (btime)

(stat ꡬ쑰체둜 λ°˜ν™˜λ˜μ§€ μ•ŠμŒ.) statx.stx_btime.

파일의 생성 νƒ€μž„μŠ€νƒ¬ν”„λ‹€. 파일 생성 μ‹œ μ„€μ •λ˜κ³  이후 λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€.

btime νƒ€μž„μŠ€νƒ¬ν”„λŠ” μ—­μ‚¬μ μœΌλ‘œ μœ λ‹‰μŠ€ μ‹œμŠ€ν…œμ— μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜μœΌλ©° ν˜„μž¬ λŒ€λΆ€λΆ„μ˜ λ¦¬λˆ…μŠ€ 파일 μ‹œμŠ€ν…œλ“€μ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

졜근 μˆ˜μ • νƒ€μž„μŠ€νƒ¬ν”„ (mtime)

stat.st_mtime. statx.stx_mtime.

파일의 졜근 μˆ˜μ • νƒ€μž„μŠ€νƒ¬ν”„λ‹€. mknod(2), truncate(2), utime(2), (0 λ°”μ΄νŠΈλ³΄λ‹€ 큰) write(2) λ“±μ˜ 파일 변경에 μ˜ν•΄ 바뀐닀. λ˜ν•œ λ””λ ‰ν„°λ¦¬μ˜ mtime νƒ€μž„μŠ€νƒ¬ν”„λŠ” κ·Έ 디렉터리 λ‚΄μ˜ 파일 생성 및 μ‚­μ œμ— μ˜ν•΄ 바뀐닀. μ†Œμœ μž, κ·Έλ£Ή, ν•˜λ“œ 링크 수, λͺ¨λ“œμ˜ 변경에 μ˜ν•΄μ„  mtime νƒ€μž„μŠ€νƒ¬ν”„κ°€ λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€.

졜근 μƒνƒœ λ³€κ²½ νƒ€μž„μŠ€νƒ¬ν”„ (ctime)

stat.st_ctime. statx.stx_ctime.

파일의 졜근 μƒνƒœ λ³€κ²½ νƒ€μž„μŠ€νƒ¬ν”„λ‹€. μ•„μ΄λ…Έλ“œ 정보(즉 μ†Œμœ μž, κ·Έλ£Ή, 링크 수, λͺ¨λ“œ λ“±) 기둝 λ‚΄μ§€ 섀정에 μ˜ν•΄ 바뀐닀.

νƒ€μž„μŠ€νƒ¬ν”„ ν•„λ“œλ“€μ€ 에포크(Epoch), 즉 1970-01-01 00:00:00 +0000, UTCλ₯Ό 영점으둜 ν•΄μ„œ (time(7) μ°Έκ³ ) μΈ‘μ •ν•œ μ‹œκ°„μ„ μ•Œλ € μ€€λ‹€.

XFS, JFS, Btrfs, ext4(λ¦¬λˆ…μŠ€ 2.6.23λΆ€ν„°)μ—μ„œ λ‚˜λ…Έμ΄ˆ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μ§€μ›ν•œλ‹€. ext2, ext3, Reiserfsμ—μ„œλŠ” λ‚˜λ…Έμ΄ˆ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. λ‚˜λ…Έμ΄ˆ μ •λ°€λ„λ‘œ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό λ°˜ν™˜ν•  수 μžˆλ„λ‘ stat 및 statx ꡬ쑰체의 νƒ€μž„μŠ€νƒ¬ν”„ ν•„λ“œλ“€μ€ λ‚˜λ…Έμ΄ˆ ν•­λͺ©μ„ ν¬ν•¨ν•œ ꡬ쑰체둜 μ •μ˜λΌ μžˆλ‹€. μžμ„Έν•œ 건 stat(2) 및 statx(2)λ₯Ό 보라. μ΄ˆλ³΄λ‹€ μž‘μ€ λ‹¨μœ„μ˜ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” 파일 μ‹œμŠ€ν…œμ—μ„œλŠ” stat 및 statx ꡬ쑰체의 λ‚˜λ…Έμ΄ˆ ν•„λ“œκ°€ 0 κ°’μœΌλ‘œ λ°˜ν™˜λœλ‹€.

파일 μ’…λ₯˜ 및 λͺ¨λ“œ

stat.st_mode ν•„λ“œλŠ” (statx(2)인 경우 statx.stx_mode ν•„λ“œλŠ”) 파일 μ’…λ₯˜ 및 λͺ¨λ“œλ₯Ό λ‹΄κ³  μžˆλ‹€.

POSIXμ—μ„œλŠ” stat.st_modeμ—μ„œ 마슀크 S_IFMT(μ•„λž˜ μ°Έκ³ )에 ν•΄λ‹Ήν•˜λŠ” λΉ„νŠΈλ“€μ„ 파일 μ’…λ₯˜λ‘œ, 마슀크 07777에 ν•΄λ‹Ήν•˜λŠ” 12λΉ„νŠΈλ₯Ό 파일 λͺ¨λ“œ λΉ„νŠΈλ‘œ, 그리고 λ§ˆμ§€λ§‰ 9λΉ„νŠΈ(0777)λ₯Ό 파일 κΆŒν•œ λΉ„νŠΈλΌκ³  λΆ€λ₯Έλ‹€.

파일 μ’…λ₯˜λ‘œ λ‹€μŒ 마슀크 값듀이 μ •μ˜λΌ μžˆλ‹€.

S_IFMT 0170000 파일 μ’…λ₯˜ λΉ„νŠΈ ν•„λ“œ λΉ„νŠΈ 마슀크
S_IFSOCK 0140000 μ†ŒμΌ“
S_IFLNK 0120000 심볼릭 링크
S_IFREG 0100000 μ •κ·œ 파일
S_IFBLK 0060000 블둝 μž₯치
S_IFDIR 0040000 디렉터리
S_IFCHR 0020000 문자 μž₯치
S_IFIFO 0010000 FIFO

κ·Έλž˜μ„œ (예λ₯Ό λ“€μ–΄) μ •κ·œ νŒŒμΌμΈμ§€ ν™•μΈν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆλ‹€.

stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
    /* μ •κ·œ 파일 처리 */
}

μœ„ ν˜•νƒœμ˜ 검사가 ν”ν•˜κΈ° λ•Œλ¬Έμ— POSIXμ—μ„œλŠ” st_mode의 파일 μ’…λ₯˜ 검사λ₯Ό μ •ν™•νžˆ μž‘μ„±ν•  수 μžˆλ„λ‘ ν•΄ μ£ΌλŠ” 맀크둜λ₯Ό μΆ”κ°€λ‘œ μ •μ˜ν•œλ‹€.

S_ISREG(m) μ •κ·œ νŒŒμΌμΈκ°€?
S_ISDIR(m) 디렉터리인가?
S_ISCHR(m) 문자 μž₯μΉ˜μΈκ°€?
S_ISBLK(m) 블둝 μž₯μΉ˜μΈκ°€?
S_ISFIFO(m) FIFO(이름 μžˆλŠ” νŒŒμ΄ν”„)인가?
S_ISLNK(m) 심볼릭 링크인가? (POSIX.1-1996μ—λŠ” μ—†μŒ.)
S_ISSOCK(m) μ†ŒμΌ“μΈκ°€? (POSIX.1-1996μ—λŠ” μ—†μŒ.)

κ·Έλž˜μ„œ μ•žμ˜ μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆλ‹€.

stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {
    /* μ •κ·œ 파일 처리 */
}

μœ„ 파일 μ’…λ₯˜ 검사 맀크둜 λŒ€λ‹€μˆ˜λŠ” κΈ°λŠ₯ 확인 맀크둜 _BSD_SOURCE (glibc 2.19 및 이전), _SVID_SOURCE (glibc 2.19 및 이전), _DEFAULT_SOURCE (glibc 2.20 및 이후) 쀑 ν•˜λ‚˜λΌλ„ μ •μ˜λΌ 있으면 κ·Έ μ •μ˜κ°€ μ œκ³΅λœλ‹€. μΆ”κ°€λ‘œ _XOPEN_SOURCEκ°€ μ •μ˜λΌ 있으면 S_IFSOCK 및 S_ISSOCK()을 λΉΌκ³  μœ„μ˜ 맀크둜 μ „μ²΄μ˜ μ •μ˜κ°€ μ œκ³΅λœλ‹€.

S_IFSOCK μ •μ˜λŠ” _XOPEN_SOURCEλ₯Ό 500 μ΄μƒμ˜ κ°’μœΌλ‘œ μ •μ˜ν•˜κ±°λ‚˜ (glibc 2.24λΆ€ν„°), _XOPEN_SOURCE와 _XOPEN_SOURCE_EXTENDED λͺ¨λ‘λ₯Ό μ •μ˜ν•΄μ„œ λ“œλŸ¬λ‚Ό 수 μžˆλ‹€.

S_ISSOCK() μ •μ˜λŠ” κΈ°λŠ₯ 확인 맀크둜 _BSD_SOURCE (glibc 2.19 및 이전), DEFAULT_SOURCE (glibc 2.20 및 이후), 500 이상 κ°’μœΌλ‘œ _XOPEN_SOURCE, 200112L 이상 κ°’μœΌλ‘œ _POSIX_C_SOURCE 쀑 ν•˜λ‚˜λΌλ„ μ •μ˜λΌ μžˆκ±°λ‚˜ _XOPEN_SOURCE와 _XOPEN_SOURCE_EXTENDED λͺ¨λ‘κ°€ μ •μ˜λΌ 있으면 λ“œλŸ¬λ‚œλ‹€.

st_mode ν•„λ“œμ˜ 파일 λͺ¨λ“œ 뢀뢄을 μœ„ν•΄ λ‹€μŒ 마슀크 값듀이 μ •μ˜λΌ μžˆλ‹€.

S_ISUID 04000 set-user-ID λΉ„νŠΈ (execve(2) μ°Έκ³ )
S_ISGID 02000 set-group-ID λΉ„νŠΈ (μ•„λž˜ μ°Έκ³ )
S_ISVTX 01000 μŠ€ν‹°ν‚€ λΉ„νŠΈ (μ•„λž˜ μ°Έκ³ )
S_IRWXU 00700 μ†Œμœ μžκ°€ 읽기, μ“°κΈ°, μ‹€ν–‰ κΆŒν•œ 가짐
S_IRUSR 00400 μ†Œμœ μžκ°€ 읽기 κΆŒν•œ 가짐
S_IWUSR 00200 μ†Œμœ μžκ°€ μ“°κΈ° κΆŒν•œ 가짐
S_IXUSR 00100 μ†Œμœ μžκ°€ μ‹€ν–‰ κΆŒν•œ 가짐
S_IRWXG 00070 그룹이 읽기, μ“°κΈ°, μ‹€ν–‰ κΆŒν•œ 가짐
S_IRGRP 00040 그룹이 읽기 κΆŒν•œ 가짐
S_IWGRP 00020 그룹이 μ“°κΈ° κΆŒν•œ 가짐
S_IXGRP 00010 그룹이 μ‹€ν–‰ κΆŒν•œ 가짐
S_IRWXO 00007 (그룹에 μ†ν•˜μ§€ μ•ŠλŠ”) 기타가 읽기, μ“°κΈ°, μ‹€ν–‰ κΆŒν•œ 가짐
S_IROTH 00004 기타가 읽기 κΆŒν•œ 가짐
S_IWOTH 00002 기타가 μ“°κΈ° κΆŒν•œ 가짐
S_IXOTH 00001 기타가 μ‹€ν–‰ κΆŒν•œ 가짐

set-group-ID λΉ„νŠΈ(S_ISGID)μ—λŠ” μ—¬λŸ¬ κ°€μ§€ νŠΉμˆ˜ν•œ μ‚¬μš© 방식이 μžˆλ‹€. λ””λ ‰ν„°λ¦¬μ—μ„œλŠ” κ·Έ 디렉터리에 BSD λ™μž‘ 방식이 μ“°μ—¬μ•Ό 함을 λ‚˜νƒ€λ‚Έλ‹€. 즉 κ±°κΈ°μ„œ μƒμ„±λ˜λŠ” νŒŒμΌλ“€μ΄ 호좜 ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€νš¨ κ·Έλ£Ή IDκ°€ μ•„λ‹ˆλΌ λ””λ ‰ν„°λ¦¬μ˜ κ·Έλ£Ή IDλ₯Ό λ¬Όλ €λ°›μœΌλ©°, κ±°κΈ°μ„œ μƒμ„±λ˜λŠ” 디렉터리에도 S_ISGID λΉ„νŠΈκ°€ μ„€μ •λœλ‹€. μ‹€ν–‰ νŒŒμΌμ—μ„œ set-group-ID λΉ„νŠΈλŠ” νŒŒμΌμ„ μ‹€ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€νš¨ κ·Έλ£Ή IDκ°€ execve(2)에 기술된 λŒ€λ‘œ λ°”λ€Œκ²Œ ν•œλ‹€. κ·Έλ£Ή μ‹€ν–‰ λΉ„νŠΈ(S_IXGRP)κ°€ 섀정돼 μžˆμ§€ μ•Šμ€ νŒŒμΌμ—μ„œ set-group-ID λΉ„νŠΈλŠ” κ°•μ œμ  파일/λ ˆμ½”λ“œ 락킹을 λ‚˜νƒ€λ‚Έλ‹€.

λ””λ ‰ν„°λ¦¬μ˜ μŠ€ν‹°ν‚€ λΉ„νŠΈ(S_ISVTX)λŠ” κ·Έ 디렉터리 μ•ˆμ˜ νŒŒμΌμ„ 파일 μ†Œμœ μž, 디렉터리 μ†Œμœ μž, 특ꢌ ν”„λ‘œμ„ΈμŠ€λ§Œ 이름을 λ°”κΎΈκ±°λ‚˜ μ‚­μ œν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€.

CONFORMING TO

<sys/stat.h>μ—μ„œ blkcnt_t λ‚΄μ§€ blksize_t νƒ€μž…μ˜ μ •μ˜λ₯Ό μ–»μ–΄μ•Ό ν•œλ‹€λ©΄ (μ–΄λ–€ 헀더 νŒŒμΌλ„ ν¬ν•¨ν•˜κΈ° 전에) _XOPEN_SOURCEλ₯Ό 500 이상 κ°’μœΌλ‘œ μ •μ˜ν•˜λ©΄ λœλ‹€.

POSIX.1-1990μ—μ„œλŠ” S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX μƒμˆ˜λ₯Ό κΈ°μˆ ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ λŒ€μ‹  S_ISDIR() λ“±μ˜ 맀크둜 μ‚¬μš©μ€ λͺ…μ„Έν–ˆλ‹€. S_IF* μƒμˆ˜λ“€μ€ POSIX.1-2001 및 이후에 μ‘΄μž¬ν•œλ‹€.

S_ISLNK() 및 S_ISSOCK() λ§€ν¬λ‘œλŠ” POSIX.1-1996μ—λŠ” μ—†κ³  POSIX.1-2001μ—λŠ” μ‘΄μž¬ν•œλ‹€. μ „μžλŠ” SVID 4μ—μ„œ 온 것이고 ν›„μžλŠ” SUSv2μ—μ„œ 온 것이닀.

μœ λ‹‰μŠ€ V7(및 이후 μ‹œμŠ€ν…œλ“€)μ—λŠ” S_IREAD, S_IWRITE, S_IEXECκ°€ μžˆμ—ˆλ˜ 반면 POSIXμ—λŠ” λ™μ˜μ–΄ S_IRUSR, S_IWUSR, S_IXUSRκ°€ μžˆλ‹€.

NOTES

μ»€λ„μ—μ„œ μžλ™ μƒμ„±ν•˜λŠ” 가상 νŒŒμΌλ“€μ— λŒ€ν•΄ 컀널이 μ•Œλ € μ£ΌλŠ” 파일 크기(stat.st_size, statx.stx_size)κ°€ μ •ν™•ν•˜μ§€ μ•Šλ‹€. 예λ₯Ό λ“€μ–΄ /proc λ””λ ‰ν„°λ¦¬μ˜ λ§Žμ€ νŒŒμΌλ“€μ— λŒ€ν•΄ 0 값이 λ°˜ν™˜λ˜λŠ” 반면 /sys의 μ—¬λŸ¬ νŒŒμΌλ“€μ— λŒ€ν•΄μ„  파일 λ‚΄μš©μ΄ 더 μž‘μ€λ°λ„ 크기가 4096 λ°”μ΄νŠΈλΌκ³  λ‚˜μ˜¨λ‹€. 그런 νŒŒμΌλ“€μ—μ„œλŠ” κ·Έλƒ₯ μ΅œλŒ€ν•œμœΌλ‘œ 읽어 듀이면 (그리고 κ·Έ κ²°κ³Όλ₯Ό λ¬Έμžμ—΄λ‘œ 해석해야 ν•˜λ©΄ λ°˜ν™˜ 버퍼 끝에 '\0'을 덧뢙여 μ£Όλ©΄) λœλ‹€.

SEE ALSO

stat(1), stat(2), statx(2), symlink(7)


2019-05-09

⚠️ **GitHub.com Fallback** ⚠️