"chmod 1777"과 "chmod 3777"이 모두 고정 비트를 설정하는 이유는 무엇입니까?


15

디렉토리에 고정 비트를 설정하려면 명령 chmod 1777chmod 3777둘 다 작동 하는 이유는 무엇입니까?


2
잠재적으로 위험한 작업을 제안하고 있습니다. 모두에 대한 고정 비트 및 rwx 퍼미션 조합은 나쁜 습관입니다. 누구나 파일을 변경하고 실행할 수 있으며 s- 비트는 암호없이 루트 사용자로 전환 할 수 있습니다.
jippie

1
파일이 수정되면 @jippie setuid 및 setgid 비트가 사라 지므로 루트 액세스 권한을 얻을 수 없습니다.
Kyle Jones

@KyleJones, 여전히 위험합니다. passwd바이너리가 세계 쓰기 가능 하다면 , 당신이 말한 것처럼 그것을 수정하여 루트 액세스를 얻을 수는 없지만 나중에 그것을 실행할 있는 다른 바이너리로 대체 할 passwd 있습니다.
와일드 카드

@Wildcard 합의.
Kyle Jones

답변:


29

해당 그룹의 각 숫자 (base8이므로 8 진수라고도 함)는 3 비트를 나타냅니다. 바이너리로 바꾸면 훨씬 쉬워집니다.

1 = 00 1
3 = 0 1
5 =
1,017 = 1 1 1

따라서 1777, 3777, 5777 또는 7777을 수행 한 경우 세 번째 열이 1이므로 고정 비트를 설정합니다. 그러나 3777, 5777 및 7777을 사용하면 다른 비트 (첫 번째 열의 SUID, 두 번째 열의 SGID).

반대로, 그 자리에있는 다른 숫자 (최대 7까지)는 마지막 열이 1 또는 "on"이 아니기 때문에 고정 비트를 설정하지 않습니다.

2 = 10010
= 1 0
6 = 10


3
8 진수가 작동하는 방법과 파일 권한 비트에 적용되는 방법에 대한 설명은 +1입니다.
CVn

1
"비트 마스크"라고하며 +1 및 clear소유자 그룹 및 기타 열을 설정하는 방법을 설명 / 표시하기도합니다 .
Chris K

16

chmod에 인수로 전달 된 권한은 8 진 값으로 지정됩니다 . 값의 각 숫자는 3 비트를 나타냅니다. 세 개의 숫자가 제공되면 파일 소유자, 그룹 및 기타 (다른 모든 사용자)의 읽기, 쓰기 및 실행 비트를 설정하는 것입니다. 네 개의 숫자가 주어지면 가장 왼쪽의 숫자가 setuid, setgid 및 sticky 비트를 설정합니다. 8 진수 1은 고정 비트를 설정합니다. 8 진수 2는 setgid 비트를 설정합니다. 8 진수 2 + 8 진수 1은 8 진수 3이며 setgid 비트와 스티커 비트를 모두 설정합니다.


1
8 진수 아닌가요? 2 | 8 진수가 아닌 8 진수 1 + 8 진수 1? 이 경우 작업의 결과는 동일하지만 일반적으로 비트 단위입니까, 그렇지 않습니까?
gerrit

1
@gerrit 예, 일반적인 경우 binary or운영자를 살펴 봐야합니다 . 그러나 지적 했듯이이 경우 동일한 결과로 작동하며 더 많은 사람들이 추가에 익숙합니다.
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.