특정 디렉터리에 대해 특정 권한으로 명령을 실행할 수 있나요?

특정 디렉터리에 대해 특정 권한으로 명령을 실행할 수 있나요?

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.

프로그램이 원하는 것을 달성하기 위한 다른 방법이 없도록 다른 시스템 호출을 재정의해야 할 수도 있습니다.

관련 정보