프로그램(Linux용 Viber)의 액세스를 특정 디렉토리에만 제한

프로그램(Linux용 Viber)의 액세스를 특정 디렉토리에만 제한

예를 들어, 특정 디렉토리에만 프로그램의 액세스를 제한하는 것이 가능합니까?바이버Fedora에서 다른 디렉토리는 읽을 수 없고 아래 디렉토리만 읽을 수 있도록 강제하시겠습니까 /home/username/.local/share/viber/exchange?

만들고 실행해봤습니다바이버또 다른 user:group( viber:viber). 나 또는 다른 사용자에게 속한 Viber 파일 내부에서 열려고 하면 해당 파일을 읽을 수 없습니다. 목표는 달성되었지만 부분적으로. 이제 나는 또 다른 문제에 부딪혔습니다.바이버메시지로만 작동하고 전화를 걸려고 하면 마이크도 스피커도 찾을 수 없다고 뜹니다. 왜인지 알 것 같은 느낌이 듭니다(저는 X 서버(GNOME)를 직접 실행하고바이버viber:viber( ) ) 로 user:group하지만 어떻게 해야 할지 모르겠습니다.바이버내 이름으로 X 서버를 운영하면서 사용자가 마이크와 스피커를 사용할 수 있나요?

viber어쩌면 특정 그룹에 사용자를 추가해야 합니까 ? 아마도 SELinux에 몇 가지 해결 방법이 있을까요? 그렇다면 적절한 정책 사례를 제공해 주실 수 있나요? :디

바이버훌륭해 보이지만 오픈 소스가 아니며 사전 컴파일된 소프트웨어의 소스 코드에 무엇이 있는지 오직 신만이 아십니다!

답변1

사용chroot

작은 만들기루트 디렉토리/bin, /usr, 등을 포함하고 (필요에 따라) 모든 내용을 여기에 복사합니다 /lib./tmp새로운 루트, chroot이 디렉토리로 실행하는 것보다.

chroot명령은 정확히 이 의미로 만들어진 매우 오래된 Un*x 도구입니다.

당신은 할 수묶다디렉토리컨테이너사용하여 mount --bind.

man chroot과 을 살펴보세요 man mount!

작은 시도:

ldd /bin/bash 
    linux-vdso.so.1 =>  (0x00007fff3e4b5000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f06290a1000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0628e9d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0628b12000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f06292e8000)


sudo -s

경고, 거기에서!

mkdir /tmp/test/chrooted/lib64
cp -t /tmp/test/chrooted/lib/x86_64-linux-gnu/ \
    /lib/x86_64-linux-gnu/{libc.so.6,libdl.so.2,libtinfo.so.5}
cp -t /tmp/test/chrooted/lib64 /lib64/ld-linux-x86-64.so.2 
chroot /tmp/test/chrooted

나는 투옥되었습니다!

ls
bash: ls: command not found

ls에는 명령이 없습니다 /bin!

또는openvzlxc

다음 단계가벼운 가상화openvz또는 중 하나 lxc(또는 다른 것)를 실행하는 것입니다.

이 도구는 대략적으로 수행됩니다. 와 동일 chroot하지만 사용격리된 커널 네임스페이스. 이를 통해 네트워크 인터페이스 또는 기타 장치와 메모리, CPU 및 기타 리소스에 대한 일부 제한 사항을 시뮬레이션할 수 있습니다.

이런 종류의가벼운 가상화chroot, 을 사용 하는 것과 동일한 방식으로 디렉토리를 공유할 수 있습니다 mount --bind(또는 openvz사용이 mount -t simfs유용할 수도 있음).

강력한 가상화

kvm다음으로 또는 xen기타 독점 가상화 소프트웨어를 사용할 수 있습니다 ...

하지만 거기서부터 디렉토리 공유는 일종의 의미를 내포합니다.(의사) 네트워크 서비스...

관련 정보