끈끈한 비트는 어떻게 작동합니까?

끈끈한 비트는 어떻게 작동합니까?

수에이드

이것끈끈한 비트실행 가능한 프로그램에 적용되며 프로그램 실행이 완료된 후 시스템이 프로그램 이미지를 메모리에 유지하도록 표시합니다.

그러나 나는 그것이 메모리에 무엇을 저장하는지 모릅니다. 이런 경우에는 어떻게 볼 수 있나요?

답변1

이것은 아마도 사람들이 항상 엉망으로 만드는 가장 큰 불만 중 하나 일 것입니다. SUID/GUID 비트와 고정 비트는 완전히 다른 두 가지입니다.

그렇다면 man chmodSUID 및 끈적한 부분에 대해 읽을 수 있습니다. 이것매뉴얼 페이지는 여기에서 찾을 수 있습니다.게다가.

배경

발췌

이 편지들리더/라이터영향을 받는 사용자에 대한 파일 모드 비트 선택: 읽기(r), 쓰기(w), 실행(또는 디렉터리 검색)(x), 파일이 디렉터리이거나 이미 일부 사용자에 대한 실행 권한이 있는 경우에만 실행/검색(X ),실행 시 사용자 또는 그룹 ID 설정, 삭제 제한 플래그 또는 끈적한 비트(t).

SUID/GUID

위 매뉴얼 페이지에서 설명하려는 것은 사용자 8진수(rwx의 첫 번째 그룹)와 그룹 8진수(rwx의 두 번째 그룹) 모두에서 rwxrwxrwx의 x 비트가 차지하는 위치가 추가 상태를 취할 수 있다는 것입니다. 이 경우 파일이 실행될 때(단지 쉘 스크립트가 아닌 프로그램인 경우) 파일 소유자 또는 그룹의 권한으로 실행됩니다.

따라서 파일이 루트 소유이고 SUID 비트가 켜져 있으면 프로그램은 루트로 실행됩니다. 일반 사용자로 실행하더라도 마찬가지입니다. GUID 비트에도 동일한 내용이 적용됩니다.

발췌

SETUID 및 SETGID 비트

파일의 그룹 ID가 사용자의 유효 그룹 ID 또는 사용자의 보충 그룹 ID 중 하나와 일치하지 않는 경우, chmod는 사용자에게 적절한 권한이 없는 한 일반 파일에 대해 set-group-ID 비트를 지웁니다. 다른 제한 사항으로 인해 MODE 또는 RFILE의 set-user-ID 및 set-group-ID 비트가 무시될 수 있습니다. 이 동작은 기본 chmod 시스템 호출의 정책과 기능에 따라 달라집니다. 의심스러운 경우 기본 시스템 동작을 확인하세요.

chmod는 명시적으로 달리 지정하지 않는 한 디렉토리의 set-user-ID 및 set-group-ID 비트를 유지합니다. u+s 및 gs와 같은 기호 모드를 사용하여 이러한 비트를 설정하거나 지울 수 있으며, 숫자 모드를 사용하여 이러한 비트를 설정할 수 있지만 지울 수는 없습니다.

SUID/GUID 예시

suid/guid 없음- 약간만요rwxr-xr-x설정되었습니다.

$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid 및 사용자 실행 가능 비트 활성화(소문자 s)- 비트RWSR-XRX설정되었습니다.

$ chmod u+s b.pl 
$ ls -lt b.pl 
-rwsr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid가 활성화되고 실행 가능 비트가 비활성화됩니다(대문자 S).- 비트rwSr-xr-x설정되었습니다.

$ chmod u-x b.pl
$ ls -lt b.pl 
-rwSr-xr-x 1 root root 179 Jan  9 01:01 b.pl

GUID 및 그룹의 실행 가능 비트가 활성화되었습니다(소문자 s).- 비트rwxr-sr-x설정되었습니다.

$ chmod g+s b.pl
$  ls -lt b.pl 
-rwxr-sr-x 1 root root 179 Jan  9 01:01 b.pl

GUID 활성화 및 실행 가능 비트 비활성화(대문자 S)- 비트rwxr-Sr-x설정되었습니다.

$ chmod g-x b.pl
$  ls -lt b.pl 
-rwxr-Sr-x 1 root root 179 Jan  9 01:01 b.pl

끈끈한 비트

반면에 고정 비트는 t예를 들어 디렉토리 와 같이 표시됩니다 /tmp.

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

이 비트는 실제로 의미하는 바이므로 항상 "제한된 제거 비트"라고 불러야 합니다. 이 모드 비트가 활성화되면 사용자가 자신이 소유한 파일과 디렉터리만 삭제할 수 있는 디렉터리가 생성됩니다.

발췌

제한 제거 플래그 또는 고정 비트

제한된 제거 플래그 또는 고정 비트는 파일 형식에 따라 해석이 달라지는 단일 비트입니다. 디렉터리의 경우
권한이 없는 사용자가 파일이나 디렉터리를 소유하지 않는 한 디렉터리에서 파일을 삭제하거나 이름을 바꾸는 것을 방지합니다. 이를 디렉터리의 제한된 삭제 플래그라고 하며 일반적으로 /tmp와 같이 전역적으로 쓰기 가능한 디렉터리에서 찾을 수 있습니다. 일부 이전 시스템의 일반 파일의 경우 이 비트는 프로그램의 텍스트 이미지를 스왑 장치에 저장하여 런타임 시 더 빠르게 로드되도록 합니다. 이를 고정 비트라고 합니다.

답변2

"실행이 완료된 후 프로그램 이미지를 메모리에 유지하기 위해 실행 가능한 프로그램에 적용되는 고정 비트 표시 시스템입니다."

내 생각에 이것은 매우 오래된 정보이며 오늘날 대부분의 현대 유닉스에서는 무시되고 있습니다. Linux에서 고정 비트는 디렉터리에만 관련됩니다. 바라보다여기그리고 꽤 풍부한 콘텐츠위키피디아 기사.

어쨌든 이전 동작에서는 이미지(데이터가 아닌 "코드")가 가상 메모리에만 저장되었습니다. 일반적으로 실제 메모리에 저장되지 않고 스왑되어 다음에 더 빠르게 실행되었습니다.

답변3

끈끈한 비트란 무엇입니까?

고정 비트는 해당 디렉터리에 있는 파일의 소유자나 루트 사용자만 파일을 삭제하거나 이름을 바꿀 수 있도록 허용하는 디렉터리에 설정된 권한 비트입니다. 다른 사용자는 다른 사용자가 만든 파일을 삭제하는 데 필요한 권한이 없습니다.

이는 다른 사용자가 모든 권한을 가지고 있음에도 불구하고 중요한 폴더와 해당 내용(하위 디렉터리 및 파일)이 삭제되지 않도록 하기 위한 보안 조치입니다.

답변4

이 답변에서 내가 놓친 것은 디렉터리의 고정 비트가 설정 시 해당 디렉터리의 새 파일 그룹이 디렉터리 그룹과 동일한 방식으로 사용된다는 것입니다.

관련 정보