프로그램이 HOME 디렉터리에 쓰지 못하도록 하려면 SMACK을 사용하세요.

프로그램이 HOME 디렉터리에 쓰지 못하도록 하려면 SMACK을 사용하세요.

시작할 때마다 HOME 디렉터리에 빈 폴더를 만드는 바이너리 프로그램이 있습니다. 마음에 안들고 사용하고 싶어요스머커이를 방지하는 메커니즘입니다. 내 생각은 태그를 사용하여 HOME 디렉터리를 표시하고 HOME, 태그를 사용하여 프로그램 프로세스를 표시 NoWriteHome한 다음 세 가지 SMACK 규칙을 작성하는 것입니다.

$ sudo setfattr -n security.SMACK64     -v 'HOME'        "/home/${USER}"
$ sudo setfattr -n security.SMACK64EXEC -v 'NoWriteHome' "${PATH_TO_EXECUTABLE}"
$ cat <<'EOF' | sudo tee /sys/fs/smackfs/load2
> _           HOME    rwxat
> NoWriteHome _       rwxat
> NoWriteHome HOME    r-x--
> EOF

실험을 했는데 /usr/bin/bash결과는 예상했던 대로였습니다.

$ cd
$ touch a
touch: cannot touch 'a': Permission denied

그러나 동적 라이브러리를 로드할 때 프로그램이 시작되지 않았습니다.

$ (
> export QT_PLUGIN_PATH="/opt/Wolfram/WolframEngine/14.0/SystemFiles/Libraries/Linux-x86-64/Qt/plugins/"
> export LD_LIBRARY_PATH="/opt/Wolfram/WolframEngine/14.0/SystemFiles/Libraries/Linux-x86-64:/opt/Wolfram/WolframEngine/14.0/SystemFiles/Libraries/Linux-x86-64/Qt/lib"
> export PATH="/opt/Wolfram/WolframEngine/14.0/Executables:${PATH}"
> export ESPEAK_DATA="/opt/Wolfram/WolframEngine/14.0/SystemFiles/FrontEnd/SystemResources/X/espeak-data"
> /opt/Wolfram/WolframEngine/14.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/WolframPlayer -topDirectory /opt/Wolfram/WolframEngine/14.0
> )
/opt/Wolfram/WolframEngine/14.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/WolframPlayer: error while loading shared libraries: libML64i4.so: cannot open shared object file: No such file or directory

라이브러리 파일에 대한 액세스가 거부되는 이유를 아는 사람이 있습니까? 내 SMACK 규칙에 문제가 있나요?

관련 정보