![루트가 아닌 사용자가 Linux 버퍼 캐시를 지우도록 하는 방법](https://linux55.com/image/59756/%EB%A3%A8%ED%8A%B8%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20Linux%20%EB%B2%84%ED%8D%BC%20%EC%BA%90%EC%8B%9C%EB%A5%BC%20%EC%A7%80%EC%9A%B0%EB%8F%84%EB%A1%9D%20%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
Debian wheezy VM에서 실행되는 Python 스크립트에서 Linux 버퍼 캐시를 지워야 합니다.
저는 root 로 실행 중이지만 sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
루트 권한이 없는 사용자가 스크립트를 실행하고 있습니다.
나는 다음과 같은 가능성을 생각해 보았습니다.
- 사용자에게 파일에 대한 쓰기 권한을 부여합니다.
/proc/sys/vm/drop_caches
(제가 할 때 허용되지 않기 때문에 작동하지 않는 것 같습니다chmod 646 /proc/sys/vm/drop_caches
.) - setuid를 on으로 설정하면
tee
작동하지만 사용자는 계속할 수 있습니다.아페쉬*t그리고tee
- 스크립트에서 setuid를 설정하고 스크립트에 대한 사용자의 쓰기 권한을 제거하여 사용자가 변경할 수 없도록 할 수 있습니다(그러나 다시 말하지만 사용자가 코드와 상호 작용할 수 있으므로 이는 좋지 않습니다).
- 아니면 다음 내용을 포함하는 작은 bash 스크립트를 작성할 수도 있습니다.Linux 버퍼 캐시 지우기그런 다음 사용자에 대한 쓰기/읽기 권한, setuid를 제거하고 실행 권한을 추가합니다.
이 문제를 해결하는 가장 현명한 방법은 무엇입니까?
답변1
목록에서 네 번째 가능성(보안 디렉토리에 작은 setuid 스크립트 작성, 예를 들어 /usr/local/bin
사용자가 변경할 수 없음)만 작동하고 안전할 수 있지만 요즘에는 자주 사용됩니다.배포판에 의해 비활성화되었습니다.
더 간단하고 더 나은 옵션은 /etc/sudoers에 다음 줄을 추가하는 것입니다( visudo
예를 들어 이를 위해 사용).
YOURUSERNAME ALL = NOPASSWD: /sbin/sysctl vm.drop_caches=3
그런 다음 다음 줄을 포함하십시오.
sudo /sbin/sysctl vm.drop_caches=3
귀하의 스크립트에서.