bash 또는 유사한 명령에 매개 변수를 전달하여 명령을 실행하여 명령이 특정 경로에 쓸 수 없도록 하고 사용자의 다른 권한을 무시할 수 있기를 원합니다.
예를 들어:
root> /bin/bash -protect /folder/to/protect mycommand.sh
이 예에서 루트 사용자는 자신이 원하는 것을 분명히 할 수 있지만 작성 중인 새 스크립트를 테스트할 때 해당 사용자만 읽을 수 있는 것처럼 폴더를 보호하고 싶습니다.
새 사용자를 추가하고 이에 따라 해당 사용자의 권한을 조정하지 않고 이를 수행할 수 있는 방법이 있습니까? 그런데, bash에 있을 필요는 없습니다. 이 접근 방식은 마음에 들지 않습니다. 새 사용자를 추가하지 않고도 폴더를 보호할 수 있다면 괜찮습니다!
답변1
Unix 보안은 사용자 및 그룹 권한을 기반으로 합니다. 명령에 대해 디렉터리를 읽기 전용으로 만들려면 해당 디렉터리에 쓸 수 없는 사용자로 해당 명령을 실행해야 합니다. 또는 가상 머신에서 명령을 실행하는 보다 과감한 방법이 있습니다.
당신은 찾을 수 있습니다파일 시스템 바인딩효과가있다. Bindfs는 스택 파일 시스템입니다. 즉, 디렉터리 트리의 일부에 대한 대체 보기를 생성합니다. 특히 읽기 전용 보기나 다른 권한을 가진 보기를 만들 수 있습니다. Bindfs는 이를 읽기 전용으로 만들 수 없지만 /folder/to/protect
디렉토리의 읽기 전용 보기를 생성할 수 있습니다 /read/only/view
. 명령이 `/folder/to/protect에 기록되지 않도록 하려면 권한과 같은 다른 방법을 찾아야 합니다.
bindfs --perms=a-w /folder/to/protect /read/only/view
답변2
공유 라이브러리를 작성하고 그 주위에 래퍼를 구현하여 open
원하는 추가 보안 검사를 수행할 수 있습니다. 그러면 여러분이 작성한 프로그램은 LD_PRELOAD
이를 사용하여 공유 라이브러리를 로드하고 프로그램이 호출될 때 시스템을 재정의할 수 있습니다 open
.
프로그램이 원하는 것을 달성하기 위한 다른 방법이 없도록 다른 시스템 호출을 재정의해야 할 수도 있습니다.