마운트된 파일 시스템에서 chmod 4750에 chroot를 사용하십시오(그러나 chmod 750은 작동함).

마운트된 파일 시스템에서 chmod 4750에 chroot를 사용하십시오(그러나 chmod 750은 작동함).

나는 팔로우하고 있다젠투 설치 가이드. 하지만 나는 고집한다.월드 세트 업데이트문제의 일부는 이머지를 사용하여 dbus를 설치할 수 없다는 것입니다. 바이너리의 SUID 권한을 변경할 수 없으며 로그 출력은 다음과 같습니다.

chmod 4750 /var/tmp/portage/sys-apps/dbus-1.10.18/image//usr/libexec/dbus-daemon-launch-helper;
...
chmod: changing permissions of '/var/tmp/portage/sys-apps/dbus-1.10.18/image//usr/libexec/dbus-daemon-launch-helper': Permission denied

예를 들어:

파일 시스템을 루트로 마운트했습니다.

mount /dev/sdb3 /mnt/gentoo

그런 다음 루트 사용자로 루트를 지정했습니다.

chroot /mnt/gentoo /bin/bash
source /etc/profile

파일을 만들고 권한을 변경해 보세요.

touch /hello
chmood 4750 /hello

"권한이 거부되었습니다"라고 표시되지 않습니다.

그러나 chmod 4750 /mnt/gentoo/hello외부에서는 파일 시스템이 제대로 작동합니다.

허가가 거부된 이유는 무엇입니까? 저도 설치해봤는데 -o suid역시 안되는 것 같더군요.

그렇다면 chmod 4750다양한 파일 시스템에서 작업하는 방법은 무엇입니까?

고쳐 쓰다: 내 Linux Mint에서 동일한 작업을 수행하면 작동합니다. 젠투 livecd에서 실패했습니다.

답변1

당신이 사용하고 있는 젠투 livecd가 강화된 커널을 부팅하고 있을 수 있습니다. 그렇다면 chroot환경 내에서 콘텐츠에 액세스하고 수정하는 데 걸리는 시간을 줄이는 강화된 커널에 의해 부과된 제한 사항에 직면하게 됩니다. Setuid, GRUB 및 EFI가 떠오릅니다. 4자리 표기법의 첫 번째 숫자 4는 chmod 4750setuid 비트 설정을 나타냅니다. 이 오류 메시지는 보안에 영향을 미치기 때문에 시도가 거부되었음을 보고합니다. chmod 750setuid가 포함되지 않기 때문에 이러한 권한을 세 자리 표기법으로 설정하는 것은 유효합니다.

이 답변은 밀접하게 관련된 토론에서 toralf, Hu 및 gengreen에 기인합니다.젠투 포럼에서.

그런 다음 다음 단계를 수행하는 것이 유용할 수 있습니다.

  1. 현재 실행 중인 커널이 "hardenend"인지 확인하고 일반적으로 uname -r문자열 4.8.17-hardened-r2이나 이와 유사한 것을 반환합니다.

    # uname -r
    4.8.17-hardened-r2
    
  2. 커널 구성이 sysctl 로컬 구성을 허용하는지 확인하고 실행하세요 # zgrep GRKERNSEC_SYSCTL /proc/config.gz. 결과는 괜찮습니다.

    CONFIG_GRKERNSEC_SYSCTL=y
    CONFIG_GRKERNSEC_SYSCTL_ON=y
    
  3. 실제 chroot 환경 외부에서 이 단계와 다음 단계를 수행해야 합니다. 몇 줄 추가 /etc/sysctl.conf- 아마도 임시 chroot 환경에 있다는 점을 고려하면 다음을 추가하지 않더라도 괜찮을 것 같습니다 /etc/sysctl.d/local.conf.

    kernel.grsecurity.chroot_deny_chmod = 0 
    kernel.grsecurity.chroot_caps = 0 
    kernel.grsecurity.chroot_deny_mount = 0 
    
  4. 마지막 단계로 # sysctl -p이러한 변경 사항을 실행하면 3단계의 구성에 설정된 규칙이 반복됩니다.

    # sysctl -p
    net.ipv4.ip_forward = 0
    kernel.grsecurity.chroot_deny_chmod = 0
    kernel.grsecurity.chroot_caps = 0
    kernel.grsecurity.chroot_deny_mount = 0
    

그런 다음 chroot 환경으로 다시 뛰어들어( screen -x나와 같다면 통과) emergeSUID를 사용하여 권한을 변경하는 것이 제대로 작동하는지 확인합니다.

(그런데 Gentoo는 제한된 패치 가용성으로 인해 이러한 제공을 중단했습니다.LWN.net의 기사. 따라서 GUI가 있는 라이브 환경은 주의해서 사용해야 하며 모든 경우에 한 가지 크기로 적용할 수는 없습니다. )

답변2

mount호스트 환경(livecd)에 쓸 수 없는 상태가 채택되고 있는 것 같습니다 . mount다음을 사용하여 읽기/쓰기를 명시적으로 지정합니다.

mount -o rw /dev/sdb3 /mnt/gentoo

이 작업을 먼저 수행하십시오 umount.

관련 정보