chown이 SUID 비트를 재설정/제거하고 기능을 재설정하는 이유는 무엇입니까?

chown이 SUID 비트를 재설정/제거하고 기능을 재설정하는 이유는 무엇입니까?

이 명령은 다음과 같습니다.

sudo chown -R root:root directory

SUID 비트를 제거하고 모든 기능을 재설정합니다.문서. 왜 자동으로 수행되고 매뉴얼 페이지에 언급되지 않았는지 궁금합니다. 이상한 점은 GUID 비트가 제거되지 않는다는 것입니다. 이 명령을 실행하기 전에는 파일이나 디렉터리가 누구에게 속해 있는지는 중요하지 않습니다.

SUID/GUID 비트도아니요삭제됨목차(이 경우에는 쓸모가 없다고 생각하십시오).

아마도 이는 안전이라는 이름으로 행해진 일이지만, 나에게는 조용히 행해져서는 안 되는 일이다.

상황은 더욱 악화됩니다.

$ setcap cap_sys_rawio,cap_sys_nice=+ep test
$ getcap -v test 
test cap_sys_rawio,cap_sys_nice=ep

$ chown -c -v -R 0:0 .
ownership of './test' retained as root:root
ownership of '.' retained as root:root

$  getcap -v test 
test

파일의 SUID 비트가 test완전히 자동으로 제거됩니다. 명령이 요청한 것보다 훨씬 더 많은 작업을 수행하는 것과 같습니다.

답변1

chown권한 및 기능 세트는 유틸리티에 의해 지워지지 않습니다 .시스템 chown호출(리눅스에서):

권한이 없는 사용자가 실행 파일의 소유자나 그룹을 변경하면 S_ISUIDS_ISGID모드 비트가 지워집니다. POSIX chown()는 루트가 실행될 때도 이런 일이 발생해야 하는지 지정하지 않습니다 . Linux의 동작은 커널 버전에 따라 다르며 Linux 2.2.13부터 루트는 다른 사용자처럼 취급됩니다. 그룹이 아닌 실행 파일(즉, S_IXGRP이 비트가 설정되지 않은 파일)인 경우 이 S_ISGID비트는 강제 잠금을 나타내며 chown().

실행 파일의 소유자 또는 그룹이 사용자에 의해 변경되면 해당 파일의 모든 기능 세트가 지워집니다.

이 부분은 위에서도 말씀드렸듯이POSIX에 의해 지정됨:

~하지 않는 한적절한 권한이 있는 프로세스에 의해 호출되면 일반 파일의 set-user-ID 및 set-group-ID 비트는 성공적으로 완료되면 지워져야 합니다. 다른 파일 유형의 set-user-ID 및 set-group-ID 비트는 지워질 수 있습니다. 삭제되었습니다.

사용자에게 이를 알리려면 chown유틸리티는 이 함수를 호출할 때 파일 메타데이터에 대한 추가 변경 사항을 명시적으로 확인해야 합니다 chown.

이론적 근거에 따르면, 나는 이것이 시스템 관리자가 문제에 빠질 가능성을 줄이기 위한 것이라고 생각합니다. 이는 chown root:root사용자가 setuid 바이너리를 미리 준비하더라도 Linux에서는 안전하다고 간주될 수 있습니다.

GNU chown매뉴얼 페이지이 동작에 대한 언급은 없지만 GNU 소프트웨어의 경우와 마찬가지로 매뉴얼 페이지에는 이 유틸리티에 대한 부분적인 내용만 설명되어 있습니다.“당신도 구경할 수 있어요”노드는 다음을 가리킨다.시스템 호출 문서(이것은 의심할 여지없이 대부분의 사용자에게 과잉입니다.)정보 페이지, 이는 실제로 이 동작을 설명합니다.

chown명령은 때때로 set-user-ID 또는 set-group-ID 권한 비트를 지웁니다. 이 동작은 chown기본 시스템 호출의 정책 및 기능 에 따라 달라지며 , 이로 인해 시스템 관련 파일 모드 수정이 명령의 제어 범위를 벗어나게 될 수 있습니다 chown. 예를 들어, chown적절한 권한이 있는 사용자가 호출하거나 이러한 비트가 실행 권한 이외의 일부 기능(예: 강제 잠금)을 나타내는 경우 명령은 이러한 비트에 영향을 미치지 않을 수 있습니다. 의심스러운 경우 기본 시스템 동작을 확인하세요.

(질문에 대한 귀하의 레이블을 기반으로 이것을 Linux로 제한하고 있습니다. Linux는 소유자 변경을 권한 있는 프로세스로 제한하기 때문에 다른 Unix 스타일 시스템보다 보안에 미치는 영향이 적습니다.chown(1) POSIX 사양 설명더 알아보기. )

관련 정보