![setuid 및 8진수 4000을 사용한 파일 권한](https://linux55.com/image/40139/setuid%20%EB%B0%8F%208%EC%A7%84%EC%88%98%204000%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%9C%20%ED%8C%8C%EC%9D%BC%20%EA%B6%8C%ED%95%9C.png)
파일을 설정할 때 setuid
터미널에서 다음을 수행합니다.
chmod u+s filename
이것은 훌륭하게 작동합니다. 그러나 8진수 4000은 항상 setuid와 연결됩니다(책 등에서).
나는 파일 권한, umask, setuid 등의 개념을 (어느 정도) 이해 chmod
하지만 8진수 4000과 setuid 사이의 관계를 여전히 파악할 수 없습니다. 설명 해주십시오.
답변1
이것은 단지 합의일 뿐입니다. 모든 상수 식별자는 Linux 소스 코드의 숫자와 연결됩니다. 그 중 일부는 커널의 첫 번째 버전에서 매우 오래된 것인 반면, 일부는 최근에 추가되었습니다.
"setuid"와 관련된 상수는 S_ISUID
다음에 정의되어 있습니다./uapi/linux/stat.h 포함, 많은 Linux 헤더 중 하나입니다. 임의의 값으로 정의할 수 있지만 우연히 04000이 됩니다.
@steeldriver가 언급했듯이 man 2 stat
파일 권한에 사용되는 다양한 상수의 의미를 이해하는 데 도움이 될 수 있습니다.
S_IFMT 0170000 bit mask for the file type bit fields
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 FIFO
S_ISUID 0004000 set-user-ID bit
S_ISGID 0002000 set-group-ID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
S_IRWXU 00700 mask for file owner permissions
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRWXG 00070 mask for group permissions
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IRWXO 00007 mask for permissions for others (not in group)
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
이 예에서는 상수와 해당 값뿐만 아니라 이를 선택하는 방법도 확인할 수 있습니다. 개발자/디자이너가 상수를 선택했으며 다음을 수행할 수 있습니다.결합하다그들을. 예를 들어 S_ISUID and S_IRWXU and S_IRUSR and S_IRGRP = 04740
권한은 04740
정확히 "소유자에 대한 setuid 및 모든 권한과 소유 그룹에 대한 읽기 권한"을 의미합니다.
답변2
대부분의 Unix 계열 시스템에서 파일, 디렉터리 또는 기타 파일 시스템 개체는 다음과 같이 표시됩니다.인덱스 노드, 여기에는모델, 개체 유형과 일부 권한을 설명합니다. 그 설명은POSIXstat.h.
The following symbolic names for the values of type mode_t shall also be defined:
File type:
S_IFREG
Regular.
S_IFDIR
Directory.
S_IFLNK
Symbolic link.
File mode bits:
S_IRWXU
Read, write, execute/search by owner.
S_IRUSR
Read permission, owner.
S_IWUSR
Write permission, owner.
S_IXUSR
Execute/search permission, owner.
...
S_ISUID
Set-user-ID on execution.
S_ISGID
Set-group-ID on execution.
...
정수 상수에 대한 기호 이름입니다. S_IFREG
0100000입니다. S_IRUSR
000400입니다. S_ISUID
004000입니다. 사용하기 쉽도록 8진수로 되어 있습니다. 파일 모드 비트는 논리적으로 각각 3비트씩 4개 그룹으로 볼 수 있습니다.
여기에서 내 파일 형식 비트와 파일 모드 비트를 볼 수 있습니다 .profile
.
$ perl -e 'printf("%#o\n", (stat(".profile"))[2]);'
0100644
사용자는 시스템 chmod
호출(정수 인수 사용(S_* 기호 상수 중 일부 사용)) 또는 유틸리티 chmod
(정수 또는 기호 이름(예: u+r
) 사용)을 사용할 수 있습니다.
실제로 모드 비트의 다양한 조합이 많지 않기 때문에 수십 년 동안 많은 Unix 사용자는 chmod
기호 이름 대신 숫자 인수를 사용하여 호출(시스템 호출 및 명령)을 수행해 왔습니다. 0755
"소유자가 쓰기 가능, 다른 사람이 읽기 및 실행 가능"을 의미합니다 . " 0644
소유자가 쓰기 가능, 다른 사람이 읽을 수 있음"은 04755
"setuid, 소유자가 쓰기 가능, 다른 사람이 읽고 실행 가능"을 의미합니다.
답변3
(영어) (debian jessy) 매뉴얼 페이지 chmod
: (내가 강조 표시함)
숫자 패턴은 1~4개의 8진수(0~7)로, 값이 4, 2, 1인 비트를 추가하여 계산됩니다. 생략된 숫자에는 앞에 0이 붙는 것으로 간주됩니다. 첫 번째 숫자는 설정된 사용자 ID(4)를 선택하고 그룹 ID(2)와 삭제 제한 또는 고정(1) 속성을 설정합니다. 두 번째 숫자는 파일을 소유한 사용자의 권한을 선택합니다(읽기(4), 쓰기(2) 및 실행(1)). 세 번째는 동일한 값을 사용하여 파일 그룹에 있는 다른 사용자의 권한을 선택합니다. 파일 그룹에 속하지 않은 다른 사용자가 동일한 값을 갖는 경우에 사용됩니다.
이것이 귀하의 질문에 대한 답변인지 확실하지 않지만 숫자가 의미하는 바를 설명합니다.
답변4
넌 합격할 수 있어이 링크상세 사항은setuid 세트 gid그리고끈끈한 비트.
Setuid, Setgid 및 Sticky Bits는 특정 사용자가 높은 권한으로 특정 프로그램을 실행할 수 있도록 허용하는 특별한 유형의 Unix/Linux 파일 권한 집합입니다.궁극적으로 파일에 설정된 권한에 따라 파일을 읽고, 쓰고, 실행할 수 있는 사용자가 결정됩니다. ~을 위한특별 허가, 이 숫자 앞에 다른 숫자를 추가합니다.4는 setuid, 2는 setgid, 1은 끈적한 비트입니다.. 다음 명령은 모두 동일합니다.
root@host [~]# chmod 4755 myfile
root@host [~]# chmod u+s myfile
root@host [~]# ls -l myfile
-rwsr-xr-x 1 test test 0 Mar 2 17:59 myfile
root@host [~]#
root@host [~]# chmod 2755 myfile
root@host [~]# chmod g+s myfile
root@host [~]# ls -l myfile
-rwxr-sr-x 1 test test 0 Mar 2 17:59 myfile
root@host [~]#
root@host [~]# chmod 1755 mydir
root@host [~]# chmod +t mydir
root@host [~]# ls -ld mydir
drwxr-sr-t 2 test test2 4096 Mar 2 19:59 mydir
root@host [~]#