폴더 집합이 특정 프로세스에 대한 쓰기 액세스를 허용하지 않는 방법을 원합니다. 예를 들어, YUM/RPM이 /usr/bin에 쓰는 것을 허용하지 않는 방법이 있었으면 좋겠습니다.
답변1
당신은 할 수chroot소프트웨어를 다음으로 변환바인드 마운트이러한 디렉터리를 읽기 전용으로 마운트하도록 설정하십시오.
mkdir /foo
mount --bind / /foo
mount --rbind /dev /foo/dev
mount --bind /proc /foo/proc
mount --bind /run /foo/run
mount -t tmpfs tmpfs /foo/tmp
mount --bind /sys /foo/sys
mount --bind /usr/bin /foo/usr/bin
mount -o remount,ro /foo/usr/bin
chroot /foo rpm …
루트로 실행되는 악의적인 프로세스는 chroot를 벗어날 수 있으므로 이는 보안 제한이 아니라 악의적이지 않은 프로세스가 쓰지 말아야 할 곳에 쓰지 않도록 하는 방법일 뿐입니다.
또 다른 방법은 설정하는 것입니다.SELinux규칙. 이는 루트로 실행되는 프로세스도 제한하므로 올바르게 설정하면(중요하며 파일 액세스 차단 이상의 기능이 필요함) 안전한 제한이 될 수 있습니다.
프로세스가 루트로 실행되고 있지 않은 경우 디렉터리에 대한 권한으로 사용자가 거기에 쓸 수 없도록 허용하는지 확인하세요. 당신은 그것을 사용할 수 있습니다전방십자인대특정 사용자를 제외합니다.
setfacl -m user:alice:0 /some/dir
/some/dir
사용자가 접근할 수 없게 렌더링 alice
하거나
setfacl -R -m user:alice:rX /some/dir
해당 파일과 그 아래의 파일을 읽을 수는 있지만 쓸 수는 없도록 만듭니다.