스티키 비트는 어떻게 작동합니까?

SUID

프로그램 이미지를 유지하기 위해 시스템에 플래그를 지정하는 실행 프로그램에 적용된 고정 비트 프로그램 실행이 완료된 후 메모리에 저장됩니다.

하지만 메모리에 무엇이 저장되었는지는 모르겠습니다. 이 경우 어떻게 볼 수 있습니까?

댓글

답변

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

man chmod를 수행하면 SUID 및 고정 비트에 대해 읽을 수 있습니다. 맨 페이지 도 여기에서 볼 수 있습니다.

배경

발췌

문자 rwxXst 영향을받는 사용자 : 읽기 (r), 쓰기 (w), 실행 (또는 디렉터리 검색) (x), 파일이 디렉터리이거나 이미 일부 사용자에 대한 실행 권한이있는 경우에만 실행 / 검색 (X), 실행시 사용자 또는 그룹 ID 설정 , 제한된 삭제 플래그 또는 고정 비트 ( t) .

SUID / GUID

위 맨 페이지의 내용 사용자 8 진수 (rwx의 첫 번째 그룹)와 그룹 8 진수 (rwx의 두 번째 그룹)에 대한 rwxrwxrwx에서 x 비트가 취하는 위치는 x가 s가되는 추가 상태를 취할 수 있다는 것입니다. 이런 일이 발생하면이 파일이 실행될 때 (단지 쉘 스크립트가 아닌 프로그램 인 경우) 소유자 또는 파일 그룹의 권한으로 실행됩니다.

따라서 파일이 루트 소유인 경우 SUID 비트가 켜져 있으면 프로그램은 루트로 실행됩니다. 일반 사용자로 실행하더라도 GUID 비트에도 동일하게 적용됩니다.

발췌

SETUID 및 SETGID 비트

chmod는 파일의 그룹 ID가 다음과 같은 경우 일반 파일의 set-group-ID 비트를 지 웁니다. 사용자에게 적절한 권한이없는 경우 사용자의 유효 그룹 ID 또는 사용자의 보조 그룹 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 & 사용자의 실행 가능 비트 enabled (소문자 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 & 그룹의 실행 가능 비트 enabled (소문자) -비트 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와 같은 세계 쓰기 가능한 디렉토리에서 발견됩니다.일부 오래된 시스템의 일반 파일의 경우 비트는 프로그램의 텍스트 이미지를 스왑 장치에 저장하므로 실행시 더 빨리로드됩니다.이를 고정 비트라고합니다.

주석

  • 사실 이전에는 고정 비트를 실행 파일에 적용 할 수 있었으며, 이로 인해 처음로드 된 후에도 스왑 상태로 유지되었습니다. 많이 사용 된 프로그램에 대한 불필요한 디스크 / 네트워크 (NFS) 및 CPU 사용량이 많습니다. 그러나 Linux 나 대부분의 Unix 시스템 모두 더 이상 지원하지 않습니다 (커널에서 제거됨). It ' s " 고정 ", 실행 파일이 스왑에 멈 췄기 때문입니다. 또한 다음과 같은 디렉토리에 사용되었습니다.
  • 사실 " 많이 사용되거나 매우 큰 "가 더 나은 설명이 될 것입니다. Netscape 웹 브라우저를 " 고정 "는 1995 년 HP-UX 컴퓨터에서 사용되었습니다. 매우 자주 사용되는 작은 프로그램 (예 : cron에 의해 자주 실행되는 시스템 명령) 및 대규모 프로그램 (예 : Netscape)은 " 고정 "이 될 수있는 주요 후보였습니다. 두 경우 모두 디스크 / NFS에서 지속적으로 다시로드하는 것은 낭비입니다.
  • 고정 비트 프로그램은 스왑이 아닌 RAM에 상주하기위한 것입니다 (스왑 파일에서 이미지를로드하는 것은 ' 파일 시스템 디스크에서로드하는 것보다 훨씬 빠릅니다). ls와 같은 필수 OS 수준 명령을위한 것입니다. 분명히 수퍼 유저 만이 파일에 고정 비트를 설정할 수 있습니다. 가상 메모리와 공유 라이브러리가 도입 된 후, 특히 페이저가 더 똑똑해지고 상주 할 페이지를 동적으로 결정할 수있게되면서 덜 중요해졌습니다.
  • 또한 sticky 속성이 디렉토리에 대해 의미가 없었기 때문에 동일합니다. 권한 마스크의 비트는 나중에 디렉토리에 대한 전통적인 파일 생성 의미를 수정하도록 해석되었습니다.
  • @alexis : 원래 고정 비트 프로그램은 스왑 공간에 보관되었습니다. 스왑 파일 이미지를 읽는 것은 연속 된 섹터이므로 대부분 비동기 적으로 읽을 수 있기 때문에 이것은 파일 시스템에서 읽는 것보다 훨씬 빠릅니다. 초기 파일 시스템에서는 섹터 " 실행 길이 "가 없었으며 대부분의 초기 파일 시스템 드라이버는 섹터가 있더라도 한 번에 한 섹터를 읽습니다. 연속적이었습니다. PDP-40의 결과는 고정 프로그램이 즉시로드되는 것처럼 보였지만 고정되지 않은 프로그램은 보통 1 ~ 2 초가 걸렸습니다. ed 고정 만있는 것 같습니다.

답변

“프로그램 실행이 완료된 후 프로그램 이미지를 메모리에 유지하도록 시스템에 플래그를 지정하는 실행 프로그램에 적용된 고정 비트입니다.”

이것이 매우 쓸모없는 정보라고 생각합니다. 오늘날 대부분의 최신 Unix는이를 무시합니다. Linux에서 고정 비트는 디렉토리에만 관련이 있습니다. 여기를 참조하십시오. 및 매우 유익한 Wikipedia 기사 .

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

답변

고정 비트 란 무엇입니까?

고정 비트는 설정된 권한 비트입니다. t 내의 파일 소유자 만 허용하는 디렉토리 hat 디렉토리 또는 루트 사용자가 파일을 삭제하거나 이름을 바꿉니다. 다른 사용자는 다른 사용자가 만든 파일을 삭제하는 데 필요한 권한이 없습니다.

이것은 중요한 폴더 및 해당 콘텐츠 (하위 디렉터리 및 파일)의 삭제를 방지하기위한 보안 조치입니다. 전체 권한입니다.

댓글

  • '가 올바르지 않습니다. en.wikipedia.org/wiki/Sticky_bit
  • @AB 당신이 인용하는 Wikpedia 기사의 시작 부분을 거의 바꿔 표현할 정도로 꽤 정확 해 보입니다. ' 무엇이 문제입니까?
  • 답이 불완전하다고 말하고 싶습니다. " 고정 "는 실행 파일을 더 빨리 실행하기 위해 스왑 공간에 보관함을 나타냅니다. 이제 이것은 고대 역사이지만 섹터가 연속적으로 발생하더라도 한 번에 하나의 섹터를 읽는 데 사용되는 오래된 파일 시스템 드라이버에서. 이로 인해 고정되지 않은 실행 파일이 느려졌 고, 그 당시에는 끈적이지 않았습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다