chgrp 또는 chown 명령으로 인해 파일 손실이 발생하는 이유 xattr

chgrp 또는 chown 명령으로 인해 파일 손실이 발생하는 이유 xattr
[root@localhost ~]# getfattr -m - -d /bin/tcpm
getfattr: Removing leading '/' from absolute path names
# file: bin/tcpm
security.capability=0sAQAAAgAUAAAAAAAAAAAAAAAAAAA=
security.selinux="system_u:object_r:bin_t:s0"

[root@localhost ~]# chgrp 951 /bin/tcpm
[root@localhost ~]# getfattr -m - -d /bin/tcpm
getfattr: Removing leading '/' from absolute path names
# file: bin/tcpm
security.selinux="system_u:object_r:bin_t:s0"

chown uid /bin/tcpm이상 chgrp gid /bin/tcpm, /bin/tcpm손실 xattr(security.capability)

/bin/tcpm#공급자tcpm-kmod

답변1

coreutils.info관련된 문서chown설명하다:

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

이제 chown()시스템 호출(예:man 2 chown):

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

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

즉, 실행 파일의 소유자나 그룹이 변경될 때마다 시스템은 해당 파일에 대한 특수 권한을 자동으로 제거합니다. 여기에는 SUID/SGID 비트뿐만 아니라 기능도 포함됩니다.

특수 권한 제거는 chown또는 chgrp명령에 의해 수행되지 않지만 이러한 명령이 작업을 수행하는 데 사용하는 시스템 호출에 의해 수행되므로 파일 그룹 또는 소유자를 변경하는 다른 방법을 사용하면 특수 권한도 제거되어야 합니다.

특수 권한을 제거해야 하는 이유가 명시되어 있지는 않지만, 제 생각에는 다른 사용자 및/또는 루트 소유 프로세스를 조작하여 그룹이나 소유자를 변경함으로써 사용자가 추가 권한을 얻을 수 있도록 허용하는 일련의 공격을 방지할 수 있을 것입니다. 특권 프로그램.

관련 정보