"ls -ld / tmp"의 출력에서 ​​"t"문자는 무엇입니까?


94

명령을 실행할 때  ls -ld /tmp출력은 다음과 같습니다.

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

그래서 두 가지 주요 질문이 있습니다.

  • t허가 후의 편지는 무엇입니까 ?
  • 내가 아는 /tmp한 시스템에서 다른 사용자와 관련된 임시 파일을 만드는 데 사용되므로 어떻게 권한이 rwxrwxrwx있습니까 (777)?

이것은 나에게 잘못된 것 같습니다. 여기서 무슨 일이 일어나고 있는지 이해하려면 도움이 필요합니다.


8
Wikipedia article을 읽으 십시오. 여기서 답변보다 낫습니다.
Gilles


그렇다면 왜 / tmp에서 업데이트 또는 새 rpm 패키지를 설치할 때 고정 비트가 제거됩니까?

답변:


112

끈적 끈적한 것은 무엇입니까?

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

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

이유는 무엇입니까 /tmpt스티키 비트를?

/tmp디렉토리는 임시 파일을 생성하는 다른 리눅스 사용자가 사용할 수 있습니다. 이제 사용자가이 디렉토리의 다른 사용자가 만든 파일을 삭제 / 이름 변경하면 어떻게됩니까?

이런 종류의 문제를 피하기 위해 끈적 끈적한 개념이 사용됩니다. 따라서 a 777가 주어 지지만 끈적 끈적한 부분을 보존하는 것은 나쁜 생각이 아닙니다.

디렉토리에 고정 비트를 설정하려면 어떻게해야합니까?

test데스크탑 에있는 디렉토리에 고정 비트를 설정합니다 .

상징적 인 방법 ( t스티커 비트를 나타냄) :

chmod o+t ~/Desktop/test

또는

chmod +t ~/Desktop/test

숫자 / 8 진수 방식 (1, 첫 번째 위치의 값 1 인 고정 비트 비트)

chmod 1757 ~/Desktop/test

이제 결과를 테스트 해 보자.

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

스티커 비트를 삭제 / 제거하려면

chmod o-t ~/Desktop/test

이제 결과를 테스트 해 보자.

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

출처 : Linux Juggernaut의“스티키 비트 란 무엇이며 Linux에서 설정하는 방법은 무엇입니까?”


13
이 고정 비트 사용은 파일이 아닌 디렉토리에만 적용됩니다. 먼 옛날 실행 파일의 의미는 프로그램의 텍스트 세그먼트를 삭제하지 않고 스왑하도록 저장하여 다시 실행하는 것이 더 빠르지 만 요즘에는 일반 파일에는 의미가 없습니다.
psusi

프로그램의 텍스트 세그먼트는 무엇이며 어떻게 유지하면 더 빨라 집니까?
BluePython

@BluePython 실행 파일의 '텍스트'세그먼트는 모든 머신 코드 (실제 실행 가능 비트)를 포함하는 부분입니다. 일반적인 다른 세그먼트는 정적 데이터의 경우 'data'이고 모두 0 인 데이터의 경우 'bss'입니다 (따라서 실행 파일에 저장할 필요가 없습니다).
Miles Rout

1
디렉토리 권한에 대해 't'와 'T'의 차이점이 있습니까 ?? @ psusi
Afshin

1
@Afshin : 모든 사용자가 파일 / 디렉토리를 실행할 수 있는지 여부를 나타내는 표시 가 t숨겨 지므로이를 x나타내는 다른 방법이 필요합니다. 일반적인 것은 모든 사람이 실행할 수 있다는 것입니다.이 경우 일반 t대신 () 대신에 얻을 수 x있습니다. 그러나 그렇지 않은 경우 대문자 T대신 대문자를 얻습니다 -. 출처 : Wikipedia.
Toby Bartels

25

고정 비트는 파일 / 디렉토리 소유자 또는 루트 사용자 만 파일을 삭제하거나 이름을 바꿀 수있는 파일 또는 디렉토리에 설정된 권한 비트입니다. 다른 사용자에게는 다른 사용자가 만든 파일을 삭제할 수있는 권한이 없습니다.

때때로 파일을 작성하기 위해 Linux 시스템의 모든 사용자가 사용할 수있는 Linux 디렉토리가 필요합니다. 사용자는이 디렉토리의 편의에 따라 파일을 작성, 삭제 또는 이름을 바꿀 수 있습니다.

이제 사용자가이 디렉토리의 다른 사용자가 만든 파일을 실수로 또는 고의로 삭제 (또는 이름 바꾸기)하면 어떻게됩니까?

이런 종류의 문제를 피하기 위해 끈적 끈적한 개념이 사용됩니다. / tmp 가이 목적으로 사용 되기 때문 입니다. 위의 시나리오를 피하기 위해 / tmp 는 고정 비트를 사용합니다.

예를 들면 다음과 같습니다.

mkdir demo
chmod 777 demo

또한이 폴더에 권한 777을 가진 다른 사용자로 두 개의 파일을 만들었습니다.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

이제 끈적 끈적한 부분을 켜십시오.

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

이제 한 명의 사용자 (abhi)가 두 번째 사용자 (anshu)의 이름을 바꾸려면 어떻게됩니까?

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

끈적 끈적한 기원

Linux에서 고정 비트는 디렉토리에서 위에서 설명한 용도 만 사용합니다. 지금까지는 일반 파일에서 완전히 다른 것으로 사용되었으며 이름이 유래했습니다.

프로그램이 실행될 때 사용자가 실제로 사용하기 전에 프로그램을 메모리에로드하는 데 시간이 걸립니다. 프로그램이 편집기와 같은 프로그램을 사용자가 자주 사용하는 경우 시작 시간 지연이 오버 헤드였습니다.

이 시간 지연을 개선하기 위해, 끈적 끈적한 비트가 도입되었습니다. OS는 실행 파일의 고정 비트가 ON 인 경우 실행 파일의 텍스트 세그먼트가 스왑 공간에 유지되는지 확인했습니다. 따라서 프로그램을 다시 실행할 때 실행 파일을 RAM으로 쉽게 다시로드 할 수있어 시간 지연이 최소화됩니다.

Linux와 같은 최신 시스템은 실행 파일 및 기타 파일의 캐시를 자동으로 관리하므로 고정 비트가 필요하지 않습니다.

출처 : Geek Stuff의“예제와 함께 설명 된 Linux Sticky Bit Concept”


2

stickybit는 실수로 공유 디렉토리를 삭제하지 않는 해결 방법입니다. 디렉토리에 고정 비트가있는 경우 모든 사용자가 다른 모든 권한을 가질 수있는 경우에도 소유자 또는 루트 만 디렉토리를 삭제할 수 있습니다.

/tmp프로세스와 사용자간에 가장 공유 된 디렉토리이며, 사용자가 디렉토리를 삭제할 수 없도록하는 stickybit을 포함하고 있으며, 권한이있는 경우에도 디렉토리를 사용할 수있는 권한 777을 사용자와 프로세스에 부여 할 수 있어야합니다. 권한 충돌이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.